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层,通过系统 ...
随机推荐
- spring cloud 学习笔记 服务注册与发现(二)
前言 服务注册与发现的学习.这个其实是微服务的核心了,因为微服务的一个重要理念就是将项目拆分,达到解耦的地步.那么如何把这些服务联系到一起就很关键. 如果一个服务到另外一个服务通过ip地址之间访问,虽 ...
- 我用这10招,能减少了80%的BUG
前言 对于大部分程序员来说,主要的工作时间是在开发和修复BUG. 有可能修改了一个BUG,会导致几个新BUG的产生,不断循环. 那么,有没有办法能够减少BUG,保证代码质量,提升工作效率? 答案是肯定 ...
- 深入探讨下SSR与CSR有啥不同
随着互联网技术的迅速发展,用户对网页的加载速度和交互体验有了更高的期待.作为开发者,我们常常需要在服务器端渲染(SSR)与客户端渲染(CSR)之间做出选择.这两种渲染方式各有特点,适用于不同的场景和需 ...
- TypeScript 中类的理解?应用场景?
一.是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 ❝ 类是一种用户定义的引用数据类型,也称类类型 ❞ 传统的面向对象语 ...
- Node 中的 Stream ?应用场景?
一.是什么 流(Stream),是一种数据传输手段,是端到端信息交换的一种方式,是有顺序的,是逐块读取数据.处理内容,用于顺序读取输入或写入输出 在很多时候,流(Stream)是字节流(Byte St ...
- etcd 集群安装
1.环境准备 下载安装包:https://github.com/etcd-io/etcd/releases/ 这里下载的安装包为:etcd-v3.5.9-linux-amd64.tar.gz,即我们当 ...
- 【笔记】Cross Join&lag与lead函数
Oracle Cross Join交叉连接 语法 CROSS JOIN 指定第一个表的所有行与第二个表的所有行连接.如果 table1 中有"x"行,table2 中有" ...
- PolarDB B-tree 并发控制优化
简介: PolarDB 解决了 InnoDB 在 B-tree 并发控制上的限制,解决 index lock 竞争问题,并支持了 latch coupling. InnoDB 索引 InnoDB 引擎 ...
- SpringBoot项目实现日志打印SQL明细(包括SQL语句和参数)几种方式
前言 我们在开发项目的时候,都会连接数据库.有时候遇到问题需要根据我们编写的SQL进行分析,但如果不进行一些开发或者配置的话,这些SQL是不会打印到控制台的,它们默认是隐藏的.下面给大家介绍几种常用的 ...
- MAUI 自定义绘图入门
在2022的5月份,某软正式发布了 MAUI 跨平台 UI 框架.我本来想着趁六一儿童节放假来写几篇关于 MAUI 入门的博客,可惜发现我不擅长写很入门的博客.再加上 MAUI 似乎是为了赶发布日期而 ...