Android Media是一块非常庞大的内容,上到APP的书写,中到播放器的实现、封装格式的了解,下到OMX IL层的实现、Decoder的封装,每一块都需要我们下很大的功夫学习。除此之外,我们还要对一些相关的模块进行了解,比如AudioFlinger、SurfaceFlinger等,他们与Media相关交织共同构建了Android多媒体平台。

面对如此多的模块,我们的学习就成了困难,网上很多资料、博文都是按照调用的顺序一层一层向下解析,随着调用层次的深入读者很容易就找不到方向了。我是谁?我在哪儿?可能这是新手最大的疑问了。

在之前的笔记《Android Media OpenMax》中,我希望可以将APP -> Player -> MediaCodec/ACodec -> OpenMAX串起来学习,并且不能只停留在调用层级的学习,要深入了解作者意图。回过头来再审视写过的内容,还有很多地方写的不够好:

  1. 看过之前笔记的朋友会知道,我会提出很多疑问,并且揣摩代码意图。其实揣摩的行为就是对框架了解的不够深入,对设计模式了解的太少,再回过头来看之前的笔记,很多内容还局限在细节的实现,阅读之后还有一种身在山中的感觉。所以,我需要把阅读视角放的更高,从框架设计的角度学习,做到识得庐山真面目;
  2. 之前的笔记仍然使用了层级调用的学习方式,前后依赖比较严重,接下来我将以模块为单位进行学习,自下往上剖析各个模块,了解他们的实现方式;
  3. 实现一个播放器需要有Source、Decoder、Render、Controller四大组件,除了了解他们的内部实现外,还要重点了解他们是如何连接组成一个高性能播放器的,让我们自己实现应该怎么做呢?如何扩展更多的功能呢?
  4. 其他…

如何快速入门Android Media?

  • 对于只要使用API的朋友来说,阅读文档是最快的方法。但是对于要做Media Framework开发或者是OpenMAX IL层开发的朋友来说只能多多阅读,多多揣摩了。

虽然OpenMAX在Android上已经过时了,但是它所包含的设计思想依然值得学习,对我们后续的Codec2.0学习也会有所帮助。本系列文章会分为三部分:

  1. OpenMAX框架深入剖析;
  2. ACodec是如何串接OpenMAX;
  3. MediaCodec是如何对接编解码组件;

bug来来往往,需求络绎不绝,还在手足无措吗,加入我们,站在山巅横扫它们!

本系列文章依旧会基于Android 13代码。

Android OpenMAX - 开篇的更多相关文章

  1. 【Android Studio探索之路系列】之中的一个:Android Studio开篇

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...

  2. android openmax hardware decoder 整合记录

    欢迎访问我的blog:http://blog.thinkinside.me 关于android中openmax中hardware decoder的调用中,整合过程比较简单.主要是对OMXCodec的封 ...

  3. 【转】Android系统开篇

    版权声明:本站所有博文内容均为原创,转载请务必注明作者与原文链接,且不得篡改原文内容.另外,未经授权文章不得用于任何商业目的. 一.引言 Android系统非常庞大.错综复杂,其底层是采用Linux作 ...

  4. Android Zero (开篇)

    Android Zero == 从零开始 本文章主要打算给将要入门Android或刚刚入门Android的小伙伴适用的,开篇的几个案例都会抛弃所有现在用到的新技术和第三方框架,用最原生的方法从0演示, ...

  5. Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍O ...

  6. Android进程整理

    一.概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题. 1.1 父进程 在所有进程中,以父进程的姿态存在的进 ...

  7. 一些Android的博客,没事翻翻

    深入剖析Android系统(推荐) 深入浅出Android系统移植与平台开发系列(推荐) Android系统开篇(小米工程师对系统的整体分析,推荐) Android6.0Framework源码解析系列 ...

  8. 理解Android进程创建流程(转)

    /frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - ZygoteConnection.java - Runt ...

  9. 【Android Studio探索之路系列】之六:Android Studio加入依赖

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...

  10. Android开篇(转)

    转自:http://gityuan.com/android/ 一.简述 Android系统非常庞大.错中复杂,其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层,通过系统 ...

随机推荐

  1. HDC2021技术分论坛:鸿蒙智联设备开发,这五大法宝你应该拥有

    作者:zhaowenguang,dinglu, 华为高级工程师 Huawei LiteOS是轻量级的开源物联网操作系统.智能硬件使能平台,可广泛应用于智能家居.穿戴式.车联网.制造业等领域,使物联网终 ...

  2. Windows XP Vmware 无法自适应窗口

    之前在吾爱破解上找到一个 WindowsXP SP3 的精简系统(目前找不到在哪了),自带 VMtools 和 52 破解工具包,很适合 XP 系统下的逆向和病毒分析.目前准备学习一下<恶意代码 ...

  3. CTR预估系列模型漫谈

    FM FM的主要内容 了解fm模型之前,需要先说一下lr带入一下场景.lr作为早期ctr预估里面的模型,其速度上有着无可比拟的优势,而偏偏ctr场景下伴随着有大量的离散特征,高维稀疏特征,这个很适合l ...

  4. leetcode每日一题:836. 矩形重叠

    836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...

  5. 《Effective C#》系列之(四)——最小化内存泄露和资源占用

    一.内存泄露 在<Effective C#>这本书中,最小化资源泄漏是其中一章的内容.以下是该章节的一些核心建议,以及使用C#代码示例说明: 及时释放非托管资源:在使用非托管资源时,需要手 ...

  6. 如何将 ASP.NET Core MVC 项目的视图分离到另一个项目

    如何将 ASP.NET Core MVC 项目的视图分离到另一个项目 在当下这个年代 SPA 已是主流,人们早已忘记了 MVC 以及 Razor 的故事.但是在某些场景下 SSR 还是有意想不到效果. ...

  7. 【Oracle】 管道函数pipelined function简单的使用

    Oracle 管道函数pipelined function简单的使用 如果在函数(function)中加关键字 pipelined,就表明这是一个oracle管道函数,其返回值类型必为 集合,体现出来 ...

  8. 记一次 JMeter 压测 HTTPS 性能问题

    ​简介:在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大.同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMet ...

  9. Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

    简介: 弹性伸缩作为 Kubernetes 的核心能力之一,但它一直是围绕这无状态的应用负载展开.而 Fluid 提供了分布式缓存的弹性伸缩能力,可以灵活扩充和收缩数据缓存. 它基于 Runtime ...

  10. 阿里云徐立:面向容器和 Serverless Computing 的存储创新

    ​简介:以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验. 作者:徐立 ...