您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页Android Codec2 CCodec(一)架构简介

Android Codec2 CCodec(一)架构简介

来源:汇智旅游网

Android Codec2/CCodec框架是由Google开发的用于替代OpenMAX的下一代低层级的Android Codec API,早在2016年Google就提出了将Codec2作为Android上的下一代Codec HAL。在正式学习Codec2框架之前,我们应该先对它的设计理念和设计思路有简单的了解,相比OpenMAX框架,Codec2修改了哪些地方,有哪些由于原先框架的部分,这样学习起来才更有针对性。

以下是Codec2的部分新特性:

  • 更简单的状态

Codec2中只有四个状态Stopped、Running、Tripped(Paused)、Error,它们的转换关系如下:

从图中可以看到,除了Stopped外其他三个状态都是在运行过程中

TODO:状态分别是什么意思

  • 全新的配置与信息划分

  • 全新的Processing Model

Codec2的处理模型使用了Frame-based Processing(基于帧的处理),该模型有几个特点,输入帧与输出帧之间有强相关,N帧输入对应着N帧输出且输入与输出之间的延迟为0。

  • 提供了Reorder机制

组件可以指定输出帧的顺序是否与输入帧的顺相同。如果是相同的,ouput buffer的reorder由Framework来完成,Framework使用了滑动窗口机制来处理此工作。

  • 全新的Work Model

一个work包含以下内容:
input buffers、flags、timestamp
对于帧的配置和信息请求
output frame的占位

  • Parameters

Codec2的参数都是被类型化了,是基于C风格的结构体的,大多说的参数只有一个字段,并且可以暴露给app

  • Reflection
    全新的组件设计,组件被分离为两部分,一部分是interface,还有一部分是数据处理

interface提供以下功能
组件所有支持参数的枚举
给出支持参数支持的值
给出参数之间的依赖
知道关于参数和值的一些东西
允许客户端尝试不同参数配置的影响

由ComponentStore中的Reflector提供结构体字段描述,

ComponentStore会枚举所有支持的global参数
提供支持的全局系统参数

  • Pipeline and Latency全新的流水线和延迟设计
    Input Delay:在一帧上开始处理之前所需的额外输入帧的数量。
    可能的原因:encoder需要input reorder
    无效率的组件设计,不要这样做

Output Delay:释放输出帧所需的额外输出帧的数量。
可能的原因:output buffer reorder

Pipeline Latency:在数据处理器中同时处理的工作项的数量
这个值可能大于1,有以下几个原因
以增加延迟为代价提高吞吐量

Component Latency = input delay + pipeline latency + output delay

  • Buffers
    Codec 2.0 defines 1D and 2D buffers:
    Linear Buffer用于存储压缩的编码的视频数据或者是音频数据
    Graphic buffers用于存储graphic数据或者是其他2D数据

  • BufferPool

Codec2架构解析将基于Android 14,在源码中的路径如下:
Codec2框架实现
hardware/interfaces/media/c2
frameworks/av/media/codec2

bufferpool实现:
hardware/interfaces/media/bufferpool
frameworks/av/media/module/bufferpool

  • client:对HIDL调用的封装,以及一部分新的抽象,提供给CCodec使用
  • hidl:HIDL接口实现,它只是一个wrapper,具体的功能需要我们来实现
  • plugin:插件,此系列中不做了解
  • services:提供了vendor service的实现模板

原文阅读:

扫描下方二维码,关注公众号《青山渺渺》阅读音视频开发内容。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务