Я просто работаю над получением образцов для обработки с микрофона.У меня есть аудиоустройство, настроенное для ввода и вывода, и оба имеют обратные вызовы рендеринга.Мой вопрос касается обратного вызова для обратного вызова микрофона.
Я хочу, чтобы 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;
}