gpt4 book ai didi

ios - 如何确保在 iOS 上的时间限制内呈现音频?

转载 作者:行者123 更新时间:2023-12-03 18:32:31 27 4
gpt4 key购买 nike

我正在通过 iOS Audio Unit render callback 从我的自定义合成器代码渲染低延迟音频.显然,如果我的渲染代码太慢,那么它将太晚从回调中返回,并且会出现缓冲区欠载。我从经验中知道这会导致输出静音。

我想知道我有什么时间限制,以便我可以管理处理级别以匹配设备限制等。

显然,缓冲区的长度(以样本为单位)决定了渲染音频的持续时间,这设置了总体限制。但是,我怀疑 Apple 音频引擎在发出渲染回调和要求响应之间会有更短的时间限制。

  • 我怎样才能找出这个时间限制,我可以在回调函数本身中做些什么?
  • 如果我碰巧超过了时间限制并导致缓冲区不足,是否有我可以收到的通知或我可以询问的状态对象?

  • 注意:在我的应用程序中,我正在创建一个“输出”音频单元,因此我无需担心将音频单元链接在一起。

    最佳答案

    可以在音频单元回调中完成的音频渲染量取决于 iOS 设备型号和操作系统版本,以及由于温度或背景模式导致的潜在 CPU 时钟速度节流。因此,它需要在您计划在您的应用程序支持的最旧、最慢的 iOS 设备上进行分析,并留有一定的余量。

    为了支持 iOS 9,我非常保守地在 iPhone 4S 测试设备(800 MHz 的 ARM Cortex A9 CPU)或使用较早 iOS 版本的更旧的较慢设备上分析我的应用程序。在进行这种分析时,可以添加一定比例的“make work”来测试音频回调并查看是否有任何余量(对于 50% 的余量,生成两次示例缓冲区等)其他开发人员似乎不那么保守.

    这就是为什么移动音频开发人员拥有(或可以访问)多个 iOS 设备(越旧越好)很重要的原因。如果回调在旧的慢速文本设备上满足时间限制,则它很可能在任何较新的 iOS 设备上都足够快。

    根据操作系统版本,欠载可能会导致静音,或者音频单元停止或崩溃(可以通过在某些可预测的时间内没有更多或没有足够的回调来检测到)。

    但避免欠载的最佳方法是在音频单元线程之外的另一个线程中完成大部分繁重的音频工作,并使用无锁循环 fifo/队列将样本传递到/从音频单元回调。

    关于ios - 如何确保在 iOS 上的时间限制内呈现音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38270530/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com