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. 官方直播丨“Hello Ability:从页面跳转开始”周三晚不见不散

    12月8日 19:00-20:30,Hello HarmonyOS系列课程的第四期"Hello Ability:从页面跳转开始"线上直播,将带你学习如何快速通过JS page间.A ...

  2. 开源相机管理库Aravis例程学习(二)——连续采集multiple-acquisition-main-thread

    目录 简介 例程代码 函数说明 arv_camera_set_acquisition_mode arv_camera_create_stream arv_camera_get_payload arv_ ...

  3. orleans —————— 为什么有这个框架 [ 一]

    前言 简单说明一下,为什么有orleans 这个框架. 正文 orleans 这个框架的理论基础是 actor, 在1973年提出,当初是为了大量处理高并发计算机的并行模型,其核心思想是将系统中独立的 ...

  4. linux 连接wifi

    前言 我使用树莓派的时候实际过的. 正文 第一步扫描wifi: iwlist wlan0 scan 然后配置: vim /etc/wpa_supplicant/wpa_supplicant.conf ...

  5. coco2017 Dataset EDA

    Github仓库:gy-7/coco_EDA (github.com) 对coco数据集的分析,近期忙着写论文,空余时间很少能写博文了. EDA的代码放在结尾了,Github仓库里也有.仓库里还有其他 ...

  6. Web自动化实战:去哪儿网购票流程测试

    克隆源码 项目Github地址:https://github.com/gy-7/Web-automation-practice/tree/main/project1_qunar_booking_tic ...

  7. Lattice下载器高速编程器HW-USBN-2B fpga仿真器ispdown烧录器

    1.概述 HW-USBN-2B 编程烧录Lattice所有芯片,速度非常快.支持Lattice FPGA芯片在线稳定仿真.烧录.加密,支持Lattice CPLD烧录.支持外部配置FLASH.PROM ...

  8. kubernetes集群最新版安装

    原文地址:https://haiyux.cc/2022/09/21/k8s-install/ 虚拟机准备 我这里准备了三台虚拟机,分别部署一个master和两个node,操作系统位ubuntu 20. ...

  9. ASP.NET Core Web API下基于Keycloak的多租户用户授权的实现

    在上文<Keycloak中授权的实现>中,以一个实际案例介绍了Keycloak中用户授权的设置方法.现在回顾一下这个案例: 服务供应商(Service Provider)发布/Weathe ...

  10. 力扣451(java)-根据字符出现频率排序(中等)

    题目: 给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 .一个字符出现的 频率 是它出现在字符串中的次数. 返回 已排序的字符串 .如果有多个答案,返回其中任何一个. 示例 1: 输入 ...