4. 配置HDR处理管线
任务目标
在高通Camera ISP管线中启用HDR处理,实现多帧合成(MFNR/MFSR)与色调映射(Tone Mapping),使预览或拍照路径输出HDR效果图像。
环境依赖
本案例基于高通Camera SDK(camx)与Chromatix调优库,需要以下组件:
- 高通平台SDK(包含camx、chi-cdk)
- Chromatix HDR调优参数文件(位于
chi-cdk/oem/qcom/topaz/chromatix/) - 支持HDR的sensor驱动(如IMX577、OV48C等)
核心实现
在Usecase XML中启用HDR节点,并在请求构建时设置HDR模式。以下代码展示在Camera用例定义中配置HDR管线的最小实现:
<!-- UsecaseHDR.xml 关键片段 -->
<usecase>
<node type="IFE" id="0">
<port name="input" producer="sensor"/>
<port name="output" consumer="HDRNode"/>
</node>
<!-- HDR处理节点:多帧合成 + 色调映射 -->
<node type="HDR" id="1">
<port name="input" producer="IFE"/>
<port name="output" consumer="IPE"/>
<control>
<hdr_mode>MFSR</hdr_mode> <!-- 可选: OFF / MFNR / MFSR -->
<tone_mapping_enable>1</tone_mapping_enable>
<tone_mapping_curve>default_hdr_curve</tone_mapping_curve>
</control>
</node>
<node type="IPE" id="2">
<port name="input" producer="HDRNode"/>
<port name="output" consumer="stats"/>
</node>
</usecase>
在请求构建代码中,通过CHI接口设置HDR模式:
// hdr_request.c - 构建HDR请求
chi_hdr_config_t hdr_config;
memset(&hdr_config, 0, sizeof(hdr_config));
// 启用多帧合成(3帧HDR)
hdr_config.hdr_mode = CHI_HDR_MODE_MFSR;
hdr_config.num_frames = 3;
hdr_config.tone_mapping_enable = TRUE;
hdr_config.tone_mapping_type = CHI_TONE_MAP_HDR;
// 设置到pipeline请求中
chi_pipeline_request_t request;
request.hdr_config = &hdr_config;
request.frame_count = 3; // 多帧请求
CHIRequestPipeline(&request);
Chromatix调优配置
在Chromatix参数文件中添加HDR调优节点:
// chromatix_hdr.h 片段
static chromatix_hdr_t chromatix_hdr_default = {
.hdr_enable = TRUE,
.mfsr_config = {
.frame_count = 3,
.exposure_bracket = {0, -2, +2}, // EV bracket
.merge_ratio = 0.5
},
.tone_mapping = {
.curve_type = CHROMATIX_TONE_CURVE_HDR,
.target_brightness = 0.6,
.contrast_strength = 0.3
}
};
编译与部署
- 编译camx驱动:
./build.sh -c camx - 编译CHI用例:
./build.sh -c chi-cdk - 将生成的
libcamx.so、libchi-cdk.so和Chromatix二进制push到设备/vendor/lib64/与/vendor/etc/camera/
验证方法
- 启动相机HDR模式:
adb shell "echo 1 > /sys/kernel/debug/camera/hdr/enable" - 拍摄HDR照片,检查输出图像动态范围:高光不过曝、暗部细节可见
- 通过camx日志确认HDR节点激活:
adb logcat -s CamX | grep "HDR",应看到HDRNode::Execute和MFSR merge done日志 - 对比HDR开关下的图像直方图,HDR开启时灰度分布更均匀
通过条件:HDR模式拍照成功,输出图像高光与暗部细节同时保留,且日志中无HDR管线错误。