当前位置: 首页 > article >正文

Android 13 - Media框架(18)- CodecBase

从这一节开始我们会回到上层来看ACodec的实现,在这之前我们会先了解ACodec的基类CodecBase。CodecBase.h 中除了声明有自身接口外,还定义有内部类 CodecCallback、BufferCallback,以及另一个基类 BufferChannelBase,接下来我们会一一了解它们的作用。

1、CodecBase

2、CodecCallback

接口定义了所有从 CodecBase 发送给 MediaCodec 的事件,这些方法必须是非阻塞的

3、BufferCallback

接口定义了所有从 BufferChannelBase 发送给 MediaCodec 的事件,同样的,这些方法必须是非阻塞的。

4、BufferChannelBase

BufferChannel 位于 MediaCodec 和 CodecBase 之间,它管理着 buffer 的传输。预期只有 MediaCodec 会调用这些方法,CodecBase 需要单独实现自己的接口 BufferChannelBase,这里的意思就是 ACodec 需要实现一个自己的版本ACodecBufferChannel,CCodec 也需要实现一个自己的版本。

并发相关的问题:

  • 客户端可能在不同的线程中同时获取到 BufferChannelBase 对象,这里应该指的是 MediaCodec 和 CodecBase 可能会同时调用到 BufferChannel 的方法;
  • 所有的方法在持有锁时都不会依赖 CodeBase,意思就是 CodecBase 应该不会被阻塞;
  • 关键的内部代码执行时间小于 1 ms;

http://www.kler.cn/a/154513.html

相关文章:

  • Pandas进行周期与时间戳转换
  • 【图像压缩感知】论文阅读:Content-Aware Scalable Deep Compressed Sensing
  • Vue学习记录03
  • 高级数据结构——hash表与布隆过滤器
  • 如何编译 Cesium 源码
  • 前端无感刷新token
  • 记录 | ssh config免密连接
  • Mybatis 的操作(要结合上个博客一起)续集
  • 抓包 Hook 工具Objection
  • Leecode 【一】
  • 2023年AI时代中小企业智能化发展报告
  • Go 语言中 sync 包的近距离观察
  • MySQL表连接详解:解析内连接与外连接的使用方法
  • 【Element-ui】Element-ui是什么?如何安装
  • YOLOv8改进 | 2023 | 给YOLOv8换个RT-DETR的检测头(重塑目标检测前沿技术)
  • javascript的Proxy
  • HNU-青蛙与蚊子
  • 【动态规划】LeetCode-LCR166.珠宝的最高价值
  • 深度学习常用指令(Anaconda、Python)
  • Unity-链接MySql5.7
  • c语言编程题经典100例——(56~60例)
  • 【Python-随笔】使用Python实现屏幕截图
  • 安卓密码框、EditText
  • 基于 HarmonyOS 的用户登录界面实现
  • Pytorch:torch.optim详解
  • 【kafka实践】11|消费位移提交