標籤:android 多媒體 系統 結構 業務
Android多媒體系統的結構和業務
請支援原創,尊重原創,轉載請註明出處:http://blog.csdn.net/kangweijian(來自kangweijian的csdn部落格)
多媒體系統的宏觀結構
- 多媒體的Java類(Java Class of Media)
- 其所實現的Java包是android.media,實現了mediaplayer和mediarecoder等幾個重要的類
- 多媒體部分Java本地調用部分(JNI)
- 這部分是Java類和C++本地代碼的介面,編譯成目標是libmedia_jni.so
- 多媒體本地架構(libmedia)
- 多媒體在本地部分的架構在media庫中進行了定義,這部分內容被編譯成庫libmedia.so
- 多媒體的服務部分(Media Service)
- 這部分內容是繼承libmedia的實現,被編譯成庫libmediaplayerservice.so
- 這部分是一個可執行程式,用於啟動一個多媒體的守護進程。與libmedia在處理序間通訊
- 多媒體的實現部分
- PacketVideo的OpenCore在Android系統中作為多媒體部分的實現來使用,繼承了media庫中定義的介面,其核心是媒體的播放和錄製,分別由PVPlayer和PVAuthor來實現。
多媒體系統的整體業務結構
從多媒體應用實現的角度看,多媒體系統的整體業務結構主要包括兩方面的內容
1. 輸入/輸出環節(音頻、視頻未經處理資料流的輸入輸出系統)由硬體抽象層(HAL)實現
2. 中間處理環節(檔案格式處理環節和編解碼環節)主要由PacketVideo的OpenCore實現。
多媒體系統各層次設計的模組
- 多媒體部分的Java應用程式層
- 在Android中預置的與多媒體相關Java應用程式套件組合主要有3個:Music包,提供音頻瀏覽、音頻播放器等功能;SoundRecorder包,提供錄音機功能;Camera包,提供照相機、攝像機、視頻播放器、媒體瀏覽、映像查看等方面的支援。
- 多媒體部分的Java架構層
- 多媒體部分的Java架構層提供了對多媒體應用程式的支援,主要包含在android.media包中,包含了媒體播放、媒體錄製、媒體元資訊、媒體掃描等方面的功能。此外,android.hardware.Camera提供了對照相機應用的支援;android.Wiget.VideoView類是一個整合類,通過調用媒體播放器和android.View.SurfaveView類可以構建一個視頻播放的UI元素,該元素可以被上層更方便地調用。
- 本地代碼層
- 多媒體本地代碼層是多媒體系統的重點。libmedia庫提供多媒體部分的本地架構,OpenCore提供多媒體核心功能的實現,多媒體服務部分作為多媒體系統中介層。多媒體坌也涉及音頻、視頻的輸入/輸出環節,這部分內容設計SurfaceFlinger、AudioFlinger、照相機服務,以及音視頻輸入/輸出環節的幾個硬體抽象層。
- 多媒體的驅動部分
- 多媒體的驅動部分涉及Linux核心中的內容,主要負責提供輸入/輸出環節的驅動程式,以及硬體編解碼的驅動程式。通常來自不同晶片商的晶片這部分的差別非常大,但支援Android的具體晶片還可以通過提供相應的驅動適配部分以供與OpenCore系統介面,將硬體轉碼器整合到系統中。
請支援原創,尊重原創,轉載請註明出處:http://blog.csdn.net/kangweijian(來自kangweijian的csdn部落格)
《Android系統原理及開發要點詳解》筆記 by2015.2.23晚
Android多媒體系統的結構和業務