我試圖輸入回調添加到AVAudioEngine's
inputNode但它永遠不會被調用。添加輸入回調AVAudioEngine
希望的是,我可以使用AVAudioEngine
來管理iOS和OS X的基本AUGraph,我可以在運行之間我自己的代碼。我也嘗試在輸入節點上安裝一個tap,但是我無法改變緩衝區的長度。
我做了一個單一的視圖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;
}
我已經成功地安裝一個渲染以同樣的方式在輸出節點的音頻單元上進行回調,但我的輸入回調從不會被調用。
我已經檢查該輸入節點的音頻單元是相同的這表明該圖已被正確地設置了所述輸出節點的音頻單元。我也嘗試在RemoteIO
單元上設置kAudioOutputUnitProperty_EnableIO
(inputNode.audioUnit)
有人有什麼建議嗎?