[Linux Audio Driver] QACT音效處理

隨便寫篇音頻tuning的文檔,這是前年實習的時候寫的,恍如昨日。

1.概述

QACT(Qualcomm Audio Calibration Tool),高通音頻處理工具,本文會介紹常見的acdb設備id以及以喇叭和麥克爲例,介紹QACT中常見的音效處理模塊。

2.常見acdb設備id介紹

2.1新增音頻設備

若要新增一個音頻設備的話,首先在hardware/qcom/audio/hal/msm8916/platform.h裏面的enum裏面增加一個枚舉常量,然後在hardware/qcom/audio/hal/msm8916/platform.c裏面的device_table裏面增加設備的名字,然後在acdb_device_table增加它的acdb的id。

在這裏插入圖片描述
打開QACT工具,依次點擊ToolsDevice Designer,隨便點擊一個設備,後面的進制選擇dec十進制顯示,可以看到這個設備的acdb設備id是41,每一個音頻設備的id都是唯一的,如果在platform.c裏面使用了其他設備的id,那麼就代表使用了其相應的XML配置,即音頻數據流的routing與另一個設備是一致的。
一般我們新增一個音頻設備是使用不同的acdb設備id的,可以點擊如上圖所示的Add+按鍵,之後選擇一個未被使用過的acdb設備id即可,如何判斷有沒有使用過,這個id在platform.c文件裏面可以確定。

2.2設備ID與問題定位

常見的acdb設備id有如下幾個,雙麥(41),喇叭(14),耳機(10)。最近處理過一個781的喇叭問題,就是一直播放沒有聲音,但是其routing配置也根據硬件電路,修改OK,之後執行命令:logcat | grep acdb,然後播放音樂。

在這裏插入圖片描述

我們可以看到它對應的acdb設備id是10,而10如上面所示,是耳機對應的device id,所以這裏的問題定位爲:耳機是默認插入的。
我們需要在文件路徑:kernel/msm-3.18/arch/arm/boot/dts/qcom/msm8953-audio.dtsi裏面調整下"qcom,msm-mbhc-hphl-swh"的屬性,這個屬性有兩個值,0代表常閉,即左聲道和檢測腳在耳機沒有插入時短接的。反之,1代表常開,即左聲道和檢測腳在耳機插入時才能短接起來,這裏我們把這個屬性調整爲1,問題迎刃而解。

3.音效處理模塊

QACT工具功能非常強大,可以處理很多噪聲、通話聲音異常、音頻設備功率等問題,這裏主要以喇叭和麥克爲例,介紹幾個功能模塊。

在這裏插入圖片描述
由於喇叭輸出設備,我們先切換到Audio Playback,然後找到SPKR_PHONE_SPKR_MONO,這個是喇叭對應的設備名,以下分別介紹GAIN增益控制模塊;DRC,動態範圍控制;IIR,頻響濾波器還有ECNS,降噪模塊。

3.1增益模塊

在這裏插入圖片描述

通過調整這個模塊的增益參數,我們可以對喇叭的功率進行微調,粗調肯定是在mixer_paths_qrd_sku3.xml裏面進行,通過連接濾波器小板,選擇差分輸出的方法就OK.

3.2 DRC模塊

在這裏插入圖片描述

我們將顯示窗口替換爲:Spec View,一般No of Bands選擇三條線,我們可以在可以模塊中調整線條的斜率,突變點的位置等等,主要實現下面三種功能:
把高於標準增益信號往下壓;把低於標準,但是靠近標準的增益信號往上擡;把很低的噪聲信號往下壓。

3.3 IIR模塊

在這裏插入圖片描述

如果有些特定頻率的音頻信號,過高或者過低的話,我們可以針對頻率點微調增益。

3.4 ECNS降噪模塊

在這裏插入圖片描述

由於麥克是輸入設備,所以切換到Audio Recording,Device Use case切換到HANDSET_MIC_ENDFIRE_FLUENCEV5(這對應的是雙麥,device id是41)。這個降噪模塊,高通有一套標準參數,我們一般可以使用那個參數。
另外綜合上面的信息,若要解決噪聲問題,還可以上面所述的IIR修改個別頻率點,或者DRC把遠低於標準的信號壓下去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章