gpt4 book ai didi

c++ - 预加载音频缓冲区 - 什么是合理可靠的?

转载 作者:可可西里 更新时间:2023-11-01 11:51:14 25 4
gpt4 key购买 nike

我正在将一个音频信号处理应用程序从 Win XP 转换到 Win 7(至少)。您可以想象它是一个声纳应用程序 - 生成并发送信号,然后读回相关/修改后的信号。该应用程序需要独占使用音频硬件,并且不能承受故障 - 我们不想阅读诸如“Windows 哔哔声导致导弹发射”之类的标题。

查看 Windows SDK 音频示例,与我的案例最相关的示例是 RenderExclusiveEventDriven 示例。在音频引擎之外,它准备播放 10 秒的音频,通过 IAudioRenderClient 对象的 GetBuffer()ReleaseBuffer 将其以 10ms 的 block 提供给渲染引擎()。它首先使用这些函数预加载单个 10 毫秒的音频 block ,然后依靠常规的 10 毫秒事件加载后续 block 。

希望这意味着总是有 10-20 毫秒的音频数据缓冲。我们应该期望它在相当现代的硬件(不到 18 个月大)上有多可靠(即无故障)?

以前,人们可以轻松地通过 waveXXX() API 预加载至少半秒的音频,这样如果 Windows 在其他地方很忙,音频连续性就不太可能受到影响. 500 毫秒似乎比 10-20 毫秒更安全......但是如果你想要事件驱动和独占模式,IAudioRenderClient 文档并没有明确说明是或不是可以预加载多个 IAudioRenderClient 缓冲区。

谁能确认是否仍然可以进行更广泛的预加载?是推荐、不鼓励还是两者都不推荐?

最佳答案

如果您担心发射导弹,我认为您不应该使用 Windows 或任何其他非实时操作系统。

也就是说,我们正在开发另一个消耗更高数据带宽的应用程序(连续数小时或更长时间为 400 MB/s)。我们已经看到操作系统无响应长达 5 秒的故障,因此我们在数据采集硬件上有大缓冲区。

关于c++ - 预加载音频缓冲区 - 什么是合理可靠的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137526/

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