项目场景:
高通SM6450平台,微信预览播放POP音问题
问题描述
【预置条件】
【操作系统版本】 Android 14
【操作步骤】打开微信,录制后预览
【期望结果】无异常
【实际结果】视频预览有pop音
【问题概率】5/10
【详细信息】EVT
【对 比 机】红米A2无此问题,
原因分析:
1 日志分析
QXDM log:152E 存在POP音,但是这个POP音,不是由断续产生的, 看上去不是卡顿杂音。
Logcat
从logcat中并没有发现什么错误,POP音产生时候,adb logcat也没有特别的信息打印出来
Audio hal选用compres-offload-playback2 usecase
上层下发的flags是AUDIO_OUTPUT_FLAG_DIRECT,0x1 ,则Audio hal选用compres-offload-playback2 usecase,
下发的format 是0x1, 对应PCM_16_BIT
到这里其实还是没什么方向排查。。。不过测试神助攻
测试反馈:
1 只有微信应用才会出现这个问题
2 相同平台其他项目没有出现此问题
于是和其他平台日志对比发现:
对比机使用的是deep-buffer-playback usecase ,samplerate 是48khz
问题机使用的compres-offload-playback2 usecase, samplerate 是22.05khz
综上,怀疑是采样率或者usecase导致的问题
这一般联想到audio_policy_configuration.xml文件了
解决方案:
将问题机的direct_pcm中的16bit定义去掉。如下
经验证,由于direct_pcm不支持16bit了,上层下发0x8 ,audio hal采用了 deep-buffer usecase和对比机一致,问题得到解决。
总结:
对于compress-offload-playback2 (direct_pcm flag) usecase,解码是发生在APPS,而不是ADSP,这一点和deep-buffer相似,只支持44.1khz和48khz, 不支持22050,所以出现了问题,产生POP音,但是和compress-offload-playback 是不同的,它是在ADSP中解码,所以对于一些非卡顿类POP音,注意下是否采用了不常见采样率。