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

Node 处理 request 的过程中,都会更新哪些 metadata 和 property

什么是 Metadata?

  • 用于描述帧状态、控制参数、处理结果等

  • 是随 request 流动的结构,通常是 PerFrameMetaData,每一帧一份

  • 属于 HAL3 metadata 树的组成部分

什么是 Property?

  • 是 CamX 内部定义的一种帧级别的轻量信息块

  • 不一定会传到上层,但用于 Node 之间的同步和依赖判断

  • 通常以 PropertyID_* 定义,和 Node::PublishData() 配套使用


1. Node 处理 Request 过程中的 Metadata 更新

每个 Node 可以调用 PublishMetadata()WriteToPerFrameMetadata() 等 API 来更新 metadata。以下是典型的更新项:

Metadata Key来源 Node说明
ANDROID_CONTROL_AE_STATEAEC NodeAE 状态(如 CONVERGED)
ANDROID_SENSOR_EXPOSURE_TIMESensor Node当前帧曝光时间
ANDROID_SENSOR_SENSITIVITYSensor Node当前帧 ISO
ANDROID_CONTROL_AF_STATEAF NodeAF 状态
ANDROID_CONTROL_AWB_STATEAWB NodeAWB 状态
ANDROID_STATISTICS_FACE_RECTANGLESFD Node人脸检测结果
ANDROID_JPEG_ORIENTATIONJpeg Node拍照方向信息
ANDROID_CONTROL_SCENE_MODEUsecase Node场景模式
ANDROID_CONTROL_CAPTURE_INTENTUsecase当前是 preview 还是 still capture
ANDROID_CONTROL_ENABLE_ZSLUsecaseZSL 启用状态

这些 metadata 最终会通过 Camera3Device 返回给 framework 层。


2. Node 处理过程中可能发布的 Property(CamX 内部)

CamX 使用 PropertyID_* 枚举类型来定义所有 property,Node 通常通过 PublishData() 来发布。下面是典型的一些:

PropertyID来源用途
PropertyIDUsecaseAECStateAEC Node当前帧是否 AE converged
PropertyIDUsecaseAFStateAF Node当前帧 AF 状态
PropertyIDUsecaseSensorFrameDimensionSensor NodeSensor 输出图像的尺寸
PropertyIDIFEStatsConfigIFE NodeIFE stats 配置(AE/AF window等)
PropertyIDIFEStatsOutputIFE NodeIFE 输出的 raw stats 数据
PropertyIDBPSMetadataOutputBPS NodeBayer Processing Stage 处理输出的 metadata
PropertyIDIPEMetadataOutputIPE NodeImage Processing Engine 输出的 YUV 元信息
PropertyIDJPEGEncodeOutputSizeJPEG NodeJPEG 编码后输出大小
PropertyIDRequestInputMetadataAvailable多个 Node表示当前 input metadata 已准备好
PropertyIDRequestOutputMetadataReady当前节点的 output metadata 写入完成

3. Composite / Fusion / HDR 场景特有 metadata & property

在多帧、多摄、fusion 场景中,Node 会发布这些附加信息:

类型Key描述
FusionPropertyIDFusionResultStatusFusion 是否成功(例如双摄融合)
HDRPropertyIDHDRFrameGroupInfo当前帧是多帧 HDR 中的哪一张(long / short)
MFNRPropertyIDMFNRInputFrameCount多帧降噪时使用了多少帧
Frame SelectPropertyIDFrameSelectorSelectedFrameIDList被选中的 ZSL 帧 ID

4. 如何追踪这些 Metadata 和 Property?

你可以在以下地方看到它们:

位置用途
camxpropertydefs.h定义了所有 PropertyID_XXX 枚举
camxhal3metadatatags.h定义了 HAL3 metadata tag
各 Node 的 ProcessRequest() 实现查找 PublishMetadata()PublishData() 调用
Feature2RequestObject::UpdateMetadata()汇总每个 Node 的 metadata 和 property
DeferredRequestQueue::OnMetadataUpdate()被触发用于依赖判断

举个例子:IPE Node 中的 property 更新

pNode->PublishData(PropertyIDIPEMetadataOutput, ...);
pNode->PublishMetadata(ANDROID_STATISTICS_HISTOGRAM, histogramData, count);

IPE 可能会同时:

  • 发布 YUV 输出图像的处理信息

  • 发布处理完成的 signal,供 downstream 触发依赖


总结一下

类型举例发布方式目的
MetadataAE 状态,曝光时间,AF 状态PublishMetadata()提供给上层、下游模块
Propertyframe 处理状态,内部依赖标记,frame group infoPublishData()用于 CamX 内部节点依赖调度

相关文章:

  • 餐饮厨房开源监控安全系统的智能革命
  • 小刚说C语言刷题——第20讲 循环之嵌套循环
  • 【面经】兼顾频繁插入/删除和查询访问 非阻塞网络I/O模型 connect的阻塞性 `unique_ptr`的使用场景和析构机制
  • 20年AB1解码java
  • 【PyTorch项目实战】卷积(Convolution ) + 反卷积(Deconvolution)
  • 文章记单词 | 第27篇(六级)
  • WePY 框架:小程序开发的“Vue式”利器!!!
  • gogs私服对应SSH 协议配置
  • 基于 OpenHarmony 5.0 的星闪轻量型设备应用开发——Ch3 设备驱动开发
  • python基础:位置互换
  • 【前端】【React】useCallback的作用与使用场景总结
  • 银行业务知识序言
  • 基于labview的多功能数据采集系统
  • 已经安装了pip,出现pip command not found【解决方法】
  • 如何用VBA编辑器合并Word文档:详细教程
  • spark-rdd
  • 【补题】P9423 [蓝桥杯 2023 国 B] 数三角
  • 《软件工程类标准规范》写作方法和技巧
  • 【Python】什么是列表推导式?
  • 第七章 指针