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

搜索引擎 网站地图做网站需要招聘内容

搜索引擎 网站地图,做网站需要招聘内容,品牌网站建设 2蝌蚪小,青岛制作网站的1. C2ComponentStore这是 Codec 2.0 HAL 的抽象接口(frameworks/av/media/codec2/core/include/C2ComponentStore.h)。代表一个「组件工厂」,负责:枚举当前可用的 Codec2 组件(解码器、编码器)。创建组件&a…

1. C2ComponentStore

这是 Codec 2.0 HAL 的抽象接口frameworks/av/media/codec2/core/include/C2ComponentStore.h)。

  • 代表一个「组件工厂」,负责:

    • 枚举当前可用的 Codec2 组件(解码器、编码器)。

    • 创建组件(createComponent())。

    • 创建接口对象(createInterface())。

  • 它本身只是一个 纯虚基类 (abstract class),并没有具体实现。

  • AOSP 里有个默认实现 C2PlatformComponentStore,用于加载 Google 自带的软件 codec (比如 C2SoftAvcDec, C2SoftHevcEnc 等)。

所以 C2ComponentStore 是一个 标准定义,Android 框架通过它来访问 codec,而不会关心具体厂商的实现。

2. QC2ComponentStore

这是 高通(Qualcomm)在 AOSP 基础上实现的厂商版本

  • 位于 QTI 的源码中(通常在 vendor/qcom/opensource 或者 hardware/qcom/media 里)。

  • 继承自 C2ComponentStore,并实现了其中的接口,比如:

    • createComponent() → 创建一个 Qualcomm 硬件加速 codec 对象。

    • queryComponents() → 返回 Qualcomm 支持的编解码器列表。

  • QC2ComponentStore 通过 binderized Codec2.0 HAL(IComponentStore AIDL/HIDL) 暴露给 Android Framework。
    也就是说,QC2ComponentStore 就是 Qualcomm 的 组件工厂实现,背后调用的是硬件驱动/NPU/DSP 的 codec。


3. 二者关系总结

  • C2ComponentStore:接口定义(Google AOSP,抽象类)。

  • QC2ComponentStore:厂商实现(Qualcomm,继承并实现 C2ComponentStore,用于硬件 codec)。

  • 其他厂商(联发科 MTK、三星 Exynos 等)也会有自己的 MC2ComponentStoreExynosC2ComponentStore,逻辑类似。


4. 常见误区澄清

C2ComponentStore 本身没有具体实现。
AOSP 默认实现是 C2PlatformComponentStore,但这只是 Google 提供的软件 codec。
真正跑在手机硬件上的 codec,一般都来自厂商,比如 Qualcomm 的 QC2ComponentStore

C2ComponentQC2Component 的关系,跟 C2ComponentStoreQC2ComponentStore 的关系基本一致:


1. C2Component

这是 Codec 2.0 的抽象接口(定义在 C2Component.h)。

  • 表示一个 实际的编解码器实例(而不是工厂)。

  • 定义了组件的核心行为,比如:

    • queue_nb() / queue() → 提交工作 (work item)。

    • flush_sm() → 刷新队列。

    • reset_sm() → 重置。

    • release_sm() → 释放资源。

  • 这些方法全部是 纯虚函数,没有具体实现。

所以,C2Component 只是一个统一的接口规范。


2. QC2Component

这是 Qualcomm 的 具体实现类,继承自 C2Component

  • 封装了对 Qualcomm DSP/NPU/硬件 Codec 的调用。

  • 会和 Qualcomm 自己的 codec driver / firmware 打交道。

  • 例如:

    • QC2Component::queue_nb() → 实际会把 buffer/work 通过 Qualcomm 的 HAL 层下发到 DSP。

    • QC2Component::release_sm() → 释放 Qualcomm 硬件资源。


3. 对照关系

  • C2ComponentStore → 抽象工厂接口。

  • QC2ComponentStore → Qualcomm 的工厂实现。

  • C2Component → 抽象组件接口。

  • QC2Component → Qualcomm 的组件实现(由 QC2ComponentStore 创建)。


4. 实际调用链

当 App 使用 MediaCodec 播放视频时,大概是这样:

MediaCodec (Java)  ↓  
Codec2Client (C++)  ↓  
IComponentStore (AIDL/HIDL)  ↓  
QC2ComponentStore::createComponent()  ↓  
QC2Component (具体硬件解码器实例)  ↓  
Qualcomm DSP/driver

1. Codec2Client

