固镇县住房和城乡建设局网站,网站代理工具,免费推广软件 推广帮手,网站多套系统如何调用从这一节开始我们会回到上层来看ACodec的实现#xff0c;在这之前我们会先了解ACodec的基类CodecBase。CodecBase.h 中除了声明有自身接口外#xff0c;还定义有内部类 CodecCallback、BufferCallback#xff0c;以及另一个基类 BufferChannelBase#xff0c;接下来我们会一… 从这一节开始我们会回到上层来看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 需要实现一个自己的版本ACodecBufferChannelCCodec 也需要实现一个自己的版本。
并发相关的问题
客户端可能在不同的线程中同时获取到 BufferChannelBase 对象这里应该指的是 MediaCodec 和 CodecBase 可能会同时调用到 BufferChannel 的方法所有的方法在持有锁时都不会依赖 CodeBase意思就是 CodecBase 应该不会被阻塞关键的内部代码执行时间小于 1 ms