====== QA1318: マジッククッキー情報を伴う音声データの扱い方 ======
原文 //Technical Q&A QA1318: How to handle audio data with magic cookie information ([[http://developer.apple.com/qa/qa2001/qa1318.html]])// \\
**最終更新日:2003年10月22日**
**質問: AudioConverter を使用する際、マジッククッキーを持った音声データはどのように扱えばよろしいでしょうか?**
回答:
いくつかの音声形式は、音声データを伸長するのに必要となる、その形式に関連付けられたマジッククッキーを持ちます。
マジッククッキー(時にマジックナンバーとも呼ばれます)は、データ形式を表わす為に使用されるファイルヘッダを含む情報です。
音声データを変換する際は、そのデータ形式がマジッククッキーを持っているかどうかを見て確認しなければなりません。
音声データが関連付けられたマジッククッキーを持つようであれば、AudioConverterSetProperty
と kAudioConverterDecompressionMagicCookie
を使って、その情報を Audio Converter に付け加え、適切に AudioFile を伸長しなければなりません。
**メモ:**
殆どのデータ形式はマジッククッキー情報を持ちませんが、データの変換前に確認しなければなりません。
**Listing 1.** Audio Converter でマジッククッキーを利用する
AudioConverterRef *conv;
AudioFileID *musicFileID;
UInt32 magicCookieSize = 0;
//...
// ここで新しく AudioFile を開き、かつ、新しく AudioConverter を作成します
// ...
//マジッククッキーが存在すれば、それを取得しコンバータに渡します
err = AudioFileGetPropertyInfo(*musicFileID,
kAudioFilePropertyMagicCookieData,
&magicCookieSize,
NULL);
if (err == noErr)
{
void *magicCookie = calloc (1, magicCookieSize);
if (magicCookie)
{
err = AudioFileGetProperty (*musicFileID,
kAudioFilePropertyMagicCookieData,
&magicCookieSize,
magicCookie);
// マジッククッキーの伸長パラメータが存在したら、AudioConverter に渡す
if (err == noErr)
{
err = AudioConverterSetProperty( *conv,
kAudioConverterDecompressionMagicCookie,
magicCookieSize,
magicCookie);
}
if (magicCookie) free(magicCookie);
}
}else //音声データがマジッククッキーデータを必要としない場合
err = noErr; //エラー状態をリセットする
----
**更新履歴**
^日付 ^内容|
|2003-10-22|AudioConverter使用時のマジッククッキーを伴う音声ファイルの扱い方に関する新規ドキュメント|