種種原因,我要簡單分析乙個android
中built-in
的音訊均衡器
musicfx
。重點是它的預設值的來歷。網上很少有文章講了這個的除了這篇《
com.android.musicfx設定音效流程
-- 從
到audioflinger
》。注:android
系統版本為
4.2.2_r1。
到audiofliger
的終點是在android_media_audioeffect.cpp(之前版本在是audio_media_audioeffect.cpp)中的
這裡呼叫了audioeffect.cpp
中的getparameter().
最終進入audioflinger:
audioflinger如何對這個命令進行的處理
android音訊系統之
audioflinger(一)
和android原始碼分析:
audioeffect
。前者呼叫到了:
status_t status = (*meffectinte***ce)->command(meffectinte***ce,
cmdcode,
cmdsize,
pcmddata,
replysize,
preplydata);
這個meffectinte***ce
是何方神聖呢?
中間出現了斷層,直接搜尋effect_cmd_get_param.
可以看到呼叫了equalizer_getparameter,這個函式的原型為:
這和應用程式中的api
就對應起來了,獲取頻段的增益是
返回了pcontext->pbundlecontext->bandgaindb[band] * 100;
來看看這個值有誰在設定。
原始碼中開啟log
,在應用上使能
equalizer
了 就會有輸出了,但是先暫停。
1) 通過檢視以audioeffect
為tag
的日誌,可以判斷是先獲取的增益引數後設定的引數。
2) 類別為normal。
上邊是乙個參考,真正直到作用是下面那個eqnb_5bandsoftprosets。
5段分別為:
50hz/230hz/910hz/4khz/14khz.
以下是將
230hz
調整為-10
的實驗截圖:
總結:研究這個musicfx
是源於裝置上揚聲器在某些頻段增益過高導致啪啪響聲(我現在還不能使用專業的語言來形容這種現象),就準備測試使用軟體
eq來解決這個問題。現在
eq的預設值也找到了,但是這終究是軟體實現的,使用軟體實現來解決硬體問題我覺得是很不妥當,不過我也藉此機會了解了整個流程和預設值的位置。
音訊EQ 均衡器
我們通常所說的人聲,歌聲以及樂聲都是乙個復合音,也就是由聲音的基音和一系列的泛音所構成的。這些泛音都是基音頻率的倍數,物理學中叫分音,電聲學中叫諧波,中則把它們稱做泛音。可以說,泛音對音色的特性有著非常重要的影響。它們的數量以及幅度的不同構成音色的頻率特性曲線。這條曲線就體現了音色的表現力。一般來說...
Android 音訊均衡器,可通過拖動調節音訊EQ
2.3之後,google 為mediaplayer 類新增了eq支援,如果你需要使用這個eq功能,有兩點需要注意,分別為如下 為了使應用程式能夠支援波段變化,我們需要重新定義乙個view物件,在ondraw 方法畫頻譜,如下 class visualizerview extends view pub...
負載均衡器
負載均衡器f5 負載均衡是高可用網路基礎架構的關鍵元件,通常用於將工作負載分布到多個伺服器來提高 應用 資料庫或其他服務的效能和可靠性。負載均衡器可以處理什麼樣的請求?負載均衡器的管理員能主要為下面四種主要型別的請求設定 規則 負載均衡器如何選擇要 的後端伺服器?負載均衡器一般根據兩個因素來決定要將...