android多媒体框架

android多媒体框架

ID:9851615

大小:517.51 KB

页数:21页

时间:2018-05-11

android多媒体框架_第1页
android多媒体框架_第2页
android多媒体框架_第3页
android多媒体框架_第4页
android多媒体框架_第5页
资源描述:

《android多媒体框架》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、android多媒体框架讲解人:罗彧成2010年12月android体系结构媒体层结构opencore基本概念a、目录结构b、编译c、调度器(OsclExecScheduler)d、节点(Node)e、端口(Port)f、消息通讯(Msg)Android体系结构媒体层结构媒体层结构Android-MediaPlayer上层应用程序使用JAVA语言编写,实现逻辑处理;JAVA程序通过调用底层媒体库来实现具体的音视频文件和网络视频播放;JAVA程序通过JNI接口实现对底层媒体库libmedia.so的调用;MediaPlayer在运行的时候,可以大致上分成Client和Server两个部分,它

2、们分别在两个进程中运行,它们之间使用Binder机制实现IPC通讯,图中libmediaplayerservice.so是服务端的实现库。对于视频文件的播放,MediaPlayer通过调用Opencore提供的功能媒体播放功能来负责实现;在opencore中负责媒体文件格式解析、音视频数据的解码、以及媒体数据的输出;Opencore通过调用SurfaceFlinger的接口实现视频数据的显示;通过调用AudioFlinger的接口来实现音频数据的回放;媒体层结构媒体播放器功能MIDIFile-Player主要负责midi音频文件的播放(*.mid、*.midi、*.smf、*.xmf、*.

3、imi、*.rtttl、*.rtx、*.ota)Vorbis-Player主要负责ogg格式的音频文件的播放(*.ogg、*.oga)PVPlayer负责除以上2种播放器之外的所有媒体的播放媒体层结构-目录结构目录名代码描述media/java存放java层媒体相关代码media/jni媒体层jni接口代码库media/libmedia媒体层client端代码库media/libmediaplayerservice媒体层server端代码库media/mediaserver媒体层服务端应用程序libs/audioflinger媒体层audioFlinger代码库libs/surfacefl

4、inger媒体层surfaceFlinger代码库注:以上目录均是基于frameworks/baseMediaPlayer-类层次结构图MediaPlayer类说明1、上层的JAVA程序通过JNI调用到底层C++代码中的MediaPlayer类来实现媒体流播放;2、MediaPlayer类首先通过IServiceManager的getService接口获取一个名称为“media.player”的服务,然后通过调用IMediaPlayerService的create接口创建一个mediaplayer播放器,之后所有的操作均通过新创建的这个mediaplayer播放器进行处理,接口为IMedi

5、aPlayer;3、图中所有的以BpXXXX的类均是一个代理类,负责将客户端的请求通过Binder机制发送到服务端实现消息功能的转发,在服务端都有对应的一个BnXXXX的子类负责实现具体的功能;4、最终的媒体流的播放是通过MediaPlayerInterface接口,调用底层的opencore库来实现的;opencore-目录结构目录名说明android/存放opencore与android系统接口代码主要是一些MIO的实现代码fileformats/文件格式解析与合成相关代码nodes/opencore节点源码oscl/系统api接口库pvmi/opencore媒体框架代码build_c

6、onfig/编译makefile文件codecs_v2/编解码相关代码,其中的omx目录是openMAX的实现代码engines/媒体相关引擎实现代码(player,author,2way)extern_libs_v2/openMAX头文件pvplayer.cfgopencore配置文件,配置编解码库opencore-编译编译opencore的代码需要到opencore的根目录下执行mm命令编译,不能在opencore的子目录下执行mm编译。重新编译所有代码:find.-name“*.cpp”–oname“*.h”

7、xargstouchopencore-调度器OsclExecSchedul

8、er是opencore中一个用户级的调度器,其主要功能如下:A、该调度器负责实现opencore主线程循环B、调度需要运行的活动对象(ActiveObject)C、负责对象的定时处理D、在没有对象需要运行的时候,自动进入休眠状态注:OsclExecScheduler本身并不创建任何线程opencore-节点(Node)在opencore中使用Node来完成某个指定的功能,例如:文件格式解析(ParseNode),编解码节

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。