欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

修改android系统默认采样率

程序员文章站 2022-03-21 18:52:49
通常使用android系统播放都会是一个固定的采样率输出,如果源是什么采样率,AudioFlinger都会将其重采样成同一个采样率的数据输出,一般平台都默认是44.1K或者48K,如果要修改成为其他采样率也比较简单,但需要注意几个地方。在android P平台上实验,只要改下/vendor/etc/audio_policy_configuration.xml中声明的primary output的采样率即可,比如原本默认是48k,现在修改为192k:当前改了这里只是audioflimger将会以1...

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

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

修改android系统默认采样率

当前改了这里只是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)

修改android系统默认采样率

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

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

本文地址:https://blog.csdn.net/songche123/article/details/107567345

相关标签: Android audio