Я пытаюсь добавить обратный вызов ввода в AVAudioEngine's
inputNode, но он никогда не вызывается.Добавить обратный вызов ввода в AVAudioEngine
Надеюсь, что я смогу использовать AVAudioEngine
для управления базовым AUGraph для iOS и OS X, и я могу запустить свой собственный код между ними. Я также попытался установить кран на входном узле, но я не могу изменить длину буфера.
Я сделал один вид 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)
У кого-нибудь есть предложения?