位置:frameworks/av/media/codec2/hidl/client/Codec2Client.cpp (Android 14 已经迁移到 AIDL)。

  • 它是 framework 与 Codec2.0 HAL(IComponentStore / IComponent)交互的客户端封装

  • 主要功能:

    • 负责连接到 IComponentStore(binderized HAL 服务)。

    • 调用 createComponent() 来实例化一个硬件/软件 codec(比如 QC2Component)。

    • 提供 ComponentConfigurable 等子类,封装了 HAL 的 AIDL/HIDL 接口。

👉 简单说:Codec2Client 就是 HAL 客户端,直接和厂商的 C2ComponentStore / C2Component 打交道


2. CCodec

位置:frameworks/av/media/codec2/sfplugin/CCodec.cpp

  • 它是 Stagefright 层的一个 Adapter,让 MediaCodec 可以驱动 Codec2.0 backend。

  • 继承自 MediaCodec 的基类 CodecBase

  • 内部持有一个 Codec2Client::Component 对象,用来真正调用 HAL。

  • 功能:

    • MediaCodec 创建 codec 时,如果走 Codec2.0 路径,就会用 CCodec 作为实现类。

    • 负责生命周期管理(init、start、stop、reset)。

    • 负责 buffer queue 的组织,把 MediaCodec 层的 buffer 请求映射到 Codec2 HAL 的工作单元。

👉 简单说:CCodec 是 Stagefright 插件,实现了 MediaCodec 的统一接口;它内部通过 Codec2Client 来访问 HAL


3. 两者关系总结

  • Codec2Client

    • 面向 HAL,封装 AIDL/HIDL,提供 API 给 framework 使用。

    • 就像「钥匙」,能打开 HAL 的 codec 工厂和组件。

  • CCodec

    • 面向 Stagefright/MediaCodec 层,是 Codec2.0 的插件。

    • 内部依赖 Codec2Client 去真正调用 HAL。

    • 就像「驾驶员」,通过 Codec2Client 去开车(HAL codec)。


4. 调用链示意

App↓ (Java)
MediaCodec↓ (native 层选择 CCodec 作为实现类)
CCodec↓ (创建 Codec2Client)
Codec2Client↓ (调用 AIDL/HIDL)
IComponentStore / IComponent (HAL)↓
QC2ComponentStore / QC2Component (厂商实现)↓
DSP / Driver / Hardware

http://www.dtcms.com/a/549016.html

相关文章:

  • 具身智能3D数字人开放平台「星云」发布:魔珐科技让AI第一次拥有“身体”
  • 世冠科技受邀参加第三十二届中国汽车工程学会年会暨展览会
  • 服装网站的建设背景建设网站可选择的方案
  • 上传视频网站源码全国可信网站
  • 《Muduo网络库:实现TcpServer类终章》
  • 三数之和:用Java思路分析
  • 企业有没有必要自建一套培训考试
  • 测试开发话题06---测试分类(1)
  • 【Agentic RL专题】一、LLM agent 与 agentic RL
  • 使用Java做URL短连接还原长链接获取参数
  • 自己网站做电子签章有效么有哪些网站做汽车周边服务
  • 做网站去哪好在线表单 wordpress
  • 从信号零损耗到智能协同:高清混合矩阵全链路技术拆解,分布式可视化系统十大趋势重塑行业
  • 【超详细】MySQL事务面试题
  • Ubuntu(③vsftpd)
  • Ubuntu 25.10 发布,各种衍生版也发布
  • HUAWEI A800I A2 aarch64架构Ubuntu服务器鲲鹏920开启 IOMMU/SMMU 硬件虚拟化功能
  • GitHub 发布 Agent HQ:欢迎回家,智能体们
  • 使用 Python 将 PowerPoint 转换为 Word 文档
  • 怎么成立自己的网站公司网站建设案例
  • 做数码后期上数码网站企业推广文章
  • iOS 抓包工具实战 开发者的工具矩阵与真机排查流程
  • Spring Boot 整合第三方组件:Redis、MyBatis、Kafka 实战
  • 可视化图解算法66:两个数组的交集
  • 7 种方法:如何将视频从电脑传输到安卓手机
  • Qt GridLayout布局详解:从基础到高级技巧
  • BTreeMap 的 B-Tree 之心:性能与安全的 Rust 式演绎
  • 中国查公司的网站长沙 网站设计 公司
  • R 因子:深度解析其在统计学中的重要作用
  • Laravel 结合影刀 RPA 实现企业微信自动询单报价流程