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;
相关推荐
sTone873754 分钟前
跨端框架通信机制全解析:从 URL Schema 到 JSI 到 Platform Channel
android·前端
sTone873755 分钟前
Java 注解完全指南:从 "这是什么" 到 "自己写一个"
android·前端
catoop19 分钟前
Kotlin 协程在 Android 开发中的应用:定义、优势与对比
android·kotlin
撒旦物种20 分钟前
Android WebView 获取内容高度
android·webview
空中海40 分钟前
第七章:安卓性能优化
android·性能优化
v132665623681 小时前
博通集成:BK7259 支持200w视频流IPC 带ISP 硬件H264编解码 本地算力0.1T
物联网·音视频·ipc·ai边缘
空中海1 小时前
第四章:导航与路由
android
纳祥科技2 小时前
拆解一款AUX立体声音频切换器,4进1出,乐器/便携效果器均可用
音视频
weixin_443478512 小时前
Flutter学习之第三方组件:视频播放器控件
学习·flutter·音视频
EasyCVR2 小时前
GB28181/RTSP/ONVIF/RTMP/SDK视频汇聚平台EasyCVR构建通信基站智慧安防可视化管理体系
音视频