1

私は基本的に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。ただし、ioActionFlagkAudioTimeStampHostTimeValid変更しても、エラーの動作は変わりません。

4

1 に答える 1

0

要素 (AKA 'bus') に関するエラーは、AudioUnitRender 呼び出しの 4 番目の引数 (1) を参照しています。Generic Output ユニットには、入力、出力、およびグローバル スコープを持つ 0 という 1 つの要素/バスしかありません。要素 # に 1 ではなく 0 を呼び出しに渡すと、そのエラーは消えるはずです。

于 2014-02-11T19:20:57.013 に答える