gpt4 book ai didi

正确调整 Alsa 缓冲区大小,奇怪的 API

转载 作者:太空狗 更新时间:2023-10-29 17:18:09 25 4
gpt4 key购买 nike

我目前正在从事一个项目,该项目需要我使用 Alsa 进行一些采样。我正在尝试正确配置所有内容,但我对如何正确调整读数感到困惑。

有两个原语似乎对我的任务很有趣:

snd_pcm_hw_params_get_period_time
snd_pcm_hw_params_get_buffer_size

第一个的名称表明输出将是采样周期的时间长度,但这很奇怪:如果我将采样率设置为 f = 44100Hz,则采样周期 (以纳秒为单位)应该是 T0 = 1e9/44100 ~= 22676 ns 而函数将回答 T1 = 725 us = 725000 ns

与此同时,即使我被要求使用非锁定原语,我也在尝试分析锁定“readi”所需的时间,结果证明该示例需要 T2 = 8028603 ns 在最好的情况下时间和 T3 = 12436217 ns 在最坏的情况下。

最后搞不懂下面两个是什么意思:

snd_pcm_hw_params_get_buffer_time
snd_pcm_hw_params_get_period_size

我不知道如何及时测量缓冲区和大小的周期,但是前者返回与 get_buffer_size 相同的值,而后者返回与 相同的值get_period_time.

有什么提示吗?

最佳答案

ALSA 有一些奇怪的^W 特定术语:

  • 帧:样本 x channel (即:立体帧由两个样本组成,单帧由 1 个样本组成,...)
  • 周期:传输的样本数,之后设备确认传输到应用程序(通常通过中断)。

*_size 函数似乎以帧为单位返回尺寸。

HTH

关于正确调整 Alsa 缓冲区大小,奇怪的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345083/

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