私は基本的にAUGraph
を使用してGenericOutput Node
と を呼び出すことによって生成されたサンプルを取得しようとしていAudioUnitRender
ます。私のプログラムの出発点として、MixerHost
Apple の例を使用し、outputNode
次のように変更しました。
AudioComponentDescription iOUnitDescription;
iOUnitDescription.componentType = kAudioUnitType_Output;
iOUnitDescription.componentSubType = kAudioUnitSubType_GenericOutput;
iOUnitDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
iOUnitDescription.componentFlags = 0;
iOUnitDescription.componentFlagsMask = 0;
後でサンプルを入手したいときは、電話します
AudioUnitRenderActionFlags ioActionFlags = kAudioOfflineUnitRenderAction_Render;
AudioTimeStamp inTimeStamp = {0};
inTimeStamp.mHostTime = mach_absolute_time();
inTimeStamp.mFlags = kAudioTimeStampSampleHostTimeValid;
result = AudioUnitRender (
ioUnit,
&ioActionFlags,
&inTimeStamp,
1,
1024,
ioData
);
これは
「-10877 / 無効な要素」
エラー。私の仮定は、エラーはinTimeStamp.mSampleTime
フィールドを正しく設定していないことが原因であるということです。正直なところ、 をAudioQueueDeviceGetCurrentTime
使用していないため、使用できない 以外のサンプル時間を見つける方法が見つかりませんでしたAudioQueue
。ただし、ioActionFlag
を kAudioTimeStampHostTimeValid
変更しても、エラーの動作は変わりません。