iphone - iOS 中 AudioUnit 图表的可重用性

标签 iphone ios audiounit

我在我的 iOS 应用程序中使用了两个 AUGraph,一个用于录制音频,一个用于播放音频。我一次只用一个。只要我每次开始使用它们时都从头开始重新创建 AUGraph 实例,这就可以正常工作。

每次在录制和播放之间切换时,我都在尝试重用这些 AUGraph,而不是创建和初始化它们的新实例。

我在执行此操作时遇到问题,因为在执行以下步骤时,下次我尝试从 I/O 单元获取麦克风数据时出现错误:

  • 编写记录图
  • 初始化记录图
  • 开始记录图表
  • 停止记录图表
  • 编写回放图
  • 初始化回放图
  • 开始播放图
  • 停止播放图
  • 开始记录图表

然后是导致错误的调用,返回代码为 -50(每次重新创建 AUGraph 时此语句都可以正常工作):

OSStatus status = AudioUnitRender(
    remoteIoUnit,
    ioActionFlags,
    inTimeStamp,
    CB_remoteIoUnitInputElement,
    inNumberFrames,
    ioData
);

重用 AUGraph 通常是否可行,如果可行,如何实现?

最佳答案

可以完全按照问题中描述的方式重用 AU 图。

为什么它对我不起作用的问题是我有一个错误导致我的两个 AUGraph 实例之间的干扰/覆盖。我只是偶然发现了这些错误。由于我修复了它们,AUGraphs 按预期工作。

当保持两个 AUGraph 实例完全独立时,您可以根据需要使用和重用任意数量的 AUGraph 实例。能不能同时使用我没有测试。

关于iphone - iOS 中 AudioUnit 图表的可重用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578433/

相关文章:

ios - 在代码中将 UIButton 连接到 IBOutlet 和 IBAction

ios - 将图像上传到服务器 IOS7 后应用程序崩溃

iphone - 如何更改iOS Simulator SDK

iphone - 我如何在导航栏上实现这一点

ios - 将 subview 添加到静态 UITableViewCell 不起作用

ios - 如何在音频单元扩展(实时进程)中为音频文件播放分配内存?

iphone - cllocation 和 mkreversegeocoder

ios - 如何在 SWIFT 4 中保存 UISwitch 的状态?

ios - 我可以使用 AVAudioEngine 以比实时更快的速度读取文件、处理音频单元并写入文件吗?

c++ - Mac OSX 10.7 Lion Audio Unit Effect 模板编译失败