修改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系统的重采样机制,让音频保持原始采样率输出有待进一步研究了。。。
本文地址:https://blog.csdn.net/songche123/article/details/107567345
上一篇: uni-app学习之旅(二)uni-app开发规范
下一篇: 12306良心推荐 酷派双系统帮你回家
推荐阅读
-
如何修改Android Studio创建module时默认的compileSdkVersion
-
Android开发中Launcher3常见默认配置修改方法总结
-
Android系统修改之Notification布局修改(一)
-
Linux系统默认启动级别要如何修改
-
Debian 9系统下修改默认网卡为eth0的方法
-
AndroidStudio修改默认C盘配置文件夹(.android.gradle.AndroidStudio)以及修改后避免踩的坑
-
Linux操作系统下SSH默认22端口修改方法
-
修改linux系统默认启动级别
-
Android6.0 源码修改之屏蔽系统短信功能和来电功能
-
android控件(view)的默认(系统)样式查看