iOS中AudioUnit图形的可重用性

4
我在我的iOS应用程序中使用两个AUGraph,一个用于录制音频,另一个用于播放音频。我一次只使用一个。只要每次开始使用它们时重新创建AUGraph实例,就可以正常工作。
我试图重复使用这些AUGraphs,而不是每次在录制和播放之间切换时创建和初始化一个新的实例。
我做以下步骤时遇到问题,因为当我尝试从I/O单元获取麦克风数据时,下一次会出现错误:
- 组合录音图 - 初始化录音图 - 启动录音图 - 停止录音图 - 组合播放图 - 初始化播放图 - 启动播放图 - 停止播放图 - 启动录音图
然后调用引起错误的语句返回代码为-50(每次重新创建AUGraph时该语句都能正常工作)。
OSStatus status = AudioUnitRender(
    remoteIoUnit,
    ioActionFlags,
    inTimeStamp,
    CB_remoteIoUnitInputElement,
    inNumberFrames,
    ioData
);

AUGraph是否可以重复使用?如果可以,如何重复使用?

我已经回到使用重新创建的方法。虽然这种解决方法对我来说很有效,但如果有人能告诉我如何重用AUGraph,那就请告诉我。即使只是出于好奇,我也很感兴趣。 - Daniel S.
找到了这个,可能会稍微有点兴趣:http://lists.apple.com/archives/coreaudio-api/2012/Oct/msg00113.html - Woodstock
1个回答

2
可以像问题描述中所述一样完全重用AU图形。
对我而言没有生效的问题是,我有一个错误导致我的两个AUGraph实例之间发生干扰/覆盖。我只是偶然发现了这些错误。自从我修复了它们,AUGraph再次按预期工作。
当完全分离两个AUGraph实例时,您可以使用和重复使用任意数量的AUGraph实例。我没有测试它们是否可以同时使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接