首页 > 代码库 > Nubia Z5S官方4.4 UI2.0音频Audio部分简单分析(也适用于其他8974/8064机型)以及减少破音出现几率的方法

Nubia Z5S官方4.4 UI2.0音频Audio部分简单分析(也适用于其他8974/8064机型)以及减少破音出现几率的方法


转载请注明出处和网址链接:

http://blog.csdn.net/syhost/article/details/31419749


此篇本是在Z5S的官方4.4内测版出来时写的, 主要是看到其在audio的配置文件里没有es325的相关配置, 因此断定不支持z5sn的一些audio特性,本想喷一下, 结果第二天官方自己写了..


本人先前在安智论坛也发过一篇通过修改snd_soc_msm的audio配置文件来调整一些音量的方法, 但本人4月之后编译的Z5S的Android4.4的ROM已经采用了新的audio架构,这点跟Nubia Z5S官方4.4的是一样的, 因此先前的文章提到的方法已经不适用于Z5S的官方4.4以及本人4月之后发布的Android4.4 ROM.


从以前我发布的Z5S的Android4.4的ROM的反馈情况来看, 应该可以判断Z5S的扬声器或者audio相关的器件的质量批次一致性太差, 同一个配置文件 在不同人的手机上出来不同的效果, 有的人反馈声音小了, 有的人还反馈已经破音! 估计扬声器质量问题的可能性比较大, 因为即使audio部分采用的电容电阻是5%或者10%精度的(手机上的器件没有这么差精度的吧!)也不可能差别大到这种程度!


接下来看看Android4.4里高通的音频配置文件, 这个文件是 system/etc/mixer_paths.xml, 这个跟之前4.2里的audio配置文件system/etc/snd_soc_msm/snd_soc_msm_xxxx

看似差别很大, 实际含义以及功能是一样的,无非是把以前的文本格式转成了xml格式的,(这样的改变实际上让这配置文件看起来更清晰了) 都是通过相应字段来配置audio的参数来架起HAL层和内核的桥梁, 也可以通过相应字段的参数来设置内核中audio的参数比如音量打开通道啥的!


从以前移植Z5S的4.4内核的经验以及官方4.4的audio配置文件来判断此次Nubia Z5S的官方4.4 公测版H202的audio部分内核中应该没有添加任何Nubia的特性(当然耳机检测肯定加了), 不过这里指的Nubia的特性无非是Z5Sn的es325音频调理芯片而已, 对于z5s来说倒是没啥影响. 以前官方4.2的audio配置文件snd_soc_msm_Taiko中可以找到es325的相关配置. 我之前移植的z5s的4.4内核后来也移除了es325相关的代码!


但是就算z5s上没有es325芯片, 就连双MIC中的后相机mic(dmic3) 从官方音频配置文件中也没看到相应的配置, 这里我就不确定了是不是z5s上本来就没有双mic.


再来对比下官方的音频配置文件跟我修改的版本的差异, 来分析下如果调整一些音量,调大音量或者防止破音.






从上面几处对比发现官方的配置跟我修改的主要的差别在蓝牙  incall music  和 listen-voice-wakeup 几个方面 其他的差异基本就是音量相关的了.  这里的listen-voice-wakeup 以前还没在别的机型看到过,难道是声纹解锁之类的?




这里就是上面所说的官方4.4里没有后MIC的配置部分, 右边是我修改的dmic3的配置部分, 不过后面的字段里我也没调用这个mic, 因为经测试发现会影响通话质量造成回声啥的, 这样用录音软件录音时也不能打开双MIC了.


这是主mic的参数配置, 我的配置跟官方的一样, 或者说都是高通caf默认的参数!


我之前修改音频配置文件调整音量的原则是在尽量大声的条件下不破音,  和官方的音量配置对比下看看:


speaker这个字段就是设置主扬声器(对z5s来说就是后扬声器)的参数的, 右边我的配置文件里音量设置的是85, 如果刷官方4.4 UI2.0出现破音的同学可以尝试把左边官方的配置文件音量这个88改成85或者80等更小的数字试试!




handset 这个字段是配置听筒参数的, 右边我的配置里加了个设置RX1通道音量的参数, 不过好像确实也没起作用, 因此右边官方的就没有, 也可以自己尝试在官方4.4里加上这个看能不能调整听筒音量, 注意 这里的听筒不是在通话时起作用的, 通话时的听筒设置在另外一个字段里,下面有介绍!



handset-mic 这个字段 是设置主话筒的参数的, 右边我加了一个设置话筒音量的参数, 不过不确定是否起作用了!



headphones这个字段是设置耳机的音频参数的,可以调打开通道,每个通道的音量之类的, 右边我的配置参数里加了调整音量的部分, 实测是可以起到调整耳机音量的效果的, 注意实际起音量调节作用的是 <ctl name="RX1 Digital Volume" value=http://www.mamicode.com/"65" /> 这两句



voice-handset 这个字段 才是真正的用来设定通话时听筒参数的, 左边官方的配置跟上面handset没区别, 右边我的配置里添加了调整音量 <ctl name="RX1 Digital Volume" value=http://www.mamicode.com/"99" />这句 和 增加滤波调整通话质量这句,具体的滤波参数在sidetone-handset字段里设置.



voice-speaker字段是用来设置通话时外放的参数的, 右边我的配置里加了设置音量的部分.



voice-headphones 顾名思义, 就是设置插耳机时通话耳机的参数了, 右边我加了滤波相关!



voice-headset-mic 这是是设置插耳机时通话mic的参数, 注意跟上面主mic不同的是 这里的耳机mic是 模拟mic 而不是上面的dmic(数字mic), 所以有了adc调节音量的参数!

<ctl name="ADC2 Volume" value=http://www.mamicode.com/"64" /> 注意这里 右边我的音量设置跟官方的音量设置差别大是因为我加了数字音量调整, 实际二者应该出来的效果是差不多的!



要注意 headset 跟 handset 是两个不同的概念, 后者是听筒, 前者是耳机,

另外headphones也是耳机不过跟headset差别在mic上!




最后要特别强调一点, 根据上面的介绍来修改音频参数时, 上面各个字段里引号中的字符要一模一样, 包括空格都不能有不同!