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;
相关推荐
月起星九1 小时前
为什么ffmpeg进行视频合成有时长误差
ffmpeg·音视频
W.Buffer1 小时前
通用:MySQL主库BinaryLog样例解析(ROW格式)
android·mysql·adb
qiushan_2 小时前
【Android】【Framework】进程的启动过程
android
用户2018792831672 小时前
Java经典一问:String s = new String("xxx");创建了几个String对象?
android
用户2018792831672 小时前
用 “建房子” 讲懂 Android 中 new 对象的全过程:从代码到 ART 的魔法
android
用户2018792831672 小时前
JVM类加载大冒险:小明的Java奇幻之旅
android
用户2018792831672 小时前
为何说Java传参只有值传递?
android
手机不死我是天子2 小时前
《Android 核心组件深度系列 · 第 4 篇 ContentProvider》
android·架构
鹏多多2 小时前
flutter-切换状态显示不同组件10种实现方案全解析
android·前端·ios
FengyunSky3 小时前
高通Camx内存问题排查
android·linux·后端