3

プラットフォームで何ができるかを確認するために、小さなテスト iOS 5.0 アプリの開発を始めたところです。

Chris Adamson のブログや、David Zicarelli の audioGraph の例 (多数の新機能を備えた Apple の MixerHost に基づく) など、一部のリソースは貴重でした。

私がやろうとしているのは、iOS 5.x SDK の新しい FilePlayer AudioUnit を使用して、このようなものをセットアップすることです。

(AUFilePlayer bus0) -> (いくつかのカスタム プロセス) -> (bus0 MultiChannelMixer bus0) -> (bus0 リモート I/O)

私は audioGraph から始めて、不要なものを削除し、最終的に上記のチェーンになりました。

AUFilePlayer の優先出力が 8.24 ストリームであることを確認できたので、ミキサーもそのように設定されています (入力スコープで 8.24)。私のプロセスは、必要な変換を処理します。

「カスタム プロセス」コールバックは、バス 0 のミキサーに登録されます。アプリが起動されると、定期的に呼び出されます。これはログで確認できます。

static OSStatus simpleRenderCallback (
                                  void *inRefCon, 
                                  AudioUnitRenderActionFlags  
                                  *ioActionFlags, 
                                  const AudioTimeStamp *inTimeStamp,  
                                  UInt32  inBusNumber,   
                                  UInt32  inNumberFrames,  
                                  AudioBufferList *ioData
                                  ) {
MixerHostAudio* THIS = (MixerHostAudio*) inRefCon; //the MixerHostAudio instance

AudioUnit fpUnit= THIS.auFilePlayerUnit_1;


OSStatus renderErr = noErr;



renderErr= AudioUnitRender(AUFilePlayerUnit, ioActionFlags, inTimeStamp, 0, inNumberFrames, ioData); 
if (renderErr < 0) {
    NSLog(@"error:%ld",renderErr);
    return renderErr;
}


return noErr;
}

問題は、AudioUnitRender がコールバックで呼び出されるたびに、常に renderErr = -50 を取得していることです。

今のところシミュレーターで実行しています。Mac サウンドカードは 44,100Hz に設定されており、inNumberFrames は常に 512 に等しいことがわかりました。

問題はどこから来たのですか?-50 は CoreAudio の「不正なパラメーター」を意味しますが、それだけでは何が問題なのかを知るには十分ではありません。

ありがとう!

4

0 に答える 0