修改android系统默认采样率

通常使用android系统播放都会是一个固定的采样率输出,无论源是什么采样率,AudioFlinger都会将其重采样成同一个采样率的数据输出,一般平台都默认是44.1K或者48K,如果要修改成为其他采样率也比较简单,但需要注意几个地方。

在android P平台上实验,只要改下/vendor/etc/audio_policy_configuration.xml中声明的primary output的采样率即可,比如原本默认是48k,现在修改为192k:

当前改了这里只是audioflimger将会以192k的采用率对原始音频进行重采样输出,hal层在open声卡的时候可能仍然是以48k的参数去打开,所以hal层open声卡的地方也需要修改。

修改了audioflnger和hal,上层是支持了,而alsa plaform层和codec driver也是需要声明支持192k的,否则在open声卡时就会提示打开失败,这个支持声明在plaform driver和与之绑定的codec driver的snd_soc_dai_driver结构体里,另外soc输出的clk也要可以正确的根据采样率的变化而变化,codec硬件也要支持这么高的采样率,以ti 5805 codec driver为例修改声明如下:

#define TAS5805M_RATES         (SNDRV_PCM_RATE_8000 | \
               SNDRV_PCM_RATE_11025 | \
               SNDRV_PCM_RATE_16000 | \
               SNDRV_PCM_RATE_22050 | \
               SNDRV_PCM_RATE_32000 | \
               SNDRV_PCM_RATE_44100 | \
               SNDRV_PCM_RATE_48000 | \
               SNDRV_PCM_RATE_192000)

做了以上修改之后,尝试播了一下MP3,主观听觉得音质有点差,可能是这样的升采样处理,android的算法不太好吧。

如果动态的调整android的采样率,即绕开android系统的重采样机制,让音频保持原始采样率输出有待进一步研究了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值