qcom660平台audio-ull-playback出现pop音

  1. 现象:打开皇室战争时,出现噪音
  2. 通过打log搜索“start_output_stream”发现走的是audio-ull-playback通路。
  3. low-latency-playback和audio-ull-playback这两种播放比较容易因为performance而发生pop noise,因为这两种播放方式的buffer比较小,FastMixer线程必须每4ms写一次数据,如果有其他更高优先级的线程或者IRQ把FastMixer 线程block住的话,就比较容易发生pop noise。
  4. 通过以下方法来确定是不是性能问题。
  5. (a) increase CPU to max:

    adb shell stop perfd //关闭perfd,避免代码去设置CPU频率
    adb shell "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
    adb shell "echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor" //这两个命令是把CPU频率设定到最高  

    (b)Disable LPM:
    adb shell "echo 1 > /sys/module/lpm_levels/parameters/sleep_disabled"                                                                                (c)Increase BIMC:
    adb shell stop perfd
    adb shell "echo performance > sys/class/devfreq/soc:qcom,cpubw/governor"

  6. 如果做完以上操作后,噪音消失,可以确定是性能问题,参考以下修改。
请参照如下修改:
--- a/configs/sdm660/audio_policy_configuration.xml
+++ b/configs/sdm660/audio_policy_configuration.xml
@@ -63,11 +63,6 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
- <mixPort name="raw" role="source"
- flags="AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_RAW">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
- </mixPort>
<mixPort name="deep_buffer" role="source"
flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@@ -307,25 +302,25 @@
<!-- route declaration, i.e. list all available sources for a given sink -->
<routes>
<route type="mix" sink="Earpiece"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="Speaker"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="Wired Headset"
- sources="primary
output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
+ sources="primary
output,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
<route type="mix" sink="Wired Headphones"
- sources="primary
output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
+ sources="primary
output,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
<route type="mix" sink="Line"
- sources="primary
output,raw,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>+ sources="primary
output,deep_buffer,direct_pcm,compressed_offload,dsd_compress_passthrough,voip_rx"/>
<route type="mix" sink="HDMI"
- sources="primary output,raw,deep_buffer,multichannel,direct_pcm,compressed_offload,compress_passthrough"/>
+ sources="primary
output,deep_buffer,multichannel,direct_pcm,compressed_offload,compress_passthrough"/>
<route type="mix" sink="Proxy"
- sources="primary output,raw,deep_buffer,multichannel,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,multichannel,direct_pcm,compressed_offload"/>
<route type="mix" sink="FM"
sources="primary output"/>
<route type="mix" sink="BT SCO All"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="USB Device Out"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="Telephony Tx"
sources="voice_tx"/>
<route type="mix" sink="voice_rx"
@@ -337,11 +332,11 @@
<route type="mix" sink="record_24"
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic"/>
<route type="mix" sink="BT A2DP Out"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="BT A2DP Headphones"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="BT A2DP Speaker"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload"/>
</routes>
</module>

猜你喜欢

转载自blog.csdn.net/qq_36247447/article/details/108170674