【Audio开发一】android音频问题排查指南

一,具体表现

可能遇到的音频问题表现多样,这里可以根据表现大致分类为功能异常、底噪异常和其它指标异常三类。

功能异常主要包括播放、录音的全部功能或部分流程无法完成,音频软硬件通路中存在报错或其它明显问题。如录音测试中生成了空白文件,播放文件没有声音等;

底噪异常是指播放与录音功能可以正常执行,但测试中表现出现主观听感异常或客观噪声指标不满足要求。例如在设备运行后录音出现干扰,播放静音数据出现异常噪音或单频尖峰;

其它指标异常则与底噪异常类似,是在功能可以正常执行的情况下,测试发现某些音频指标不满足规格或存在明显异常。

二,问题分析

所有音频问题,在开始分析之前,都需要先对软硬件情况进行一些基本检查,逐一排除设计或配置中的一些疏漏。

硬件上,主要对比标案原理图,并参考硬件设计指南音频部分,检查:

1、Audio外围的电源与阻容,是否和标案参考一致;

2、核对MIC类型,是否和推荐的电路结构相符,偏置\供电电路部分是否有调整,电路中调整过的部分,如偏置电阻、RC滤波的取值等是否合理;

3、如果使用耳机通道,是否清楚SOC耳机通道的驱动类型。对比标案核查是否遗漏了隔直电容、佐贝尔电路等元件\网络,HPoutFB是否按照硬件设计指南的指导正确引出并连接等。

软件上,主要核对基本的软件配置是否正确,包括:

1、确认音频采样率、通道切换开关、通道数量等是否正确;

2、确认MIC与Lineout的单端差分选项是否与硬件保持一致;

3、排除测试中可能的算法干扰,例如重采样算法、EQ、DRC等,需要核对以上软件算法以及芯片硬件是否被意外使能;

4、确定模拟增益、数字增益的大小是否合理等。

经过基本的检查确定无误后,再针对问题的现象类型进一步排查。

功能异常的情况下,除了针对小系统的原理图设计进行检查,也需要针对外围电路,例如功放电路进行检查核对。同时软件部分需要着重检查DTS配置、功放GPIO配置、asound.conf等是否存在问题。

底噪异常时,软件上需要核查异常出现的场景都有哪些模块被打开,可以尝试关闭不必要的模块、应用,复测问题是否与这些相关。硬件除了小系统的原理设计,也要关注外设的原理设计是否正确,同时针对PCB要检查走线布局、接地、电源情况。可以参考硬件设计指南或附件进行排查。硬件检查没有发现明显差错时,也可以通过增大滤波电容、变更接地点、外挂电源、打开调试模式等手段帮助定位问题。(请注意,上述帮助定位问题的手段仅适用于调试与明确问题,不可以直接作为解决问题的方式,更不能未经评估直接导入量产。)

其它指标异常时,需要对测试的条件再度确认,例如播放测试中的音频文件是否正确,与规格中的测试方法和测试条件进行核对,排除测试方法差异引入的问题。依照底噪异常的方式检查确认走线、接地,同时通过示波器等工具排查测试异常时是否出现了波形的失真、削波等。

三,解决办法

请参考相应平台的硬件设计指南、标案原理图、SDK、以及附件的分析思路图。

通过上述流程与思路分析问题,调整原理设计,优化PCB布局,完善软件配置。

四,实例分析

对于外放播放音乐杂音问题,需要自上而下分层分析,可能原因存在于应用层(audio framework、audio service、audio hal)亦可能存在于驱动层(audio driver),甚至存在于硬件。

4.1 根本原因

针对Audio HAL进行分析,可能的原因有:

1、相关参数配置错误;

2、cedarSE音效参数配置错误;

3、代码流程存在死锁导致持续性杂音。

针对Audio Driver进行分析,可能的原因有:

1、控件配置异常;

2、寄存器配置异常;

3、dapm route上电时序异常。

4.2 解决办法

1、确认Audio HAL是否异常:

1.1 将hal层dump打开

setprop persist.vendor.audio.dump_data.in true

1.2 将pcm dump 拉出来作分析

/data/vendor/hardware/audio_d/in.pcm //hal层处理前

/data/vendor/hardware/audio_d/out.pcm //hal层处理后

1.2.1 对于杂音类问题,只需听pcm dump是否有杂音即可确认问题端发生在应用层,如果in.pcm已存在杂音,则问题可能存在于audio hal之前,如audio service、软件编解码器、或者音源本身存在杂音;如果out.pcm存在杂音,in.pcm正常,则问题可能存在于audio hal、cedarSE;如果in.pcm与out.pcm均没有问题,可往下继续分析;

1.2.2 对于升级后声音大小、音效变化类问题,同样是对比in.pcm与out.pcm,确认问题出现在哪一层,如果in.pcm与out.pcm与升级前一致,则可往下继续分析;否则问题端定位在hal层;

1.3 使用tinyplay工具,确认是否存在杂音、声音大小以及音效变化,如果确认存在问题,则问题端可定位在audio driver端;

1.3.1 对于audio driver导致的杂音问题,可参考:

排除应用层影响

1、准备tinymix和tinyplay工具,以及幅度为0的静音音频文件;

2、使用tinymix打开播放通路,如"SPK Switch"控件等(根据所使用声卡、声卡控件等操作;

3、在相对安静的环节下,使用tinyplay播放静音文件,确认是否有杂音。

若无杂音,表示驱动层以下无问题,则需确认应用层是否引入了杂音。若仍有杂音,则需进一步排查。

1.3.2 对于audio driver导致的升级后声音大小、音效变化类问题,可先使用tinymix对比升级前后的控件,是否有差异,如有差异,将控件设为升级前状态,再进行测试确认现象;如果控件没有差异,可在播放时,dump一下寄存器并作对比,将升级前后的寄存器dump上传到Aservice供进一步分析,如果没有差异,则需寄板子、上传原理图与位号图,进行进一步排查分析。

相关推荐
八角Z5 小时前
AI短视频创作实战心得:从玩具到生产力工具亲测
人工智能·机器学习·服务发现·音视频
私房菜6 小时前
Selinux 及在Android 的使用详解
android·selinux·sepolicy
一只特立独行的Yang7 小时前
Android中的系统级共享库
android
两个人的幸福online7 小时前
php开发者 需要 协程吗
android·开发语言·php
修炼者8 小时前
WindowManager(WMS)构建全局悬浮窗
android
xiaoshiquan12069 小时前
Android Studio里,SDK Manager显示不全问题
android·ide·android studio
Lstone73649 小时前
Bitmap深入分析(一)
android
一起搞IT吧10 小时前
Android功耗系列专题理论之十四:Sensor功耗问题分析方法
android·c++·智能手机·性能优化
王家视频教程图书馆11 小时前
横屏下的全屏视频 右边视频控制器被虚拟按键遮挡了,解决方式隐藏状态栏,竖屏后在恢复
音视频