前言
客户想知道设备mic录制是否支持24bit。
通过tinycap命令先测试一下。
现象
tinycap XXX.wav -c 1 -r 48000 -b 16 -T 3
使用tinycap命令录制,bit为24时,实际使用的是32,其他两个32/16 ok.
代码查看
pcm 硬件设置
Tinycap使用的是pcm0c
看起来dai的formats是允许24bit,但同时也可以看出不支持PCM_FORMAT_S24_3LE,这个format很重要。
tinycap中bits数的变化
代码调用流程
tinycap的main函数中会根据传入bits获取format,而此时只支持PCM_FORMAT_S24_LE。
pcm_format_to_bits
会根据format获取bit数,此时可以看到format为PCM_FORMAT_S24_LE时,返回的bit数是32。
这就是命令设置bit24时,实际却是32bit的原因。
(中间商赚差价啊)
小结
tinycap设置24bit,实际使用的是32bit。
分析思路:
- pcm硬件参数是否支持
- tinycap命令是否有对bit数进行再判断
由于format只支持PCM_FORMAT_S24_LE(PCM中定义,且tinycap的main函数中switch选择),后续根据format取bit时,该PCM_FORMAT_S24_LE会返回32bit。