オーディオグラフのリモートI/Oユニットからオーディオをキャプチャしようとしているコールバックがあります。私のコールバックの中には、私がというAudioUnitRender
の機能を持っていて、2つのチャンネルからインターリーブされていないデータを保存する必要があります。インターリーブされていないオーディオデータを格納するようにバッファリストを設定しますか?
はここコンテキストのコードスニペットです:
//audiounit render function inside of a callback
OSStatus status;
status = AudioUnitRender(THIS.ioUnit,
ioActionFlags,
inTimeStamp,
0,
inNumberFrames,
&bufferList);
//want to initialize and configure bufferList to store non-interleaved data from both channels
...
//write audio data to disk
OSStatus result;
if (*ioActionFlags == kAudioUnitRenderAction_PostRender) {
result = ExtAudioFileWriteAsync(THIS.extAudioFileRef, inNumberFrames, &bufferList);
if(result) printf("ExtAudioFileWriteAsync %ld \n", result);}
return noErr;
誰もがこれを行う方法を知っていますか?
ありがとうございました。
ありがとうございます。 +1。私はちょうど間違った木を吠えるだろうと気付いた。私の研究では、ExtAudioFileWriteAsyncは、ステレオを渡す場合、インタリーブされたデータのバッファを1つ必要とすることを示唆しています。多分あなたは、関連する質問を手伝うことができるでしょう:http://stackoverflow.com/questions/10511272/turn-non-interleaved-audio-data-into-interleaved –
そうです。この場合、おそらく多くのインターレースとデインターレースが必要になるでしょう。 :) –
Audio Unitコールバックにパラメータの構造体を渡すことができます。あなたのスタイルガイドがそのようなものを好まない場合は、グローバルを使う必要はありません。 – hotpaw2