====== 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 を使用する際、マジッククッキーを持った音声データはどのように扱えばよろしいでしょうか?** 回答: いくつかの音声形式は、音声データを伸長するのに必要となる、その形式に関連付けられたマジッククッキーを持ちます。 マジッククッキー(時にマジックナンバーとも呼ばれます)は、データ形式を表わす為に使用されるファイルヘッダを含む情報です。 音声データを変換する際は、そのデータ形式がマジッククッキーを持っているかどうかを見て確認しなければなりません。 音声データが関連付けられたマジッククッキーを持つようであれば、AudioConverterSetPropertykAudioConverterDecompressionMagicCookie を使って、その情報を 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使用時のマジッククッキーを伴う音声ファイルの扱い方に関する新規ドキュメント|