首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioUnit (呈现)回调

AVAudioUnit (呈现)回调
EN

Stack Overflow用户
提问于 2014-08-06 15:14:59
回答 1查看 982关注 0票数 1

我正在尝试使用新的AVAudioUnits / AVAudioNodes进行一些音频处理。当AVAudioUnits公开它们的底层(经典CA) AudioUnit时,我假设我可以像往常一样简单地附加一个呈现回调,但是回调不会被调用。

下面是我说的代码:

代码语言:javascript
复制
AVAudioUnitReverb *reverbUnit = [[AVAudioUnitReverb alloc] init];

AURenderCallbackStruct renderCallbackStruct;
renderCallbackStruct.inputProc = &myRenderCallback;
renderCallbackStruct.inputProcRefCon = myAudioStruct;

AudioUnitSetProperty(reverbUnit.audioUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Global, 0, &renderCallbackStruct, sizeof(renderCallbackStruct));

而呈现回调基本上如下所示:

代码语言:javascript
复制
OSStatus myRenderCallback(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) {
    printf("callback!");
    return noErr;
}

reverbUnit当然是附在引擎(PlayerNode -> Reverb -> MainMixer)上的,我可以像预期的那样听到播放器的声音(回响)。

注意:当我设置回调时

代码语言:javascript
复制
AudioUnitAddRenderNotify(reverbUnit, &myRenderCallback, myAudioStruct)

它被调用,但是ioData->mBuffers[0].mData是零(这是正确的AFAIK),所以这不是一个替代。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 02:53:02

呈现回调由AUGraph中混响单元的输入节点连接覆盖。您只能有一个输入到一个混响节点,或者一个输入节点或者一个渲染回调。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25164076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档