循環バッファーを使用して、MixerHost のサンプル コードをよりメモリ効率の良いものに変更しようとしています。しかし、オーディオ ファイル全体の読み取りから 4K バイトのチャンクのみの読み取りにコードを変更すると、問題が発生するようです。オーディオ ファイルは実際に圧縮されているため、clientFormat は LPCM であり、サンプル コードと同様に暗黙的な変換が行われます。しかし、小さなチャンクを読み取ると、bufferList (AudioBufferList *) に収集されるデータが異なるようです。ExtAudioFileRead() 呼び出しの number_of_frames パラメータに依存します。
ExtAudioFileRead (
audioFileObject,
&numberOfFramesToRead, // <- this set to chunk size in bytes
bufferList // <- contains 2 buffers, 1 chan each for L, R
);
Q: 読み取るフレームの数は、OUTPUT フォーマットの数を意味するはずですか? では、1024 フレームを指定すると、1024 の L,R サンプルが単純な LPCM 形式に読み込まれますか? Q: 読み取りあたりのフレーム数が異なると、異なる結果が得られるのはなぜですか?
SDK: iOS 5.1