【发布时间】:2012-02-20 20:47:27
【问题描述】:
我正在努力从麦克风中获取样本进行处理。我为输入和输出设置了一个音频单元,并且都有渲染回调。我的问题是关于麦克风回调的回调。
我希望 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;
}
【问题讨论】:
标签: core-audio