kAudioUnitProperty_ShouldAllocateBuffer не имеет никакого эффекта

Я просто работаю над получением сэмплов для обработки с микрофона. У меня есть аудиоустройство, настроенное для ввода и вывода, и у обоих есть обратные вызовы рендеринга. Мой вопрос касается обратного вызова для обратного вызова микрофона.

Я хочу, чтобы core-audio выделил мне буфер в обратном вызове микрофона.

 UInt32 shouldAllocateBuffer = 1;
AudioUnitSetProperty(audioUnit, kAudioUnitProperty_ShouldAllocateBuffer, kAudioUnitScope_Global, 1, &shouldAllocateBuffer, sizeof(shouldAllocateBuffer));

Однако это всегда приводит к NULL-указателю ioData в обратном вызове. Я застрял в выделении собственного буфера?

Вход

static OSStatus recordingCallback(void *inRefCon, 
                          AudioUnitRenderActionFlags *ioActionFlags, 
                          const AudioTimeStamp *inTimeStamp, 
                          UInt32 inBusNumber, 
                          UInt32 inNumberFrames, 
                          AudioBufferList *ioData) {

OSStatus status;
status = AudioUnitRender(audioUnit, 
                         ioActionFlags, 
                         inTimeStamp, 
                         inBusNumber, 
                         inNumberFrames, 
                        ioData);  // ioData is null here
}

Воспроизведение

static OSStatus playbackCallback(void *inRefCon, 
                                  AudioUnitRenderActionFlags *ioActionFlags, 
                                  const AudioTimeStamp *inTimeStamp, 
                                  UInt32 inBusNumber, 
                                  UInt32 inNumberFrames, 
                                  AudioBufferList *ioData) {    
// ioData is not NULL here but I get silence in the headphones.
    return noErr;
}
5
задан Tom 12 March 2013 в 16:22
поделиться