1. Media Framework 层次

(1) 应用层

Music, VideoPlayer

(2) JAVA层

MediaPlayer : frameworks/base/media/java/android/media/MediaPlayer.java

(3) JNI

JNI_MediaPlayer -- libmedia_jni.so

frameworks/base/media/jni/android_media_player.cpp

(4)Server Proxyer

libmedia -- libmedia.so

frameworks/av/media/libmedia/MediaPlayer.cpp

(5) Server

libmediaplayerservice -- libmediaplayerservice.so

frameworks/av/media/libmediaplayerservice/

(6) Protocal

HTTP / RTSP / HTTPLive

(7.1)Stagefright

libstagefright -- libstagefright.so

frameworks/av/media/libstagefright/StageFrightPlayer.cpp

(7.2) Nuplayer


PS:

流媒体调用NuPlayer,本地播放调用stagefright,stagefright会调用AwesomePlayer相应的接口,最后调用NuPlayer。

按照目前的趋势,之后NuPlayer将会完全取代AwesomePlayer。


2. MediaPlayer Classes Structure

接口定义:

IMediaPlayerService.h

IMediaPlayerClient.h

MediaPlayer.h

框架实现:

MediaPlayer.cpp

MediaPlayerService.cpp

MeidaPlayer的具体功能在PVPlayer(库 libopencoreplayer.so)中的实现。




3. StageFright

StageFright是处理视频的模块:libstagefright,其核心未AwesomePlayer。


1.mediaPlayerservice调用Stagefright相应的接口

2.Stagefright调用AwesomePlayer相应的接口

3.AwesomePlayer调用OMXCode读取ES数据,并且进行解码的处理

4.OMXCodec调用MediaSource的read函数来获取音视频的数据

5.OMXCodec调用Android的IOMX接口,其实就是Stagefrightde中的 OMX实现

6.OMX调用OMXMaster,而OMXMaster调用OMXPluginBase的接口,这里也可以获取外部的Codec的插件,最终调用对应的解码组建来完成解码,不同解码组件不太相同,后面会做介绍

7.解码完成后,通过OMXcodec返回的裸码流数据会在Awesomeplayer中调用Render模块,实现渲染,从而给用户提供了画面





更多相关文章

  1. Android开发中WebView与js互相调用
  2. Quick_Cocos2d_x V3.3 Protobuf Android
  3. FregServer进程,获取ServiceManager代理对象
  4. 【翻译】(8-补丁1)Android接口定义语言(AIDL)
  5. 2011.07.19——— android intent 传递list或者对象
  6. Android应用程序键盘(Keyboard)消息处理机制分析(26)
  7. 【Fragment】 Android(安卓)Fragment生命周期详解(图文)
  8. Qt for Android获取手机序列号
  9. android之wifi体系架构源码流程分析

随机推荐

  1. 系出名门Android(4) - 活动(Activity),
  2. Android 自动编译、打包生成apk文件 2 -
  3. android UI开发及常用控件
  4. android看不见main函数怎么办?程序异常了,
  5. Android ANR
  6. Android开发常用代码片段(一)
  7. Android电池控制的检测和修改
  8. Android基础分析目录
  9. 高级组件之自动完成文本框
  10. Android+Jquery Mobile学习系列(5)-SQLit