android多媒体分析(1)-整体架构

最近一个月在做android5.1的多媒体调试工作,根据自己跟源代码的理解和结合网上的一些资料做一些总结。

一、android多媒体结构图(上下文关系)
这里写图片描述

从文件角度看多媒体架构:从最上层到底层调用关系依次是apk、jar、.so。
apk就是图库,jar包是javaAPI,.so是C++代码。

二、android多媒体代码目录结构
android5.1媒体的相关代码都放到framework/av/的目录中,
其中视频相关的代码在media/下

|----- media   
|       |  
|       |-- libmedia   //一个服务端的代理,对应用层提供相关的接口,和服务端交互  
|       |  
|       |-- libmediaplayerservice //服务段 (分发器,交换机的作用,个人理解)  
|       |  
|       |-- libstagefright  //一个服务端的分支,支持工作(分流,解码,传输)  
|       |  
|       |-- mediaserver     //android多媒体后台核心服务进程
|       |  
|       |-- mtp           //文件夹操作媒体的相关东西  
|       |  

进一步看libstagefright目录

|-- stagefright  
|   |  
|   |-- codecs   //提供解码器实现  
|   |  
|   |-- colorconversion   //颜色空间转换  
|   |  
|   |-- foundation   //基本数据结构的实现  
|   |  
|   |-- httplive   //m3u8解析  
|   |  
|   |-- id3        // ID3 TAG解析(一般用于MP3格式的metadata容器)  
|   |  
|   |-- include    //基本头文件  
|   |   
|   |-- matroska   //matroska文件解析  
|   |  
|   |-- mpeg2ts    //mpeg2ts文件解析和数据获取一些处理  
|   |  
|   |-- mp4        //MP4的格式解析  
|   |  
|   |-- omx        //IOMX接口实现  
|   |  
|   |-- rtsp       //rtsp文件解析  
|   |  
|   |-- wifi-display //关于wifi的处理  
|   |  
|   |-- yuv         //YUV数据的处理  
|   |  
|   |-- AwesomePlayer //android核心播放器代码实现文件
|   |      

三、发展历史

因为现在android设备厂商都是用的自己的VPU硬件设备去解码(不用自带的软解,效率太低),所以对应 有hal层的实现,其实hal只是修改了libstagefright目录中的omx和component目录的相关代码,增加了自己的解码器组件。再单独新建了hal层目录。总体还是遵循stagefright框架的。

接下来聊一下android多媒体框架的发展史:
android2.3以前多媒体框架用的是opencore,现在改成了stagefright框架,其中两种框架都使用了openmax标准接口(简称omx),openmax是NVIDIA和KHRONOS公司推出的多媒体应用程序标准,共分三层:应用层、集成层、开发层。其中集成层用于引擎插件(解码器)。前面提到的compoment目录就是包含组件。

四、从进程线程角度看架构
结合图一,多媒体视频播放涉及到的进程主要有gallery、mediaserver、servicemanager、surfaceflinger。
其中mediaserver进程是整个多媒体的核心,里面包含多个线程运行(有audioflinger、mediaplayerservice、cameraservice、audiopolicyservice)。当然也涉及到进程间通信的binder问题。

后续会讲解细节

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值