2011年1月7日金曜日

AUGraphSetNodeInputCallback / AUGraphAddRenderNotify / AudioUnitRender

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 件のコメント: