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;
相关推荐
OpenApi.cc7 小时前
2026年最新openapi:免费图片人脸识别和视频人脸识别工具
音视频
rocpp8 小时前
Android 相册选择与拍照接入实践:MediaStore 分页、权限适配与 FileProvider
android
Flynt9 小时前
升级Flutter 3.44,我踩了HCPP和AGP 9的坑
android·flutter·dart
白色牙膏10 小时前
Cocos Creator 2.4.x 接入 AdMob 插件的迁移实践
android
我命由我1234511 小时前
C++ - 面向对象 - 常成员函数
android·java·linux·c语言·开发语言·c++·算法
FlightYe12 小时前
HDR详解
linux·音视频·显示器·视频编解码·hdr
tryqaaa_12 小时前
学习日志(四)【php反序列化魔术方法以及pop构造配实战】
android
做萤石二次开发的哈哈12 小时前
ERTC-产品介绍-产品功能
音视频·实时音视频
Java小学生丶14 小时前
记录一下我的 Gradle 开发环境配置过程
android·java·gradle·maven·安卓
searchforAI14 小时前
2026年音视频笔记工具横评:通义听悟、讯飞听见、Get笔记、Ai好记
人工智能·笔记·gpt·aigc·音视频·语音识别·知识图谱