gpt4 book ai didi

audio - SDL 音频 API 中的 "silence"值究竟是什么?

转载 作者:行者123 更新时间:2023-12-02 22:35:36 24 4
gpt4 key购买 nike

在 SDL 中,当您设置音频输出设备时,您和 SDL 必须就音频格式达成一致 - 例如44.1KHz 立体声 16 位有符号小端。没关系。但除了最终商定的格式外,您还会得到一个计算出的“静音”值,该值似乎没有得到很好的记录。

无声的声音样本显然由一遍又一遍地重复的相同样本值组成,并且您希望它处于“零”级别。从某种意义上说,任何常数值都可以,但你必须同意一个值(这样在切换到不同的声音时你不会得到爆裂声),并且在一个理智的世界里,你想在样本中心选择一个值爆炸-值范围。

因此,如果您碰巧对 0..whatever 的样本值范围使用无符号格式,那么您的静音值将是(whatever/2)。

编辑 - 在下方插入“未签名”以避免混淆。

没关系。但是你得到的静音值是一个无符号的 8 位整数。如果您想要无符号的 16 位样本,那效果不是很好 - 0x8000 的逻辑静音值需要两个不同的字节值,并且要求它们采用正确的字节序。

因此,您从 SDL 获得的静音值似乎没有多大意义。例如,您不能使用它来删除缓冲区,而无需处理额外的复杂情况并进行推断,这几乎会使预先计算的静音值变得毫无意义。

当然,这意味着我误解了重点。

所以 - 如果这不是静音值的使用方式,应该如何使用它?

最佳答案

我没有证据支持这一点,但我认为这里的假设是“静音”可以解释为“普通声卡格式的静音”。那些是:

  • 无符号 8 位整数
  • 有符号 16 位整数
  • 有符号 32 位整数(用于 24 位音频数据)
  • 标准化 32 位浮点
  • 规范化的 64 位浮点。

  • 在除无符号 8 位之外的所有情况下,零 (0) 是“零幅度”值。因此返回的无符号 8 位整数包含这些格式的所有可能的“零幅度”值。

    关于audio - SDL 音频 API 中的 "silence"值究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4312660/

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