gpt4 book ai didi

android - AudioHardwareALSA::getInputBufferSize(...) 中的缓冲区计算

转载 作者:行者123 更新时间:2023-11-30 04:44:20 25 4
gpt4 key购买 nike

我正在查看 AudioHardwareALSA.cpp 中的 getInputBufferSize(...) 函数,它返回硬编码值 320。我的问题是:这个值是如何计算的?

我已经做了一些预考,但仍有一些问题。


sample_rate = 8000
format = S16_LE = 2 bytes/sample
period_time = 10000 us (guessing)
buffer_size = 2 * period_size
period_size = period_time * bytes/sec
buffer_size = 2 * (0.01 * sample_rate * 2) = 320 bytes.

我在代码中找不到period_time,所以一个问题是:它是在哪里定义的还是只是一个粗略的计算?

我还尝试添加更多采样率,即 16000 和 32000(以后可能会更多)。如何计算正确的最小缓冲区大小?所有采样率的延迟是否始终为 10 毫秒?

感谢任何帮助。

最佳答案

我相信谷歌首先实现了 NB-AMR 编码。后来他们增加了对 AAC 的支持。在 NB-AMR 的情况下,帧大小为 320 字节。您可能知道,对于 NB-AMR: 采样率 = 8000 个样本/秒 帧持续时间 = 20ms 样本大小 = 2 字节 channel =单声道所以,每一帧包含 8000 个样本/秒 * 0.02 秒 * 2 字节/样本/ channel * 1 channel = 320 字节

对于 AAC,这些参数不同,因此帧大小也不同

关于android - AudioHardwareALSA::getInputBufferSize(...) 中的缓冲区计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340611/

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