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-22AudioConverter使用時のマジッククッキーを伴う音声ファイルの扱い方に関する新規ドキュメント
  • translation/adc/audio/technical_qa/qa1318_how_to_handle_audio_data_with_magic_cookie_information.txt
  • 最終更新: 2015-01-06 11:51
  • (外部編集)