LibStageFright AudioPlayer AwesomePlayer MEPG4Writer (default) AMRWriter MediaSource DataSource AwesomeRender SoftWareRender OMXCodec MediaExtractor OMXClient SoftWare Codec AwesomeNativeWindowRenderer OMX OMXMaster 图1 LibStageFright内部架构图 MediaPlayerService Get Audio StagefrightRecorder StagefrightPlayer OMX Output LibStageFright AwesomePlayer AudioPlayer OMXClient OMX MEPG4Writer AMRWriter SoftWareRender AwesomeNativeWindowRenderer OMXMaster AudioFlinger SurfaceFlinger EGL Hardware libstagefrighthw 图2 LibStageFright与外部接口调用关系图
MediaPlayer.java Jni_android_media_MediaPlayer MediaPlayeService MediaPlayer StagefrightPlayer AwesomPlayer 图3 MediaPlayer框架
MediaRecorder.java Jni_android_media_MediaRecorder MediaRecorder MediaPlayerService MediaRecorderClient StagefrightRecorder AudioSource CameraSource AudioRecord Camera 图4 MediaRecorder框架
libmedia和libmediaplayerservice分析
1) libmedia目录在frameworks/base/media/libmedia,为多媒体底层库,这里面的内容被
编译成libmedia.so在整个MediaPlayer运行中属于Client部分
1.libmedia.so处于核心位置,主要实现对上层以及下层的接口类。对上层主要提供MediaPlayer类的接口,类libmedia_jni.so通过调用MediaPlayer类,提供对JAVA的接口。 2.另外一部分则通过Binder机制和libmediaplayerservice.so进行通讯。
3.对stagefright,则定义了标准的IOMX接口。 Stagefirght通过该接口调用OpenMax插件。
2)libmeidaplayerservice目录在frameworks/base/media/libmediaplayerservice为多媒体
服务部分,文件为mediaplayerservice.h和mediaplayerservice.cpp,这部分内容被编译成libmediaplayerservice.so在整个MediaPlayer运行中处于Server部分
这部分通过继承libmedia.so的类,实现服务器的功能。对mediaplayer整个流程进行管理调度。
通过stagefrightPlayer和stagefrightRecorder,调用到stagefirght框架中的音视频播放与录制功能。
JAVA程序 Java调用关系 Libmedia_jni.so 调用Media客户端 Libmedia.so Libmediaplayerservice.so MediaPlayerInterface Libstagefright.so 图5 MediaPlayer各个库之间结构图
Java程序 Android_media_mediaPlayer IMediaPlayerClient IMediaPlayerClient IMediaPlayerService IMediaPlayerService BnMediaPlayerService MediaPlayer MediaPlayer IMediaPlayer MediaPalyerService::Client MediaPlayerService awesomePlayer AwesomePlayer MediaPalyerService MediaPlayerInterface MediaPlayerBase MediaPlayerInterface BnMediaPlayerClient BnMediaPlayer IMediaPlayer Client Server 图6 整个Media库调用关系图
相关推荐: