Android音頻架構性能分析

Android系統迅速崛起,超越iOS和Symbian成爲第一大智能設備操作系統,它的佔有率還有迅速擴張的趨勢,將有大量的多媒體設備採用這個系統,那麼Android是否適合作爲影音設備的操作系統使用呢?我們今天就來了解一下Android的音頻架構。

\

  Google Android

Android 基於Linux,我們先來了解一下Linux的特點。Linux使用ALSA作爲其音頻架構,其全稱Advanced Linux Sound Architecture,即高級Linux聲音架構的意思,在2.6核心之後,ALSA成爲了Linux系統默認的音頻子架構。取代了之前的OSS Open Sound System,開放式聲音系統。

\

  Linux ALSA音頻架構示意

ALSA並不太好理解,它首先是一個驅動庫,包含了大量的聲卡設備的開源驅動,並提供了核心層API與ALSA庫通信,而ALSA庫則是應用程序訪問和操控音頻硬件的中間層,這個中間層有標準接口,開發者可以無須考慮硬件差異性進行開發,它對提升開發效率是大有幫助的。ALSA可以向下兼容OSS,因爲OSS已經被淘汰,其兼容的工作模式不再討論。

\

  Android 系統下的ALSA庫文件

這個體系被繼承到了Android當中。在Android2.2[含2,2]之前,系統文件夾中能找到一個LibAudioALSA.so的文件,這就是ALSA庫文件,其他應用程序調用它,與聲卡設備進行指令和數據通信。Android音頻架構與Linux的並無本質區別。

在桌面版本的Linux當中,爲了兼容各類聲卡,Linux也設置了一個SRC[Sample Rate Converter,採樣頻率轉換]的環節,噹噹前採樣率低於48kHz時強制SRC到48kHz輸出。這個SRC環節位於ALSA的插件模塊中的混音器部分。Android針對這個進行了改進。

Android增加了一個AudioFinger,這個可以簡單的理解爲Android的ALSA音頻子系統的標準化的插件模塊,它包含了AudioMixer[混音器]、AudioResampler[重採樣]等子模塊,AudioResampler即我們理解的SRC,Android換了一個新名稱而已。針對SRC,Android做了改進,但改進並不是以去除SRC爲目的,而是修改了默認的輸出頻率,Android的SRC目標採樣率爲44.1kHz,非該值的採樣率都將SRC處理。例如播放48kHz採樣率的信號,輸出的最終是44.1kHz,這對音質將產生負面影響。這個可以通過測試證明。

\

  Meizu 魅族 M9 智能手機-頻率掃描,錄音端增益20dB

\

  Meizu 魅族 M9 智能手機-48kHz頻率掃描,錄音端增益20dB

\

對比這一組結果就能看出SRC對音質的破壞性。這問題不只是魅族 M9存在。幾乎存在於所有的Android設備當中。

\

  Huawei 華爲 U8800 智能手機-48kHz頻率掃描

\

  Lenovo 聯想 樂Pad 平板電腦-48kHz頻率掃描

\

  Malata 萬利達 Zpad T8 平板電腦-48kHz頻率掃描

ALSA是一個針對Linux 桌面版本設計的音頻架構,它實際上是不適合智能終端設備的,起碼裏面大量的開源驅動代碼是可以去除的,對與Android來說,這些都是廢代碼。從Android2.3起,啓用了一個新的音頻架構。它放棄了一直使用的ALSA架構,因此係統文件夾中,也不再有LibAudioALSA.so這個文件。

\

  Android2.3的系統文件夾下已經沒有了ALSA庫文件

\

  Android 2.3後的音頻架構示意

Android2.3起,架構已經做了修改,在針對內部代碼進行了優化,去除了冗餘代碼,理論上讓系統能變得更加高效,可以將新架構理解爲一個精簡的或者爲智能終端設備定製的ALSA架構。遺憾的是,它同樣存在SRC嚴重劣化的問題,通過測試可以證明。

\

  HTC HD2 @Android 2.3 智能手機-48kHz頻率掃描

測試可以發現,Android 2.3的新架構對音質起不到正面作用。

\

  ASUS 華碩 Eee Pad Transformer TF101 平板電腦-48kHz頻率掃描

Android 3.0專門爲平板電腦設計,影音體驗變得更加重要了,是不是新系統在音質方面會有新的的進步呢,測試結果依然是令人失望的。

Android系統將採樣率同一爲44.1kHz輸出,這造成了諸多限制,它將無法實現96kHz、192kHz高清音頻節目的良好回放,大量視頻節目源自DVD或者藍光碟,其採用率多爲48kHz,Android設備在回放這些視頻節目時,音質也將大打折扣。

理論上軟件SRC可以通過更換算法來實現音質提升,但卻不太現實,智能終端所採用的CPU多爲ARM,ARM芯片的浮點運算力有限,而SRC需要大量的浮點運算的資源,即便有了高質量的SRC算法,其運算也是以犧牲設備性能和耗電量爲代價的,實用性差。

從Android的音頻架構及流程分析,可以認爲,播放44.1kHz採樣率的音樂節目時,不會引發SRC,音質因此可以獲得保證,理論上確實如此。但它同樣存在問題,不管是之前的ALSA架構還是Android2.3之後改良的架構,其驅動庫都位於核心層,也就意味着音頻設備廠商、用戶無法象PC平臺那樣安裝驅動來改善音質。實際測試也表明,Android設備音質普遍偏差,Soomal有大量測試可以證明。

我們再把目光投向iOS,iOS非常封閉,我們甚至無法獲知其架構的具體構成,但iOS設備不存在硬件設備多樣性的問題,因此要實現更好音質也會更加簡單。iOS可以實現針對性的開發和改良,以實現更好的音質。實際情況也是如此,目前爲止,還沒有一款Android設備的音質可以媲美任意一款iOS設備,這種差距,我們認爲不是來自硬件,而是操作系統。

Android音頻架構的侷限性也使得其難以成爲優質的影音平臺,如果你希望設計一款基於Android的高清影音播放器,那麼首先需要做的不是設計硬件,而是去修改現有架構的不足,或者乾脆設計一個專用的架構來取代Android的通用架構。從源代碼分析,Android和原生的Linux底層能支持各種採樣率,開源也使得其具有改造基礎,因此,在技術實力強勁的公司手裏,Android也可以烏雞變鳳凰。

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