1、./frameworks/base/media/jni
JAVA本地調用部分。編譯後產生的目標是libmedia_jni.so.
android_media_MediaPlayer.cpp: MediaPlayer 的JAVA本地調用部分。
它定義了一個JNINativeMethod(JAVA本地調用方法)類型的資料gMethods,
用來描述,介面的關聯資訊。
android_media_MediaRecorder.cpp: 定義了錄音的本地調用實現。
android_media_AmrInputStream.cpp: amr 編碼相關的本地調用實現。
android_media_MediaScanner.cpp: 媒體掃描相關的本地調用實現。
soundpool/android_media_SoundPool.cpp:定義了音頻系統的本地調用實現。
2、 ./frameworks/base/media/libmedia
./frameworks/base/include/media/
這裡為多媒體的的底層庫,編譯產生libmedia.so.這個庫處於android多媒體架構的核心
位置,它對上層提供的介面主要有MediaPlayer、MediaRecorder、MediaScanner等類.
android.meida.* 就是通過libmedia_jni.so 調用libmedia.so實現的介面實現的。
還需要注意的是MediaPlayerInterface.h 這個標頭檔,他定義了MediaPlayer的
底層介面。它主要定義了下面的類:
MediaPlayerBase:MediaPlayerInterface的抽象基礎類,裡麵包含了音訊輸出、
視頻輸出、播放控制等的基本介面。
MediaPlayerInterface、MediaPlayerHWInterface 繼承自MediaPlayerBase針對不同輸出作出的擴充。
3、 ./frameworks/base/media/libmediaplayerservice
這是多媒體的服務部分,編譯產生libmediaplayerservice.so.
MediaPlayerService.cpp 實現了一個名字為media.player的服務,MediaPlayer通過
IPC同其實現通訊,以建立合適的播放器。
在MediaPlayerService.cpp 會根據playerType的類型來決定建立不同的播放器。
現有的播放器類型有PVPlayer、MidiFile、VorbiPlayer三個播放器類,他們都是有繼承
MediaPlayerInterface得到,具有相同的播放介面。我們這裡可以通過繼承MediaPlayerInterface
的方法,實現增加新的播放器實現。