当前位置: 首页 > news >正文

Android CCodec Codec2 (十九)C2LinearBlock

在上一篇文章的结尾,我们看到fetchLinearBlock方法最终创建了一个C2LinearBlock对象。这一节,我们将深入了解C2LinearBlock是什么,它的作用是什么,以及它是如何被创建的。

1、_C2BlockFactory

先对上一篇文章的结尾内容做简单回顾:

  1. BufferPoolClient持有clone的native_handle_t以及bufferId;
  2. BufferPoolClient将bufferId和ConnectionId封装为BufferPoolData,将它与native_handle_t一并返回给调用者;
  3. C2PooledBlockPool拿到返回之后,先用native_handle_t创建出一个C2LinearAllocation,然后将BufferPoolData封装为_C2BlockPoolData;
  4. C2PooledBlockPool调用_C2BlockFactory的CreateLinearBlock方法,将C2LinearAllocation和_C2BlockPoolData作为参数创建出C2LinearBlock。

为什么要大费周章再封装一层C2LinearBlock呢?拿到C2LinearAllocation后我们可以调用它的map方法拿到虚拟内存,从而实现buffer读写。但是框架设计者可能是希望对buffer提供读写控制,比如应用层可以拿到input buffer的读写权限,而在组件只能拿到input buffer的读权限。接下来就先来看C2LinearBlock是如何创建的。

_C2BlockFactory是一个内部的工厂类,提供了一组静态方法,部分方法有多个重载:
请添加图片描述

这一章只看CreateLinearBlock方法:

std::shared_ptr<C2LinearBlock> _C2BlockFactory::CreateLinearBlock(const std::shared_ptr<C2LinearAllocation> &alloc,const std::shared_ptr<_C2BlockPoolData> &data, size_t offset, size_t size) {std::shared_ptr<C2Block1D::Impl> impl =std::make_shared<C2Block1D::Impl>(alloc, data, offset, size);return std::shared_ptr<C2LinearBlock>(new C2LinearBlock(impl, *impl));
}

方法内部先使用C2LinearAllocation、_C2BlockPoolData、offset和capacity创建了一个C2Block1D::Impl对象,然后再创建了一个C2LinearBlock对象。

先来看C2Block1D相关的类图:
请添加图片描述

2、C2Acquirable

3、C2WriteView

4、C2ReadView

5、小结


原文阅读:
Android Codec2(十九)C2LinearBlock


http://www.mrgr.cn/news/65780.html

相关文章:

  • 【自动化测试】APP UI 自动化(安卓)-本地环境搭建
  • java脚手架系列13-IoT
  • 编译链接题目
  • 创维E900-S_华为EC6108V9_v9u_海思hi3798mv100华为系统优盘刷机固件包
  • 消息中间件类型介绍
  • 【创建型】单例模式
  • 【软考】反规范化技术
  • Python 类和对象
  • MeetingMind:AI 会议助手,支持自动转录音频并提取会议中的关键信息
  • 408 计算机组成原理、操作系统:异常和中断的总结
  • GESP4级考试语法知识(计数排序-桶排序)
  • 管易到金蝶销售数据集成全流程详解
  • AI大模型重塑软件开发:从代码自动生成到智能测试
  • AVLTree
  • 程序员都在用的AI编码助手
  • C++练习题
  • kafka版本
  • PH热榜 | 2024-11-04
  • 【解决办法】无法使用右键“通过VSCode打开文件夹”
  • python 通过执行脚本安装库或卸载库
  • 【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024,11月29-12月1日)
  • Linux 系统启动
  • JAVA设计模式之【建造者模式】
  • 图像压缩——图像编码与压缩标准
  • 【自动化】十款开源测试开发工具推荐自动化、性能、造数据、流量复制等
  • 各省环境规制强度数据(Excel/Shp格式)