[RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题

【[RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题】笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述[RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题相关的知识,希望能为你提供帮助。
本文转载自:http://blog.csdn.net/kris_fei/article/details/72783843?locationNum=9& fps=1
Platform: Rockchip
OS: android 6.0
Kernel: 3.10.92

现象:
录音使用1K正弦波作为数据源做测试,然后比较HAL和APP层dump出来的pcm数据,发现到APP层之后相对HAL层的音量会小很多。

原因:
后来发现是因为在HAL层有个叫SPEEX的降噪算法,它会固定的信号有衰减,因此音量变小了。RK文档其实也做了说明了:
使用的是 speex 的开源算法库,录音默认开启降噪算法,可以将部分噪声过滤,但是同时也会把背景声音也会过滤一部分。同时如果输入的信号是固定的信号比如 1K 正弦波信号,因为算法是针对的是语音信号,对固定信号有衰减的作用,因此 1K 正弦波这则比实际增益小很多。

关闭方法:
diff --git a/tinyalsa_hal/audio_hw.h b/tinyalsa_hal/audio_hw.h
index b7f1f6e..b43e400 100755
--- a/tinyalsa_hal/audio_hw.h
+++ b/tinyalsa_hal/audio_hw.h
@@ -106,7 +106,7 @@ int PCM_CARD_SPDIF = 2;
  #define MAX_SUPPORTED_CHANNEL_MASKS 2
 
  #ifndef RK3368
-#define SPEEX_DENOISE_ENABLE
+//#define SPEEX_DENOISE_ENABLE^M
  #endif

    推荐阅读