gpt4 book ai didi

c - Alsa Lib硬件参数设置

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

我正在尝试使用 alsa 库在我的 Linux (debian) 嵌入式设备上录制声音。我的嵌入式硬件是这个[1],根据其数据表第33页[2],

Analog audio signals are featured by the on-SOM TLV320AIC3106 audio codec.

以及德州仪器 (TI) 音频编解码器的数据表 [3],

Supports Rates From 8 kHz to 96 kHz

我使用 alsa lib 的示例应用程序代码,对于初始工作,我没有更改代码。在示例代码中,采样率设置为 44100Hz。我成功录制声音并播放后。现在,我认为,我可以根据数据表使用 alsa-lib 以 8000Hz 的采样率录制声音。我将采样率设置为 8000Hz,但在 alsa 配置中,它更改为 16000Hz。我将采样率设置为8000Hz;

snd_pcm_hw_params_set_rate_near(handle, params, &(record_params->rate), &dir);
snd_pcm_hw_params_set_channels(handle, params, record_params->channel);
rc = snd_pcm_hw_params(handle, params);

但是调用这个方法后;

snd_pcm_hw_params_get_period_time(params, &(record_params->rate), &dir);

变为16000。上面之间没有其他方法调用。是我的设置错误还是编解码器不支持 8kHz?

更新:当我将费率设置为 16000 时,它会更改为 8000。我真的更困惑了。

[1] = http://www.variscite.com/products/system-on-module-som/cortex-a9/dart-mx6-cpu-freescale-imx6

[2] = http://www.variscite.com/images/stories/DataSheets/DART-MX6/DART-MX6_v1_2_datasheet_v2_1.pdf

[3] = http://www.ti.com/lit/ds/symlink/tlv320aic3106.pdf

最佳答案

经期时间和频率是两个不同的东西。

PCM 的周期基本上是设备中断之间传输的帧数。这样做是因为逐帧向设备传输数据效率极低。

ALSA 库允许按微秒(使用 snd_pcm_get_period_time)或帧计数(使用 snd_pcm_get_period_size)指定周期大小。

如果您尝试计算分配用于读取或写入 PCM 的缓冲区大小,则使用 snd_pcm_get_period_size (返回一个周期中的帧数)会更直观,并且然后调用snd_pcm_frames_to_bytes,将PCM的帧计数转换为字节计数。

关于c - Alsa Lib硬件参数设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42298565/

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