iOS 中 AudioUnit Graph 的可重用性
Posted
技术标签:
【中文标题】iOS 中 AudioUnit Graph 的可重用性【英文标题】:Reusability of an AudioUnit Graph in iOS 【发布时间】:2013-07-10 18:38:47 【问题描述】:我在我的 ios 应用程序中使用了两个 AUGraph,一个用于录制音频,一个用于播放音频。我一次只用一个。只要我每次开始使用它们时从头开始重新创建 AUGraph 实例,它就可以正常工作。
我尝试重复使用这些 AUGraph,而不是每次在录制和播放之间切换时创建和初始化它们的新实例。
我在执行此操作时遇到问题,因为在执行以下步骤时,我下次尝试从 I/O 单元获取麦克风数据时出错:
撰写记录图 初始化记录图 开始记录图表 停止记录图表 撰写回放图 初始化回放图 开始播放图表 停止播放图表 开始记录图表然后是导致错误的调用,返回码为 -50(此语句在每次重新创建 AUGraph 时都可以正常工作):
OSStatus status = AudioUnitRender(
remoteIoUnit,
ioActionFlags,
inTimeStamp,
CB_remoteIoUnitInputElement,
inNumberFrames,
ioData
);
一般情况下是否可以重用 AUGraph,如果可以,如何实现?
【问题讨论】:
我已经恢复使用娱乐方法。虽然这个解决方法对我有用,但如果有人能告诉我如何重用 AUGraph,请告诉我。即使只是出于好奇,我也很感兴趣。 找到这个,可能有点兴趣:lists.apple.com/archives/coreaudio-api/2012/Oct/msg00113.html 【参考方案1】:可以完全按照问题中描述的方式重复使用 AU Graph。
它对我不起作用的问题是我有一个错误,导致我的两个 AUGraph 实例之间发生干扰/覆盖。我只是偶然发现了这些错误。由于我修复了它们,因此 AUGraph 可以按预期工作。
当两个 AUGraph 实例完全分开时,您可以使用和重用任意数量的 AUGraph 实例。我没有测试它们是否可以同时使用。
【讨论】:
以上是关于iOS 中 AudioUnit Graph 的可重用性的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008 R2 的可重试 SQLBulkCopy
iOS:当前 AVAudioPlayer 的 AudioUnit