Android OpenMAX(一)漫谈
在开始正式的学习前,我们先来聊一聊Android音视频开发中的一些问题、感受与想法。(有一点要事先说明,我的问题与答案、想法并不一定正确,请读者带着审慎的思考来阅读,后续的文章也是一样,希望读者边阅读边思考,看到错误可以指出让我改正,如有问题也可以提出一起讨论。)
为什么要有Android OpenMAX?
- Android系统可以跑在多种类型的设备上,比如说手机、电视、平板或者是现在的车机上,这些设备会有不同的芯片,手机用的比较多的是海思、高通、联发科,电视见的比较多的是AML、RTK,这些芯片厂商会有自己编解码器的实现(VPU API),Android作为一个通用的平台为了调用不同芯片的VPU API引入了OpenMAX框架,各大厂商实现Android OpenMAX框架提供的接口之后,开发者就可以用统一的接口使用硬件编解码了。
Android OpenMAX(OMX)和OpenMAX有什么异同?
- 在网上搜寻资料,一般介绍OpenMAX框架会包含三层,自上而下分别是OMX AL层、OMX IL层、OMX DL层,每一层都定义有一套标准的API,但是在Android中只用到了IL层的部分并且做了部分裁减。
OMX IL层包含哪些内容呢?
- 简单来讲,OMX IL层定义了
编解码组件的结构(我们应该如何实现OMX组件,一个OMX组件包含哪些东西)、组件的调用接口(我们应该如何获取、管理、调用、控制OMX组件)。
- 简单来讲,OMX IL层定义了
播放器可以分为如下几个部分:IO、Demux、Control、Decoder、Render,一般来说IO和Demux可以看作是一部分,Control用于控制IO-Demux、Decoder、Render协同工作,数据在三个组件之间来回流转,所以我觉得播放器控制,实际指的是Buffer流转的控制,Buffer传递方式的控制。
回到Decoder中来,我们在看ACodec、OpenMAX代码时可能会感觉写的十分复杂,这是因为考虑了非常多的情况,以Buffer传递方式为例:
- 对于普通Input buffer或者是普通Output Buffer,传递给Decoder时用共享内存可以减少Buffer的拷贝,共享内存可以在ACodec这一层分配,可以由OMX组件分配;
- 对于需要加密的Secure Input Buffer,Buffer由OMX组件分配并且将Buffer Handle回传给ACodec使用,本质上是一块共享内存,只不过是加密的物理内存;
- 如果需要渲染到Surface上,那么可以直接将解码后的数据直接存储到graphic buffer上,graphic buffer也是一块物理共享内存,ACodec与OMX组件之间的Buffer传递需要通过Fence和Handle来完成。
input/output buffer有多种类型,分配方式和传递方式也是各不相同,所以看代码只看流程是很难理解实现原理的,我们要知道Buffer是从哪儿分配的,从哪里来又到哪里去,不同状态下是如何控制的。
最后,也是非常重要的一点,我们还需要对音视频的基础知识有所了解。
目前就想到这么多,后续如果有想到其他内容会继续补充。
Android OpenMAX(一)漫谈的更多相关文章
- android openmax hardware decoder 整合记录
欢迎访问我的blog:http://blog.thinkinside.me 关于android中openmax中hardware decoder的调用中,整合过程比较简单.主要是对OMXCodec的封 ...
- Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍O ...
- Android多媒体开发-- android中OpenMax的实现整体框架
1.android中用openmax来干啥? android中的AwesomePlayer就 是用openmax来做(code)编解码,其实在openmax接口设计中,他不光能用来当编解码.通过他的组 ...
- Android中openmax实现框架
OMX中 OMXNodeInstance 负责创建并维护不同的实例,这些实例是根据上面需求创建的,以node作为唯一标识.这样播放器中每个OMXCodec在OMX服务端都对应有了自己的OMXNodeI ...
- android中OpenMax的实现【3】OMX中主要成员
原文 http://blog.csdn.net/tx3344/article/details/8117908 通过上文知道了,每个AwesomePlayer 只有一个OMX服务的入口,但是Awesom ...
- android中OpenMax的实现【2】AwesomePlayer中openmax的入口
AwesomePlayer 中有个变量 OMXClient mClient; 让我们看看 OMXClient class OMXClient { public: OMXClient(); stat ...
- Android多媒体开发-- OpenMax IL简介
1.openmax 简介 http://www.khronos.org/openmax/ OpenMax是一个多媒体应用程序的框架标准,由NVIDIA公司和Khronos在2006年推出. OpenM ...
- 漫谈android系统(4)bring up panel
点击打开链接 版权声明: 作者:alex wang 版权:本文版权归作者和CSDN共有 转载:欢迎转载,为了保存作者的创作热情,请按要求[转载],谢谢 要求:未经作者同意,必须保留此段声明:必须在文章 ...
- 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(原创)
如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要.可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS ...
- Android中利用OpenMax 编程的基本流程
近期因为公司在做数字电视,播放器和模块由供应商打包一起卖,驱动调通了,但是播放器要硬件解码,和平台差异,原厂又没有相关文档,就自己试着看了一个系统的播放器流程,顺便整理了一下,也方便以后查询,希望对播 ...
随机推荐
- Kalman滤波器的原理与实现
Kalman滤波器的原理与实现 卡尔曼滤波器(Kalman Filter)是一个十分强大滤波器,虽然叫做滤波器,卡尔曼滤波器其实可以起到到两个作用,即预测与更新,这与我们在其运行时所关注的环节有关.当 ...
- Web 在线制表工具稳定吗?和桌面报表工具对比哪个好用?
报表工具中最成熟常用的基本都是桌面设计器,但是 web 在线制表工具也占有部分市场,这是因为它也有一些优点: 1.报表设计和发布都在 web 端,无需额外安装桌面设计器 2.web 在线制表工具可直接 ...
- 实时数仓构建:Flink+OLAP查询的一些实践与思考
今天是一篇架构分享内容. 1.概述 以Flink为主的计算引擎配合OLAP查询分析引擎组合进而构建实时数仓,其技术方案的选择是我们在技术选型过程中最常见的问题之一.也是很多公司和业务支持过程中会实实在 ...
- 论文研究区域图的制作方法:ArcGIS
本文介绍基于ArcMap软件,绘制论文中研究区域示意图.概况图等的方法. 最近需要绘制与地学有关论文.文献中的研究区域概况图.对于这一类图片,我个人比较喜欢基于ArcMap与PPT结合的方式来 ...
- 剑指offer51(Java)-数组中的逆序对(困难)
题目: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例1: 输入: [7,5,6,4] 输出: 5 限制: 0 &l ...
- 力扣697(java)-数组的度(简单)
题目: 给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值. 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度 ...
- iLogtail开源之路
简介: 2022年6月底,阿里云iLogtail代码完整开源,正式发布了完整功能的iLogtail社区版.iLogtail作为阿里云SLS官方标配的采集器,多年以来一直稳定服务阿里集团.蚂蚁集团以及众 ...
- 从Redis7.0发布看Redis的过去与未来
简介: 经历接近一年的开发.三个候选版本,Redis 7.0终于正式发布,这是Redis历史上改变最多的一个大版本,它不仅包含了50多个新命令,还有大量核心新特性与改进,这些不仅能够解决用户使用中的诸 ...
- 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控
简介:SpringBoot 微服务的开发.发布与部署只占其生命周期的一小部分,应用和系统运维才是重中之重.而运维过程中,监控工作更是占据重要位置.那么,为了对系统的状态进行持续地观测,面向Sprin ...
- Snowflake核心技术解读系列——架构设计
简介:Snowflake取得了巨大的商业成功,技术是如何支撑起它的千亿美元市值呢?它技术强在哪?本文为大家倾情解读Snowflake的核心技术原理. 背景:2020年9月16日,Snowflake成 ...