Android OpenMAX - 开篇
Android Media是一块非常庞大的内容,上到APP的书写,中到播放器的实现、封装格式的了解,下到OMX IL层的实现、Decoder的封装,每一块都需要我们下很大的功夫学习。除此之外,我们还要对一些相关的模块进行了解,比如AudioFlinger、SurfaceFlinger等,他们与Media相关交织共同构建了Android多媒体平台。
面对如此多的模块,我们的学习就成了困难,网上很多资料、博文都是按照调用的顺序一层一层向下解析,随着调用层次的深入读者很容易就找不到方向了。我是谁?我在哪儿?可能这是新手最大的疑问了。
在之前的笔记《Android Media OpenMax》中,我希望可以将APP -> Player -> MediaCodec/ACodec -> OpenMAX串起来学习,并且不能只停留在调用层级的学习,要深入了解作者意图。回过头来再审视写过的内容,还有很多地方写的不够好:
- 看过之前笔记的朋友会知道,我会提出很多疑问,并且揣摩代码意图。其实揣摩的行为就是对框架了解的不够深入,对设计模式了解的太少,再回过头来看之前的笔记,很多内容还局限在细节的实现,阅读之后还有一种身在山中的感觉。所以,我需要把阅读视角放的更高,从框架设计的角度学习,做到识得庐山真面目;
- 之前的笔记仍然使用了层级调用的学习方式,前后依赖比较严重,接下来我将以模块为单位进行学习,自下往上剖析各个模块,了解他们的实现方式;
- 实现一个播放器需要有Source、Decoder、Render、Controller四大组件,除了了解他们的内部实现外,还要重点了解他们是如何连接组成一个高性能播放器的,让我们自己实现应该怎么做呢?如何扩展更多的功能呢?
- 其他…
如何快速入门Android Media?
- 对于只要使用API的朋友来说,阅读文档是最快的方法。但是对于要做Media Framework开发或者是OpenMAX IL层开发的朋友来说只能多多阅读,多多揣摩了。
虽然OpenMAX在Android上已经过时了,但是它所包含的设计思想依然值得学习,对我们后续的Codec2.0学习也会有所帮助。本系列文章会分为三部分:
- OpenMAX框架深入剖析;
- ACodec是如何串接OpenMAX;
- MediaCodec是如何对接编解码组件;
bug来来往往,需求络绎不绝,还在手足无措吗,加入我们,站在山巅横扫它们!
本系列文章依旧会基于Android 13代码。
Android OpenMAX - 开篇的更多相关文章
- 【Android Studio探索之路系列】之中的一个:Android Studio开篇
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...
- android openmax hardware decoder 整合记录
欢迎访问我的blog:http://blog.thinkinside.me 关于android中openmax中hardware decoder的调用中,整合过程比较简单.主要是对OMXCodec的封 ...
- 【转】Android系统开篇
版权声明:本站所有博文内容均为原创,转载请务必注明作者与原文链接,且不得篡改原文内容.另外,未经授权文章不得用于任何商业目的. 一.引言 Android系统非常庞大.错综复杂,其底层是采用Linux作 ...
- Android Zero (开篇)
Android Zero == 从零开始 本文章主要打算给将要入门Android或刚刚入门Android的小伙伴适用的,开篇的几个案例都会抛弃所有现在用到的新技术和第三方框架,用最原生的方法从0演示, ...
- Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍O ...
- Android进程整理
一.概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题. 1.1 父进程 在所有进程中,以父进程的姿态存在的进 ...
- 一些Android的博客,没事翻翻
深入剖析Android系统(推荐) 深入浅出Android系统移植与平台开发系列(推荐) Android系统开篇(小米工程师对系统的整体分析,推荐) Android6.0Framework源码解析系列 ...
- 理解Android进程创建流程(转)
/frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - ZygoteConnection.java - Runt ...
- 【Android Studio探索之路系列】之六:Android Studio加入依赖
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...
- Android开篇(转)
转自:http://gityuan.com/android/ 一.简述 Android系统非常庞大.错中复杂,其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层,通过系统 ...
随机推荐
- HDC2021技术分论坛:鸿蒙智联设备开发,这五大法宝你应该拥有
作者:zhaowenguang,dinglu, 华为高级工程师 Huawei LiteOS是轻量级的开源物联网操作系统.智能硬件使能平台,可广泛应用于智能家居.穿戴式.车联网.制造业等领域,使物联网终 ...
- Windows XP Vmware 无法自适应窗口
之前在吾爱破解上找到一个 WindowsXP SP3 的精简系统(目前找不到在哪了),自带 VMtools 和 52 破解工具包,很适合 XP 系统下的逆向和病毒分析.目前准备学习一下<恶意代码 ...
- CTR预估系列模型漫谈
FM FM的主要内容 了解fm模型之前,需要先说一下lr带入一下场景.lr作为早期ctr预估里面的模型,其速度上有着无可比拟的优势,而偏偏ctr场景下伴随着有大量的离散特征,高维稀疏特征,这个很适合l ...
- leetcode每日一题:836. 矩形重叠
836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...
- 《Effective C#》系列之(四)——最小化内存泄露和资源占用
一.内存泄露 在<Effective C#>这本书中,最小化资源泄漏是其中一章的内容.以下是该章节的一些核心建议,以及使用C#代码示例说明: 及时释放非托管资源:在使用非托管资源时,需要手 ...
- 如何将 ASP.NET Core MVC 项目的视图分离到另一个项目
如何将 ASP.NET Core MVC 项目的视图分离到另一个项目 在当下这个年代 SPA 已是主流,人们早已忘记了 MVC 以及 Razor 的故事.但是在某些场景下 SSR 还是有意想不到效果. ...
- 【Oracle】 管道函数pipelined function简单的使用
Oracle 管道函数pipelined function简单的使用 如果在函数(function)中加关键字 pipelined,就表明这是一个oracle管道函数,其返回值类型必为 集合,体现出来 ...
- 记一次 JMeter 压测 HTTPS 性能问题
简介:在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大.同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMet ...
- Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩
简介: 弹性伸缩作为 Kubernetes 的核心能力之一,但它一直是围绕这无状态的应用负载展开.而 Fluid 提供了分布式缓存的弹性伸缩能力,可以灵活扩充和收缩数据缓存. 它基于 Runtime ...
- 阿里云徐立:面向容器和 Serverless Computing 的存储创新
简介:以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验. 作者:徐立 ...