android多媒体分析(1)-整体架构
2015-12-26 14:28
471 查看
最近一个月在做android5.1的多媒体调试工作,根据自己跟源代码的理解和结合网上的一些资料做一些总结。
一、android多媒体结构图(上下文关系)
从文件角度看多媒体架构:从最上层到底层调用关系依次是apk、jar、.so。
apk就是图库,jar包是javaAPI,.so是C++代码。
二、android多媒体代码目录结构
android5.1媒体的相关代码都放到framework/av/的目录中,
其中视频相关的代码在media/下
进一步看libstagefright目录
三、发展历史
因为现在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问题。
后续会讲解细节
一、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问题。
后续会讲解细节
相关文章推荐
- 产品经理应该掌握的信息架构知识
- 大型网站架构的演变
- 用小米路由搭建外网可访问的个人网站
- sympy官方文档网站无法打开问题解决
- 短信API 短信接口说明文档
- 微服务化架构演进与人员组织
- 面向服务与微服务架构
- java处理高并发高负载类网站的优化方法
- web网站服务2
- 2014系统架构师大会随感
- XMPP的一些资料网站
- 《FPGA全程进阶---实战演练》第八章之程序架构格式说明
- Android 控件架构与View的绘制
- VMware Vsphere高可用性(HA群集)
- 基于ActiveMQ的消息中间件系统逻辑与物理架构设计详解
- 网站优化与安全
- 50个提高PHP网站程序执行效率的技巧
- 进销存、内容管理、网站建设、物流相关系统
- 图标资源网站
- 谈谈网站的设计利与弊