【问题标题】:Xcode UIDragSession interrupting audio threadXcode UIDragSession 中断音频线程
【发布时间】:2018-05-08 10:28:38
【问题描述】:

我的项目是一个 IOS 音频应用。

我在使用 UIDragSession 时听到音频故障/口吃。它仅在用户第一次开始拖动交互时发生。更具体地说,同时调用了 'itemsForBeginningSession:' 委托方法。

就像我说的,这只会发生一次。我以前在展示屏幕键盘时遇到过类似的问题。解决方案是在应用程序启动时首先在后台显示键盘。

有其他人经历过吗?有解决方法或解决方案吗?

已解决:我刚刚在另一个应用程序(The Amazing Audio Engine Sample 应用程序)中重新创建了音频故障。原来这是一个 IOS 错误,一个简单的操作系统更新解决了这个问题。感谢您的所有帮助。

【问题讨论】:

  • 应用程序使用哪个 API 播放音频?什么类型的音频源数据和缓冲区大小?
  • 您好,我正在使用 AUGraph,并且已经向 remoteIO 音频单元注册了一个渲染回调。在渲染回调中,我使用循环缓冲区实现来播放音频。循环缓冲区是用 C 语言编写的,并且在音频线程上没有分配/锁定。缓冲区大小为 256,但可以更改。设备是最新的 iPad Pro 10.5。谢谢
  • 您是否在每个回调中检查 inNumberFrames 以处理缓冲区大小的变化?
  • 是的,我只提取渲染回调请求的缓冲区大小。实际上回调是由变速音频单元拉动的,它可以根据速率属性请求任意数量的帧,所以我编写了代码来动态响应这个。就像第一次启动拖动交互时发生了一件大事,它占用了 cpu 并暂停了音频线程片刻。你怎么看?还有其他人在他们的音频应用程序中使用 UIDragSession 吗?
  • 如果您在渲染回调中读取文件,可能会阻塞并导致卡顿。它甚至可以在渲染回调中执行malloc。音频可能非常微妙,因此如果您的渲染回调没有得到很好的优化,像 UI 事件这样看似无关的事情可能会导致打嗝。

标签: ios xcode audio drag-and-drop core-audio


【解决方案1】:

我设法在另一个应用程序(The Amazing Audio Engine Sample 应用程序)中重现了音频故障。原来这是一个 IOS 错误,一个简单的操作系统更新解决了这个问题。感谢您的所有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    相关资源
    最近更新 更多