私は基本的にAUGraphを使用してGenericOutput Nodeと を呼び出すことによって生成されたサンプルを取得しようとしていAudioUnitRenderます。私のプログラムの出発点として、MixerHostApple の例を使用し、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変更しても、エラーの動作は変わりません。