正文

18.1 OpenMax系統(tǒng)結(jié)構(gòu)和移植內(nèi)容(5)

Android系統(tǒng)級(jí)深入開發(fā):移植與調(diào)試 作者:韓超


OpenMAL IL中一個(gè)組件的結(jié)構(gòu)如圖18-5所示。

圖18-5 OpenMAL IL中一個(gè)組件的結(jié)構(gòu)

組件的功能和其定義的端口類型密切相關(guān),通常情況下:只有一個(gè)輸出端口的,為Source組件;只有一個(gè)輸入端口的,為Sink組件;有多個(gè)輸入端口,一個(gè)輸出端口的為Mux組件;有一個(gè)輸入端口,多個(gè)輸出端口的為DeMux組件;輸入輸出端口各一個(gè)組件的為中間處理環(huán)節(jié),這是最常見的組件。

端口具體支持的數(shù)據(jù)也有不同的類型。例如,對(duì)于一個(gè)輸入、輸出端口各一個(gè)組件,其輸入端口使用MP3格式的數(shù)據(jù),輸出端口使用PCM格式的數(shù)據(jù),那么這個(gè)組件就是一個(gè)MP3解碼組件。

隧道化(Tunneled)是一個(gè)關(guān)于組件連接方式的概念。通過隧道化可以將不同的組件的一個(gè)輸入端口和一個(gè)輸出端口連接到一起,在這種情況下,兩個(gè)組件的處理過程合并,共同處理。尤其對(duì)于單輸入和單輸出的組件,兩個(gè)組件將作為類似一個(gè)使用。

3.Android中OpenMax的使用情況

Android系統(tǒng)的一些部分對(duì)OpenMax IL層進(jìn)行使用,基本使用的是標(biāo)準(zhǔn)OpenMax IL層的接口,只是進(jìn)行了簡(jiǎn)單的封裝。標(biāo)準(zhǔn)的OpenMax IL實(shí)現(xiàn)很容易以插件的形式加入到Android系統(tǒng)中。

Android的多媒體引擎OpenCore和StageFright都可以使用OpenMax作為多媒體編解碼的插件,只是沒有直接使用OpenMax IL層提供的純C接口,而是對(duì)其進(jìn)行了一定的封裝。

在Android2.x版本之后,Android的框架層也對(duì)OpenMax IL層的接口進(jìn)行了封裝定義,甚至使用Android中的Binder IPC機(jī)制。Stagefright使用了這個(gè)層次的接口,OpenCore沒有使用。

提示:OpenCore使用OpenMax IL層作為編解碼插件在前,Android框架層封裝OpenMax接口在后面的版本中才引入。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)