AudioToolBoxオーディオレンダリングに関するメモ
■AUGraphAddRenderNotify
AUGraphAddRenderNotify(
AUGraph inGraph,
AURenderCallback inCallback,
void *inRefCon
);
はGraph全体のレンダリング開始時とレンダリング終了時に呼び出される。
■AUGraphSetNodeInputCallback
AUGraphSetNodeInputCallback(
AUGraph inGraph,
AUNode inDestNode,
UInt32 inDestInputNumber,
const AURenderCallbackStruct *inInputCallback
);
はあるNodeのレンダリング要求時に呼び出される。
(AUGraphSetNodeOutputCallbackは無い?)
これを設定した場合、AUGraphでINPUT側につながれていたNodeから送られるはずのオーディオデータは遮断される。そのためINPUT側のNodeから来るはずのオーディオデータをこのコールバック内で、以下のAudioUnitRender関数を用いて直接レンダリングする必要がある。
■AudioUnitRender
AudioUnitRender(
AudioUnit inUnit,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inOutputBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData
);
は任意のタイミングで、任意のAudioUnitのレンダリングを行う。
AUGraphSetNodeInputCallback内で使用する場合は、コールバック関数の引数をそのまま渡せば良い。(ただしinOutputBusNumberは任意で設定しなおす)
参考:iPhone Core Audio プログラミング pp365-pp371
0 件のコメント:
コメントを投稿