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;
相关推荐
_李小白29 分钟前
【Android FrameWork】第三十三天:Camera视频流写入SurfaceView的机制
android
csj501 小时前
安卓基础之《(4)—Activity组件(2)》
android
_李小白2 小时前
【Android GLSurfaceView源码学习】第二天:GLSurfaceView深度分析
android·学习
猫天意2 小时前
【即插即用模块】AAAI2025 | 高频 + 空间感知!新 HS-FPN 让“极小目标”不再消失!SCI保二区争一区!彻底疯狂!!!
网络·人工智能·深度学习·学习·音视频
元气满满-樱3 小时前
LNMP架构学习
android·学习·架构
allk553 小时前
Android 渲染性能优化实战总结:从监控体系到架构落地
android·性能优化·架构
思成不止于此3 小时前
C++红黑树封装map/set核心揭秘
android
走在路上的菜鸟3 小时前
Android学Dart学习笔记第十七节 类-成员方法
android·笔记·学习·flutter
歪楼小能手4 小时前
Android16底部导航栏添加音量加减虚拟按键
android·java·平板
又是努力搬砖的一年4 小时前
elasticsearch修改字段类型
android·大数据·elasticsearch