<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Bug Captor の 開發日記帳-Quicktime</title>
<link>http://blog.roodo.com/toki_kanno/archives/cat_43556.html</link>
<description>一些開發程式時的碎碎唸，先找個地方記起來免的忘記</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/toki_kanno/archives/cat_43556.xml" rel="self" type="application/rss+xml" />
<item>
	<title>防止QuickTime因為程式crash而沒有正確釋放資源</title>
	<description><![CDATA[
			寫QuickTime相關程式的時候，有時會因為要debug而常常不正常結束QuickTime相關的程式，但是因為沒有正確的釋放QuickTime的資源，有可能造成QuickTime再也開不起來(會卡死在InitializeQTML()裡)。預防的方法是&hellip;&hellip;先開一個什麼事都不做的QuickTime Player在旁邊放著原理不明，但猜測由於系統中還有至少一個QuickTime相關的程式開著，所以在正常或是不正常結束的時候不會真的去釋放QuickTime的resource，而不會造成一些resource被錯誤的釋放最後造成QuickTime無法開啟的情形。
		]]>
	</description>
	<content:encoded><![CDATA[
			寫QuickTime相關程式的時候，有時會因為要debug而常常不正常結束QuickTime相關的程式，但是因為沒有正確的釋放QuickTime的資源，有可能造成QuickTime再也開不起來(會卡死在InitializeQTML()裡)。<div><br /></div><div>預防的方法是&hellip;&hellip;</div><div><br /></div><div><span style="font-weight: bold" class="Apple-style-span"><span style="font-size: x-large" class="Apple-style-span">先開一個什麼事都不做的QuickTime Player在旁邊放著</span></span></div><div><br /></div><div>原理不明，但猜測由於系統中還有至少一個QuickTime相關的程式開著，所以在正常或是不正常結束的時候不會真的去釋放QuickTime的resource，而不會造成一些resource被錯誤的釋放最後造成QuickTime無法開啟的情形。</div>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/8576537.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/8576537.html</guid>
	<category>Quicktime</category>
	<pubDate>Tue, 24 Mar 2009 09:39:19 +0800</pubDate>
</item>
<item>
	<title>CFStringRef的刪除</title>
	<description><![CDATA[
			之前開檔時用到的CFStringRef一直以來都以為只是個structure而以所以一直也沒管它的release，後來才驚覺這是個 pointer，於是開始找相關的free function指令非常的簡單&nbsp;CFRelease(&lt;Any CF Object&gt;);不只 CFStringRef，其它的CF(Core Fundation)物件也通用
		]]>
	</description>
	<content:encoded><![CDATA[
			之前開檔時用到的CFStringRef一直以來都以為只是個structure而以<div>所以一直也沒管它的release，後來才驚覺這是個 pointer，於是開始找相關的free function<div><br /></div><div>指令非常的簡單&nbsp;</div><div><br /></div><div>CFRelease(&lt;Any CF Object&gt;);</div><div><br /></div><div>不只 CFStringRef，其它的CF(Core Fundation)物件也通用</div></div>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/8317211.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/8317211.html</guid>
	<category>Quicktime</category>
	<pubDate>Mon, 16 Feb 2009 17:44:58 +0800</pubDate>
</item>
<item>
	<title>Windows 上的 Quicktime Codec 開發筆記</title>
	<description><![CDATA[
			Apple不愧是Apple....果然工程師的思考邏輯都異於常人不過這應該歸功於MacOSX上面大多是使用C和Objective C的關係很多C++上靠class完成的功能，Apple的工程師都是靠structure和marcoQuicktime的codec說穿了只是一個普通到不行的 DLL 檔案但是加上了Apple專用的resource資源來描述這是個什麼樣的codec另外codec的進入點(entry point)也是要靠這個resource來描述首先用Visual Studio很簡單地產生一個標準的DLL專案生出來之後也不用動它的source code了，反正完全不會用到.....接下來必需編輯一個 .r 的檔案(r代表resource)裡面最少要有兩個resource其中一個type是 'cdci'，用來記錄codec info另一個type必需是'thng'，裡面記錄了codec對應的4cc和entry point編輯完 .r 檔後，必需使用 Rez.exe 來編譯(這程式在Quicktime SDK裡面)簡單 call 法如下Rez.exe -p -i [include dir] -o [*.qtr, as output] &lt; [*.r, as input]在沒有任何錯誤的情形下，應該會生出一個 .qtr 的檔案接下來必需使用 RezWack.exe 這隻程式來將 .qtr 檔合併至我們產生的 DLL 裡簡單 call 法如下RezWack.exe -f -d [*.dll, dll filename] -r [*.qtr, qtr filename] -o [*.qtx, qtx filename]這樣會產生最終的 qtx 檔案，把這個檔案安裝至 system32 或是 Quicktime 的 Component 目錄下面就可以開始測試了
		]]>
	</description>
	<content:encoded><![CDATA[
			Apple不愧是Apple....果然工程師的思考邏輯都異於常人<div>不過這應該歸功於MacOSX上面大多是使用C和Objective C的關係</div><div>很多C++上靠class完成的功能，Apple的工程師都是靠structure和marco</div><div><br /></div><div>Quicktime的codec說穿了只是一個普通到不行的 DLL 檔案</div><div>但是加上了Apple專用的resource資源來描述這是個什麼樣的codec<br /></div><div>另外codec的進入點(entry point)也是要靠這個resource來描述</div><div><br /></div><div>首先用Visual Studio很簡單地產生一個標準的DLL專案</div><div>生出來之後也不用動它的source code了，反正完全不會用到.....</div><div><br /></div><div>接下來必需編輯一個 .r 的檔案(r代表resource)</div><div><br /></div><div>裡面最少要有兩個resource</div><div><br /></div><div>其中一個type是 'cdci'，用來記錄codec info</div><div>另一個type必需是'thng'，裡面記錄了codec對應的4cc和entry point</div><div><br /></div><div>編輯完 .r 檔後，必需使用 Rez.exe 來編譯(這程式在Quicktime SDK裡面)</div><div><br /></div><div>簡單 call 法如下</div><div>Rez.exe -p -i [include dir] -o [*.qtr, as output] &lt; [*.r, as input]<br /></div><div><br /></div><div>在沒有任何錯誤的情形下，應該會生出一個 .qtr 的檔案</div><div>接下來必需使用 RezWack.exe 這隻程式來將 .qtr 檔合併至我們產生的 DLL 裡</div><div><br /></div><div>簡單 call 法如下</div><div>RezWack.exe -f -d [*.dll, dll filename] -r [*.qtr, qtr filename] -o [*.qtx, qtx filename]</div><div><br /></div><div><div>這樣會產生最終的 qtx 檔案，把這個檔案安裝至 system32 或是 Quicktime 的 Component 目錄下面就可以開始測試了</div></div>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/8281437.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/8281437.html</guid>
	<category>Quicktime</category>
	<pubDate>Wed, 11 Feb 2009 10:59:39 +0800</pubDate>
</item>
<item>
	<title>How to get Quicktime track media type</title>
	<description><![CDATA[
			OSType media_type;GetMediaHandlerDescription(m, &amp;media_type, NULL, NULL);returned media_type could be:&nbsp;&nbsp;VideoMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('vide'),&nbsp;&nbsp;SoundMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('soun'),&nbsp;&nbsp;TextMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('text'),&nbsp;&nbsp;BaseMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('gnrc'),&nbsp;&nbsp;MPEGMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('MPEG'),&nbsp;&nbsp;MusicMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('musi'),&nbsp;&nbsp;TimeCodeMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('tmcd'),&nbsp;&nbsp;SpriteMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('sprt'),&nbsp;&nbsp;FlashMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('flsh'),&nbsp;&nbsp;MovieMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('moov'),&nbsp;&nbsp;TweenMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('twen'),&nbsp;&nbsp;ThreeDeeMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('qd3d'),&nbsp;&nbsp;SkinMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('skin'),&nbsp;&nbsp;HandleDataHandlerSubType &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('hndl'),&nbsp;&nbsp;PointerDataHandlerSubType &nbsp; &nbsp; = FOUR_CHAR_CODE('ptr '),&nbsp;&nbsp;NullDataHandlerSubType &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('null'),&nbsp;&nbsp;ResourceDataHandlerSubType &nbsp; &nbsp;= FOUR_CHAR_CODE('rsrc'),&nbsp;&nbsp;URLDataHandlerSubType &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('url '),&nbsp;&nbsp;AliasDataHandlerSubType &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('alis'),&nbsp;&nbsp;WiredActionHandlerType &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('wire'),&nbsp;&nbsp;kQTQuartzComposerMediaType &nbsp; &nbsp;= FOUR_CHAR_CODE('qtz '),&nbsp;&nbsp;TimeCode64MediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('tc64')
		]]>
	</description>
	<content:encoded><![CDATA[
			<div>OSType media_type;<br /></div><div>GetMediaHandlerDescription(m, &amp;media_type, NULL, NULL);</div><div><br /></div><div>returned media_type could be:</div><div><br /></div><div><div>&nbsp;&nbsp;VideoMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('vide'),</div><div>&nbsp;&nbsp;SoundMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('soun'),</div><div>&nbsp;&nbsp;TextMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('text'),</div><div>&nbsp;&nbsp;BaseMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('gnrc'),</div><div>&nbsp;&nbsp;MPEGMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('MPEG'),</div><div>&nbsp;&nbsp;MusicMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('musi'),</div><div>&nbsp;&nbsp;TimeCodeMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('tmcd'),</div><div>&nbsp;&nbsp;SpriteMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('sprt'),</div><div>&nbsp;&nbsp;FlashMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('flsh'),</div><div>&nbsp;&nbsp;MovieMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('moov'),</div><div>&nbsp;&nbsp;TweenMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('twen'),</div><div>&nbsp;&nbsp;ThreeDeeMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('qd3d'),</div><div>&nbsp;&nbsp;SkinMediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('skin'),</div><div>&nbsp;&nbsp;HandleDataHandlerSubType &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('hndl'),</div><div>&nbsp;&nbsp;PointerDataHandlerSubType &nbsp; &nbsp; = FOUR_CHAR_CODE('ptr '),</div><div>&nbsp;&nbsp;NullDataHandlerSubType &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('null'),</div><div>&nbsp;&nbsp;ResourceDataHandlerSubType &nbsp; &nbsp;= FOUR_CHAR_CODE('rsrc'),</div><div>&nbsp;&nbsp;URLDataHandlerSubType &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('url '),</div><div>&nbsp;&nbsp;AliasDataHandlerSubType &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('alis'),</div><div>&nbsp;&nbsp;WiredActionHandlerType &nbsp; &nbsp; &nbsp; &nbsp;= FOUR_CHAR_CODE('wire'),</div><div>&nbsp;&nbsp;kQTQuartzComposerMediaType &nbsp; &nbsp;= FOUR_CHAR_CODE('qtz '),</div><div>&nbsp;&nbsp;TimeCode64MediaType &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = FOUR_CHAR_CODE('tc64')</div></div>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/8147401.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/8147401.html</guid>
	<category>Quicktime</category>
	<pubDate>Thu, 22 Jan 2009 16:29:33 +0800</pubDate>
</item>
<item>
	<title>Create long filename Quicktime movie file under Windows</title>
	<description><![CDATA[
			舊的(3.X)Quicktime SDK裡的CreateMovieFile受限於因為要吃 FSSpec 的關係，在 Windows 下最長的檔名只有 64 byte，在一些情形下很容易就爆檔在QT6.5以及7.0後對於這種情形增加了一些API來替換原來的檔案操作API，在這篇文章裡有詳細的對照Modernizing QuickTime Applications所以我們必需將 CreateMovieFile 換成 CreateMovieStorage 來達成這個目的，但第一個問題是原來的 FSSpec 被替換成Handle dataRefOSType dataRefType這兩個參數，但在7.0以後Apple提供了一些比較方便的function來獲得這兩個參數EX: QTNewDataReferenceFromFullPathCFString 可以由 Windows 的路徑來獲取 data reference 物件但問題又來了，裡頭的 CFStringRef 是屬於 Core Fundation 下面的基本 string 物件，我們得自己把它 new 出來ASCII版，From CStringCFStringRef file_string = CFStringCreateWithCString(NULL, filename, ::kCFStringEncodingASCII);Unicdoe string 用這個CFStringCreateWithCharacters(NULL, (UniChar*) filename, lstrlenW(filename));有這這個 file_string 就可以一路串回去了PS.1 Core Fundation 的header檔沒宣告 calling conversion，但實際上是 cdcel，link不過時可以試試改 calling conversion。PS.2 CreateMovieStorage 預設會建立一個同名的 .#ref 檔案，在呼叫時的flag上加上createMovieFileDontCreateResFile可以避免建立這個檔案
		]]>
	</description>
	<content:encoded><![CDATA[
			舊的(3.X)Quicktime SDK裡的CreateMovieFile受限於因為要吃 FSSpec 的關係，在 Windows 下最長的檔名只有 64 byte，在一些情形下很容易就爆檔<br /><br />在QT6.5以及7.0後對於這種情形增加了一些API來替換原來的檔案操作API，在這篇文章裡有詳細的對照<br /><a href="http://developer.apple.com/technotes/tn2005/tn2140.html" target="_blank">Modernizing QuickTime Applications</a><br /><br />所以我們必需將 CreateMovieFile 換成 CreateMovieStorage 來達成這個目的，但第一個問題是原來的 FSSpec 被替換成<br /><pre class="sourcecodebox">Handle dataRef<br />OSType dataRefType</pre>這兩個參數，但在7.0以後Apple提供了一些比較方便的function來獲得這兩個參數<br /><br />EX: QTNewDataReferenceFromFullPathCFString 可以由 Windows 的路徑來獲取 data reference 物件<br /><br />但問題又來了，裡頭的 CFStringRef 是屬於 Core Fundation 下面的基本 string 物件，我們得自己把它 new 出來<br /><br />ASCII版，From CString<br />CFStringRef file_string = CFStringCreateWithCString(NULL, filename, ::kCFStringEncodingASCII);<br /><br />Unicdoe string 用這個<br />CFStringCreateWithCharacters(NULL, (UniChar*) filename, lstrlenW(filename));<br /><br />有這這個 file_string 就可以一路串回去了<br /><br /><ul><li>PS.1 Core Fundation 的header檔沒宣告 calling conversion，但實際上是 cdcel，link不過時可以試試改 calling conversion。</li><li>PS.2 CreateMovieStorage 預設會建立一個同名的 .#ref 檔案，在呼叫時的flag上加上createMovieFileDontCreateResFile可以避免建立這個檔案</li></ul>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/7230259.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/7230259.html</guid>
	<category>Quicktime</category>
	<pubDate>Tue, 23 Sep 2008 10:19:06 +0800</pubDate>
</item>
<item>
	<title>Quicktime for Win SDK 7.0 will out soon?</title>
	<description><![CDATA[
			在 Quicktim-API 的 mailing list 上看到的:

官方的 developer site 上的文件已經出來了


另外: 7.0 QTMLClient dump 的結果，可以看到一堆 CF 開頭的字串
應該是 MAC 上的 CoreFundation library 的 function

不過我還是希望能出個簡便點的 Quicktim Class 會讓人高興點
		]]>
	</description>
	<content:encoded><![CDATA[
			在 Quicktim-API 的 mailing list 上看到的:<br />
<br />
官方的 developer site 上的<a href = "http://developer.apple.com/documentation/QuickTime/Conceptual/<br />
QT7Win_Update_Guide/index.html">文件</a>已經出來了<br />
</a><br />
<br />
另外: 7.0 QTMLClient dump 的結果，可以看到一堆 CF 開頭的字串<br />
應該是 MAC 上的 CoreFundation library 的 function<br />
<br />
不過我還是希望能出個簡便點的 Quicktim Class 會讓人高興點
		<a class="acontinues" href="http://blog.roodo.com/toki_kanno/archives/464325.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/464325.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/464325.html</guid>
	<category>Quicktime</category>
	<pubDate>Fri, 09 Sep 2005 10:47:52 +0800</pubDate>
</item>
<item>
	<title>DV 4CC</title>
	<description><![CDATA[
			
td.little     {color:black; border-width: 1; font-size: 8pt; text-align: center; background-color: white;}
td.blueheader {border-width: 1; color: white; background-color: blue; text-align: center;}
td.redheader  {border-width: 1; color: white; background-color: red;  text-align: center;}




 
DV
DV25
DV50



Color sub sample
4:1:1
4:1:1
4:2:2



4CC
dvsd
dv25
dv50



DirectShow media subtype
MEDIASUBTYPE_dvsd
MEDIASUBTYPE_dv25
MEDIASUBTYPE_dv50



Quicktim codec code
kDVCNTSCCodecType'dvc '

kDVCNTSCCodecType
'dvc '
'dvcp' not used!

'dv5n'



		]]>
	</description>
	<content:encoded><![CDATA[
			<style>
td.little     {color:black; border-width: 1; font-size: 8pt; text-align: center; background-color: white;}
td.blueheader {border-width: 1; color: white; background-color: blue; text-align: center;}
td.redheader  {border-width: 1; color: white; background-color: red;  text-align: center;}
</style>

<table class="noborder" frame="border" bordercolor="black" cellpadding="0" cellspacing="0" rules="all">
<tr>
<td> </td>
<td class="blueheader">DV</td>
<td class="blueheader">DV25</td>
<td class="blueheader">DV50</td>
</tr>

<tr>
<td class="redheader">Color sub sample</td>
<td class="little">4:1:1</td>
<td class="little">4:1:1</td>
<td class="little">4:2:2</td>
</tr>

<tr>
<td class="redheader">4CC</td>
<td class="little">dvsd</td>
<td class="little">dv25</td>
<td class="little">dv50</td>
</tr>

<tr>
<td class="redheader">DirectShow media subtype</td>
<td class="little">MEDIASUBTYPE_dvsd</td>
<td class="little">MEDIASUBTYPE_dv25</td>
<td class="little">MEDIASUBTYPE_dv50</td>
</tr>

<tr>
<td class="redheader">Quicktim codec code</td>
<td class="little">kDVCNTSCCodecType<br>'dvc '</td>
<td class="little">
kDVCNTSCCodecType<br>
'dvc '<br>
'dvcp' not used!
</td>
<td class="little">'dv5n'</td>
</tr>

</table>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/409436.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/409436.html</guid>
	<category>Quicktime</category>
	<pubDate>Thu, 25 Aug 2005 11:29:35 +0800</pubDate>
</item>
<item>
	<title>AAC Enocder? Pay first XD</title>
	<description><![CDATA[
			由於 Video 的部分做的差不多了，開始和 leader 討論 Audio Codec 要用啥
本來想說 Quicktime 本身就可以壓 AAC 了，應該是個不錯的選擇
不過自己寫出來的 code 居然沒有 AAC 的選項?

於是……再度拜請咕狗大神……回答如下:
http://developer.apple.com/qa/qa2001/qa1347.html

意思就是，想要 Windows下要能用在Quicktime mov 上的 AAC Encoder?
 錢交出來先 XD

這下剛好先QK一下……等看看上面要不要賞點錢買授權囉:P
		]]>
	</description>
	<content:encoded><![CDATA[
			由於 Video 的部分做的差不多了，開始和 leader 討論 Audio Codec 要用啥<br />
本來想說 Quicktime 本身就可以壓 AAC 了，應該是個不錯的選擇<br />
不過自己寫出來的 code 居然沒有 AAC 的選項?<br />
<br />
於是……再度拜請咕狗大神……回答如下:<br />
<a href="http://developer.apple.com/qa/qa2001/qa1347.html">http://developer.apple.com/qa/qa2001/qa1347.html</a><br />
<br />
意思就是，想要 Windows下要能用在Quicktime mov 上的 AAC Encoder?<br />
 錢交出來先 XD<br />
<br />
這下剛好先QK一下……等看看上面要不要賞點錢買授權囉:P
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/355978.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/355978.html</guid>
	<category>Quicktime</category>
	<pubDate>Tue, 09 Aug 2005 17:04:54 +0800</pubDate>
</item>
<item>
	<title>TimeValue 別用太大的數字</title>
	<description><![CDATA[
			會爆= =|||

DirectShow 使用的 TimeValue 精度是十億份之一秒(ns)
本來想寫Quicktime的時候也採用這個數字以便達成其間的無失真轉接
不過沒想到Quicktime的TimeValue type 位元數太少，設到這麼大會讓影片檔整個「爆檔」
只要影片長度超過三分鐘……那個檔案就準備葛屁了ORZ

目前用的精度是千分之一秒(ms) 感覺精度差好多啊 ORZ

		]]>
	</description>
	<content:encoded><![CDATA[
			會爆= =|||<br />
<br />
DirectShow 使用的 TimeValue 精度是十億份之一秒(ns)<br />
本來想寫Quicktime的時候也採用這個數字以便達成其間的無失真轉接<br />
不過沒想到Quicktime的TimeValue type 位元數太少，設到這麼大會讓影片檔整個「爆檔」<br />
只要影片長度超過三分鐘……那個檔案就準備葛屁了ORZ<br />
<br />
目前用的精度是千分之一秒(ms) 感覺精度差好多啊 ORZ<br />

		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/338091.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/338091.html</guid>
	<category>Quicktime</category>
	<pubDate>Thu, 04 Aug 2005 15:06:25 +0800</pubDate>
</item>
<item>
	<title>Prepare a handle for AddMediaSample</title>
	<description><![CDATA[
			
// prepare your handleHandle    bufHandle = NewHandleClear(0);Ptr        bufPtr = NewPtrClear(SIZE_YOU_WANT);：：do some stuff to bufPtr：：// put your ptr &amp; handle togetherPtrAndHand(bufPtr, bufHandle, outBytes);：// use your bufPtr hereAddMediaSample(.........);：// DO NOT forget to dispose your buffer ptr and handleif(bufPtr)    DisposePtr(bufPtr);if(bufHandle)    DisposeHandle((Handle)bufHandle);

		]]>
	</description>
	<content:encoded><![CDATA[
			<br />
<span style="color: rgb(0, 102, 102); font-weight: bold;">// prepare your handle</span><br />Handle    bufHandle = NewHandleClear(0);<br />Ptr        bufPtr = NewPtrClear(SIZE_YOU_WANT);<br />：<br />：<br />do some stuff to bufPtr<br />：<br />：<br /><span style="color: rgb(0, 102, 102); font-weight: bold;">// put your ptr &amp; handle together</span><br />PtrAndHand(bufPtr, bufHandle, outBytes);<br />：<br /><span style="color: rgb(0, 102, 102); font-weight: bold;">// use your bufPtr here</span><br />AddMediaSample(.........);<br />：<br /><span style="color: rgb(0, 102, 102); font-weight: bold;">// DO NOT forget to dispose your buffer ptr and handle</span><br />if(bufPtr)<br />    DisposePtr(bufPtr);<br />if(bufHandle)<br />    DisposeHandle((Handle)bufHandle);<br /><br />

		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/315989.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/315989.html</guid>
	<category>Quicktime</category>
	<pubDate>Thu, 28 Jul 2005 16:39:06 +0800</pubDate>
</item>
<item>
	<title>MeidaType 要看清楚再填 ORZ　</title>
	<description><![CDATA[
			m_pMedia = NewTrackMedia(m_pTrack,   //theTrackVideoMediaType,//      MovieMediaType,      //mediaTypeVIDEO_TIME_SCALE,    //timeScale,NULL,    //dataRef0);     //dataRefType by 一個被卡了快一星期的笨蛋 ORZ
		]]>
	</description>
	<content:encoded><![CDATA[
			<p>m_pMedia = NewTrackMedia(<br />m_pTrack,   <font color="#006666">//theTrack</font><br /><font color="#ff0000"><strong>VideoMediaType</strong></font>,<br />//      <strike><strong><font color="#0000ff">MovieMediaType</font></strong></strike>,      <font color="#006666">//mediaType</font><br />VIDEO_TIME_SCALE,    <font color="#006666">//timeScale</font>,<br />NULL,    <font color="#006666">//dataRef</font><br />0);    <font color="#006699"> //dataRefType</font> </p><p align="right">by 一個被卡了快一星期的笨蛋 ORZ</p>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/305926.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/305926.html</guid>
	<category>Quicktime</category>
	<pubDate>Mon, 25 Jul 2005 11:30:18 +0800</pubDate>
</item>
<item>
	<title>Quicktime TimeValue</title>
	<description><![CDATA[
			
Quicktime use the TimeValue to determine the baseline frame duration of a movie.For example:In a 24 fps movie. You could set the media TimeValue = 600 (means 1/600 sec)The frame duration unit will be calculated as (600/24)*(1/600) (sec)

		]]>
	</description>
	<content:encoded><![CDATA[
			<br />
Quicktime use the TimeValue to determine the baseline frame duration of a movie.<br />For example:<br /><br />In a 24 fps movie. You could set the media TimeValue = 600 (means 1/600 sec)<br />The frame duration unit will be calculated as (600/24)*(1/600) (sec)<br /><br />

		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/294848.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/294848.html</guid>
	<category>Quicktime</category>
	<pubDate>Fri, 22 Jul 2005 15:58:39 +0800</pubDate>
</item>
<item>
	<title>Tips for saving Quicktime movie file</title>
	<description><![CDATA[
			
DO NOT call any disposeXXXX function before u call funcitons like AddMovieResource or UpdateMovieResorce .... blah blah blah.Whole flow of creating and saving movie file:Create a movie fileCreate tracksCreate track mediasBegin editPrepare compressionCompress and add samples into trackEnd compressionEnd editInsert track into movieAdd movie into resource (write into file)Dispose track mediasDispose tracksDispose movieClose movie fileTo be countinued.
		]]>
	</description>
	<content:encoded><![CDATA[
			<br />
<ul><li><span style="font-weight: bold;">DO NOT</span> call any <span style="font-weight: bold;">disposeXXXX</span> function before u call funcitons like AddMovieResource or UpdateMovieResorce .... blah blah blah.</li><li>Whole flow of creating and saving movie file:<ul><li>Create a movie file</li><li>Create tracks</li><li>Create track medias</li><li>Begin edit</li><li>Prepare compression<br /></li><li>Compress and add samples into track</li><li>End compression<br /></li><li>End edit</li><li>Insert track into movie</li><li>Add movie into resource (write into file)<br /></li><li>Dispose track medias</li><li>Dispose tracks</li><li>Dispose movie</li><li>Close movie file<br /></li></ul></li><li>To be countinued.<br /></li></ul>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/293991.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/293991.html</guid>
	<category>Quicktime</category>
	<pubDate>Fri, 22 Jul 2005 10:24:55 +0800</pubDate>
</item>
<item>
	<title>嗯……Apple 果然和 Windows 不和 XD</title>
	<description><![CDATA[
			
Quicktime for Cocoa明明就可以寫成這種方便使用的物件嘛 Q_Q不過話說回來，用 Carbon 來寫的話應該也差不多就是了
		]]>
	</description>
	<content:encoded><![CDATA[
			<br />
<a href="http://developer.apple.com/documentation/QuickTime/Reference/QTCocoaObjCKit/index.html#//apple_ref/doc/uid/TP40001164">Quicktime for Cocoa</a><p>明明就可以寫成這種方便使用的物件嘛 Q_Q<br />不過話說回來，用 Carbon 來寫的話應該也差不多就是了<br /></p>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/267604.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/267604.html</guid>
	<category>Quicktime</category>
	<pubDate>Thu, 14 Jul 2005 10:05:18 +0800</pubDate>
</item>
<item>
	<title>Manual create a Quicktime movie file on Windows</title>
	<description><![CDATA[
			雖然有 StanardPutFile 可以用，不過也會有想用程式設定檔名的時候這時後……請不要被Document虎爛用 FSMakeFSSpec 之類的function XD手動把 FSSpec各參數指定好就好了FSSpec fss;fss.vRefNum = 0;fss.parID = 0;sprintf((char*)fss.name, &quot;%s&quot;, YOUR_FILE_NAME);Err = CreateMovieFile(   &amp;fss,   sigMoviePlayer,    smSystemScript,   createMovieFileDeleteCurFile | createMovieFileDontCreateResFile,   &amp;movFHandle,  // handle for movie file   &amp;movHandle);  // handle for movie
		]]>
	</description>
	<content:encoded><![CDATA[
			<p>雖然有 StanardPutFile 可以用，不過也會有想用程式設定檔名的時候</p><p>這時後……請不要被Document虎爛用 FSMakeFSSpec 之類的function XD</p><p>手動把 FSSpec各參數指定好就好了</p><p><table style="WIDTH: 100%" cellspacing="0" cellpadding="0" border="1"><tbody><tr><td><p>FSSpec fss;</p><p>fss.vRefNum = 0;<br />fss.parID = 0;<br />sprintf((char*)fss.name, &quot;%s&quot;, YOUR_FILE_NAME);</p><p>Err = CreateMovieFile(<br />   &amp;fss,<br />   sigMoviePlayer, <br />   smSystemScript,<br />   createMovieFileDeleteCurFile | createMovieFileDontCreateResFile,<br />   &amp;movFHandle,  // handle for movie file<br />   &amp;movHandle);  // handle for movie</p></td></tr></tbody></table></p><p />
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/265075.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/265075.html</guid>
	<category>Quicktime</category>
	<pubDate>Wed, 13 Jul 2005 11:29:40 +0800</pubDate>
</item>
<item>
	<title>Quicktime for windows memo</title>
	<description><![CDATA[
			Memo of Quicktime for Windows Develope:Modify &quot;QTML.h&quot;. (replace all 0xc4 -&gt; 0x20. But why there are 0xC4s in the header file? Who knows, ask Apple.)Include &quot;QTML.h&quot;, this is header file for Quicktime Media Layer.DO add qtmlClient.lib into you project.Call InitializeQTML(0L); before u do any thing about Quicktime, or it will crash.Call TerminateQTML() before your application terminate.For using Movie Tool Box, call EnterMovies(). Call ExitMovies() before application terminate.to be continue...
		]]>
	</description>
	<content:encoded><![CDATA[
			<p>Memo of Quicktime for Windows Develope:</p><ul><li>Modify &quot;<strong>QTML.h</strong>&quot;. (replace all 0xc4 -&gt; 0x20. But why there are 0xC4s in the header file? Who knows, ask Apple.)</li><li>Include &quot;QTML.h&quot;, this is header file for <strong>Quicktime Media Layer</strong>.</li><li>DO add <strong>qtmlClient.lib</strong> into you project.</li><li>Call <strong>InitializeQTML(0L);</strong> before u do any thing about Quicktime, or it will crash.Call <strong>TerminateQTML()</strong> before your application terminate.</li><li>For using Movie Tool Box, call <strong>EnterMovies()</strong>. Call <strong>ExitMovies()</strong> before application terminate.</li><li>to be continue...</li></ul>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/toki_kanno/archives/259612.html</link>
	<guid>http://blog.roodo.com/toki_kanno/archives/259612.html</guid>
	<category>Quicktime</category>
	<pubDate>Mon, 11 Jul 2005 14:06:20 +0800</pubDate>
</item>
</channel>
</rss>