AVAudioEngine's
入力コールバックをinputNodeに追加しようとしていますが、呼び出されません。
希望は、AVAudioEngine
iOS と OS X の両方で基本的な AUGraph を管理するために使用でき、その間で独自のコードを実行できることです。入力ノードにタップを取り付けてみましたが、バッファの長さを変更できません。
私はシングル ビュー iOS アプリを作成し、このコードをviewDidLoad
次の場所に配置しました。
_audioEngine = [AVAudioEngine new];
_inputNode = _audioEngine.inputNode;
_outputNode = _audioEngine.outputNode;
AURenderCallbackStruct inputCallback;
inputCallback.inputProc = inputCalbackProc;
inputCallback.inputProcRefCon = (__bridge void *)(self);
AudioUnitSetProperty(_inputNode.audioUnit,
kAudioOutputUnitProperty_SetInputCallback,
kAudioUnitScope_Global,
0,
&inputCallback,
sizeof(inputCallback));
[_audioEngine startAndReturnError:nil];
レンダリング コールバックは次のように定義されます。
OSStatus inputCalbackProc (void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData)
{
printf("Called");
return noErr;
}
同じ方法で、出力ノードのオーディオ ユニットにレンダー コールバックをインストールできましたが、入力コールバックが呼び出されません。
入力ノードのオーディオ ユニットが出力ノードのオーディオ ユニットと同じであることを確認しました。これは、グラフが正しく設定されていることを示しています。kAudioOutputUnitProperty_EnableIO
また、ユニットに設定しようとしましたRemoteIO
(inputNode.audioUnit)
誰か提案がありますか?