2.13.8. V4L2_META_FMT_RK_ISP1_PARAMS (‘rk1p’),V4L2_META_FMT_RK_ISP1_STAT_3A (‘rk1s’),V4L2_META_FMT_RK_ISP1_EXT_PARAMS (‘rk1e’)

2.13.8.1. 配置参数

RkISP1 ISP的配置由用户空间执行,通过使用v4l2_meta_format接口向驱动程序提供ISP的参数。

有两种方法可以配置ISP,固定参数配置格式和可扩展参数配置格式。

2.13.8.1.1. 固定参数配置格式

当使用固定配置格式时,参数通过V4L2_META_FMT_RK_ISP1_PARAMS元格式传递到rkisp1_params元数据输出视频节点。

缓冲区包含C结构rkisp1_params_cfg的单个实例,该结构在rkisp1-config.h中定义。 因此,可以通过以下方式从缓冲区中获取该结构:

struct rkisp1_params_cfg *params = (struct rkisp1_params_cfg*) buffer;

此方法仅支持ISP功能的一个子集,新的应用程序应使用可扩展参数方法。

2.13.8.1.2. 可扩展参数配置格式

当使用可扩展配置格式时,参数通过V4L2_META_FMT_RK_ISP1_EXT_PARAMS元格式传递到rkisp1_params元数据输出视频节点。

缓冲区包含C结构rkisp1_ext_params_cfg的单个实例,该结构在rkisp1-config.h中定义。rkisp1_ext_params_cfg结构的目的是允许用户空间仅使用它打算配置的ISP块的配置数据来填充数据缓冲区。 可扩展参数格式设计允许开发人员定义新的块类型以支持新的配置参数,并定义一个版本控制方案,以便可以在不破坏与现有应用程序的兼容性的情况下对其进行扩展和版本控制。

由于这些原因,此配置方法优于固定参数格式的替代方案。

2.13.8.2. 3A和直方图统计信息

ISP1设备会收集输入Bayer帧的不同统计信息。 这些统计信息是从rkisp1_stats元数据捕获视频节点获得的,使用v4l2_meta_format接口。 缓冲区包含C结构rkisp1_stat_buffer的单个实例,该结构在rkisp1-config.h中定义。 因此,可以通过以下方式从缓冲区中获取该结构:

struct rkisp1_stat_buffer *stats = (struct rkisp1_stat_buffer*) buffer;

收集的统计信息是曝光、AWB(自动白平衡)、直方图和AF(自动对焦)。 有关统计信息的详细信息,请参见rkisp1_stat_buffer

此处描述的3A统计信息和配置参数通常由专用的用户空间库使用和生成,这些库组成了使用软件控制回路的重要调整工具。

2.13.8.2.1. rkisp1 uAPI数据类型

enum rkisp1_cif_isp_version

ISP变体

常量

RKISP1_V10

至少在RK3288和RK3399中使用。

RKISP1_V11

在原始供应商代码中声明,但未使用。 网格和直方图中的条目数与v10相同。

RKISP1_V12

至少在RK3326和PX30中使用。

RKISP1_V13

至少在RK1808中使用。 网格和直方图中的条目数与v12相同。

RKISP1_V_IMX8MP

至少在i.MX8MP中使用。 网格和直方图中的条目数与v10相同。

enum rkisp1_cif_isp_exp_ctrl_autostop

停止模式

常量

RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0

连续测量

RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1

在完整帧后停止测量

enum rkisp1_cif_isp_exp_meas_mode

曝光测量模式

常量

RKISP1_CIF_ISP_EXP_MEASURING_MODE_0

Y = 16 + 0.25R + 0.5G + 0.1094B

RKISP1_CIF_ISP_EXP_MEASURING_MODE_1

Y = (R + G + B) x (85/256)

struct rkisp1_cif_isp_window

测量窗口。

定义:

struct rkisp1_cif_isp_window {
    __u16 h_offs;
    __u16 v_offs;
    __u16 h_size;
    __u16 v_size;
};

成员

h_offs

窗口与帧左侧的水平偏移量,以像素为单位。

v_offs

窗口与帧顶部的垂直偏移量,以像素为单位。

h_size

窗口的水平大小,以像素为单位

v_size

窗口的垂直大小,以像素为单位。

描述

测量是在帧内的每个窗口中计算的。 此结构表示测量的窗口。

struct rkisp1_cif_isp_bls_fixed_val

BLS固定减法值

定义:

struct rkisp1_cif_isp_bls_fixed_val {
    __s16 r;
    __s16 gr;
    __s16 gb;
    __s16 b;
};

成员

r

Bayer模式R的固定(有符号!)减法值

gr

Bayer模式Gr的固定(有符号!)减法值

gb

Bayer模式Gb的固定(有符号!)减法值

b

Bayer模式B的固定(有符号!)减法值

描述

这些值将从传感器值中减去。 因此,负值表示加法而不是减法!

struct rkisp1_cif_isp_bls_config

黑电平减法使用的配置

定义:

struct rkisp1_cif_isp_bls_config {
    __u8 enable_auto;
    __u8 en_windows;
    struct rkisp1_cif_isp_window bls_window1;
    struct rkisp1_cif_isp_window bls_window2;
    __u8 bls_samples;
    struct rkisp1_cif_isp_bls_fixed_val fixed_val;
};

成员

enable_auto

激活自动模式表示将减去测量值。 否则,将减去固定的减法值。

en_windows

启用的窗口

bls_window1

测量窗口1大小

bls_window2

测量窗口2大小

bls_samples

将每个Bayer位置(A,B,C和D)的测量像素量设置为2^bls_samples。

fixed_val

固定的减法值

struct rkisp1_cif_isp_dpcc_methods_config

DPCC方法集配置

定义:

struct rkisp1_cif_isp_dpcc_methods_config {
    __u32 method;
    __u32 line_thresh;
    __u32 line_mad_fac;
    __u32 pg_fac;
    __u32 rnd_thresh;
    __u32 rg_fac;
};

成员

method

方法启用位(RKISP1_CIF_ISP_DPCC_METHODS_SET_*)

line_thresh

行阈值(RKISP1_CIF_ISP_DPCC_LINE_THRESH_*)

line_mad_fac

行平均绝对差因子(RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_*)

pg_fac

峰值梯度因子(RKISP1_CIF_ISP_DPCC_PG_FAC_*)

rnd_thresh

秩邻域差阈值(RKISP1_CIF_ISP_DPCC_RND_THRESH_*)

rg_fac

秩梯度因子(RKISP1_CIF_ISP_DPCC_RG_FAC_*)

描述

此结构存储DPCC算法的一组方法的配置。 可以在每个集合中选择多种方法(对于绿色和红色/蓝色分量独立),通过method字段,结果是所有已启用方法的逻辑与。 其余字段设置每种方法的阈值和因子。

struct rkisp1_cif_isp_dpcc_config

DPCC使用的配置

定义:

struct rkisp1_cif_isp_dpcc_config {
    __u32 mode;
    __u32 output_mode;
    __u32 set_use;
    struct rkisp1_cif_isp_dpcc_methods_config methods[RKISP1_CIF_ISP_DPCC_METHODS_MAX];
    __u32 ro_limits;
    __u32 rnd_offs;
};

成员

mode

DPCC模式(RKISP1_CIF_ISP_DPCC_MODE_*)

output_mode

插值输出模式(RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_*)

set_use

方法集选择(RKISP1_CIF_ISP_DPCC_SET_USE_*)

methods

方法集配置

ro_limits

秩顺序限制(RKISP1_CIF_ISP_DPCC_RO_LIMITS_*)

rnd_offs

秩邻域差的微分秩偏移量(RKISP1_CIF_ISP_DPCC_RND_OFFS_*)

描述

缺陷像素簇校正使用的配置。 可以配置三组方法,并通过set_use字段进行选择。 结果是所有已启用集合的逻辑或。

struct rkisp1_cif_isp_gamma_corr_curve

gamma曲线点定义y轴(输出)。

定义:

struct rkisp1_cif_isp_gamma_corr_curve {
    __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
};

成员

gamma_y

gamma曲线点的y轴值。 每个值都是12位。

描述

重置值定义了一条线性曲线,该曲线具有与旁路相同的效果。 重置值为:gamma_y[0] = 0x0000,gamma_y[1] = 0x0100,... gamma_y[15] = 0x0f00,gamma_y[16] = 0xfff

struct rkisp1_cif_isp_gamma_curve_x_axis_pnts

反Gamma曲线定义x增量(采样点)。 gamma_dx0用于较低的样本(1-8),gamma_dx1用于较高的样本(9-16)。 这两个字段的重置值为0x44444444。 这意味着每个样本在x轴上与前一个样本相距4个单位。

定义:

struct rkisp1_cif_isp_gamma_curve_x_axis_pnts {
    __u32 gamma_dx0;
    __u32 gamma_dx1;
};

成员

gamma_dx0

gamma曲线采样点定义。 位0:2用于样本1。 位3未使用。 位4:6用于样本2。 位7未使用 ... 位28:30用于样本8。 位31未使用

gamma_dx1

gamma曲线采样点定义。 位0:2用于样本9。 位3未使用。 位4:6用于样本10。 位7未使用 ... 位28:30用于样本16。 位31未使用

struct rkisp1_cif_isp_sdg_config

传感器反gamma使用的配置

定义:

struct rkisp1_cif_isp_sdg_config {
    struct rkisp1_cif_isp_gamma_corr_curve curve_r;
    struct rkisp1_cif_isp_gamma_corr_curve curve_g;
    struct rkisp1_cif_isp_gamma_corr_curve curve_b;
    struct rkisp1_cif_isp_gamma_curve_x_axis_pnts xa_pnts;
};

成员

curve_r

红色gamma曲线点定义轴

curve_g

绿色gamma曲线点定义轴

curve_b

蓝色gamma曲线点定义轴

xa_pnts

x轴增量

struct rkisp1_cif_isp_lsc_config

镜头阴影校正使用的配置

定义:

struct rkisp1_cif_isp_lsc_config {
    __u16 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
    __u16 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
    __u16 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
    __u16 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
    __u16 x_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
    __u16 y_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
    __u16 x_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
    __u16 y_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
    __u16 config_width;
    __u16 config_height;
};

成员

r_data_tbl

采样表红色

gr_data_tbl

采样表绿色(红色)

gb_data_tbl

采样表绿色(蓝色)

b_data_tbl

采样表蓝色

x_grad_tbl

梯度表x

y_grad_tbl

梯度表y

x_size_tbl

大小表x

y_size_tbl

大小表y

config_width

目前未使用

config_height

目前未使用

struct rkisp1_cif_isp_ie_config

图像效果使用的配置

定义:

struct rkisp1_cif_isp_ie_config {
    __u16 effect;
    __u16 color_sel;
    __u16 eff_mat_1;
    __u16 eff_mat_2;
    __u16 eff_mat_3;
    __u16 eff_mat_4;
    __u16 eff_mat_5;
    __u16 eff_tint;
};

成员

effect

来自“enum v4l2_colorfx”的值。 可能的值为:V4L2_COLORFX_SEPIA,V4L2_COLORFX_SET_CBCR,V4L2_COLORFX_AQUA,V4L2_COLORFX_EMBOSS,V4L2_COLORFX_SKETCH,V4L2_COLORFX_BW,V4L2_COLORFX_NEGATIVE

color_sel

位0:2 - 颜色位掩码(001 - 蓝色,010 - 绿色,100 - 红色)。 位8:15 - 颜色选择效果的RGB颜色阈值。

eff_mat_1

浮雕效果1的3x3矩阵系数

eff_mat_2

浮雕效果2的3x3矩阵系数

eff_mat_3

浮雕3/草图1的3x3矩阵系数

eff_mat_4

草图效果2的3x3矩阵系数

eff_mat_5

草图效果3的3x3矩阵系数

eff_tint

色调的色度增量值(用于棕褐色效果)

struct rkisp1_cif_isp_cproc_config

颜色处理使用的配置

定义:

struct rkisp1_cif_isp_cproc_config {
    __u8 c_out_range;
    __u8 y_in_range;
    __u8 y_out_range;
    __u8 contrast;
    __u8 brightness;
    __u8 sat;
    __u8 hue;
};

成员

c_out_range

输出时色度像素裁剪范围。 (0表示限制,1表示完整)

y_in_range

输出时亮度像素裁剪范围。

y_out_range

输出时亮度像素裁剪范围。

contrast

00~ff, 0.0~1.992

brightness

80~7F, -128~+127

sat

饱和度,00~FF, 0.0~1.992

hue

80~7F, -90~+87.188

struct rkisp1_cif_isp_awb_meas_config

AWB统计信息的配置

定义:

struct rkisp1_cif_isp_awb_meas_config {
    struct rkisp1_cif_isp_window awb_wnd;
    __u32 awb_mode;
    __u8 max_y;
    __u8 min_y;
    __u8 max_csum;
    __u8 min_c;
    __u8 frames;
    __u8 awb_ref_cr;
    __u8 awb_ref_cb;
    __u8 enable_ymax_cmp;
};

成员

awb_wnd

白平衡测量窗口(以像素为单位)

awb_mode

awb测量模式。 来自enum rkisp1_cif_isp_awb_mode_type。

max_y

只有像素值< max_y才参与awb测量,设置为0以禁用此功能

min_y

只有像素值> min_y才参与awb测量

max_csum

色度总和最大值,仅考虑Cb+Cr小于阈值的像素以进行awb测量

min_c

色度最小值,仅考虑Cb/Cr大于阈值的每个像素值以进行awb测量

frames

用于平均值计算的帧数-1(ucFrames=0表示1帧)

awb_ref_cr

AWB调节的参考Cr值,AWB的目标

awb_ref_cb

AWB调节的参考Cb值,AWB的目标

enable_ymax_cmp

启用Y_MAX比较(在RGB测量模式下无效。)

struct rkisp1_cif_isp_awb_gain_config

自动白平衡增益使用的配置

定义:

struct rkisp1_cif_isp_awb_gain_config {
    __u16 gain_red;
    __u16 gain_green_r;
    __u16 gain_blue;
    __u16 gain_green_b;
};

成员

gain_red

红色分量的增益值。

gain_green_r

红色线中绿色分量的增益值。

gain_blue

蓝色分量的增益值。

gain_green_b

蓝色线中绿色分量的增益值。

描述

此结构中的所有字段均为10位,其中:0x100h = 1,无符号整数值,范围为0到4,具有8位小数部分。

out_data_x = ( AWB_GAIN_X * in_data + 128) >> 8

struct rkisp1_cif_isp_flt_config

ISP过滤使用的配置

定义:

struct rkisp1_cif_isp_flt_config {
    __u32 mode;
    __u8 grn_stage1;
    __u8 chr_h_mode;
    __u8 chr_v_mode;
    __u32 thresh_bl0;
    __u32 thresh_bl1;
    __u32 thresh_sh0;
    __u32 thresh_sh1;
    __u32 lum_weight;
    __u32 fac_sh1;
    __u32 fac_sh0;
    __u32 fac_mid;
    __u32 fac_bl0;
    __u32 fac_bl1;
};

成员

mode

ISP_FILT_MODE寄存器字段(来自enum rkisp1_cif_isp_flt_mode)

grn_stage1

绿色过滤器阶段1选择(范围0x0...0x8)

chr_h_mode

色度过滤器水平模式

chr_v_mode

色度过滤器垂直模式

thresh_bl0

如果thresh_bl1 < sum_grad < thresh_bl0,则选择fac_bl0(模糊th)

thresh_bl1

如果sum_grad < thresh_bl1,则选择fac_bl1(模糊th)

thresh_sh0

如果thresh_sh0 < sum_grad < thresh_sh1,则选择thresh_sh0(锐化th)

thresh_sh1

如果thresh_sh1 < sum_grad,则选择thresh_sh1(锐化th)

lum_weight

亮度权重函数的参数。

fac_sh1

sharp1级别的过滤器因子

fac_sh0

sharp0级别的过滤器因子

fac_mid

中间级别的过滤器因子和静态过滤器模式

fac_bl0

模糊0级别的过滤器因子

fac_bl1

模糊1级别(最大模糊)的过滤器因子

描述

所有4个阈值字段(thresh_*)均为10位。 所有6个因子字段(fac_*)均为6位。

struct rkisp1_cif_isp_bdm_config

Bayer DeMosaic使用的配置

定义:

struct rkisp1_cif_isp_bdm_config {
    __u8 demosaic_th;
};

成员

demosaic_th

Bayer去马赛克纹理检测的阈值

struct rkisp1_cif_isp_ctk_config

串扰校正使用的配置

定义:

struct rkisp1_cif_isp_ctk_config {
    __u16 coeff[3][3];
    __u16 ct_offset[3];
};

成员

coeff

颜色校正矩阵。 这些值是11位有符号定点数,其中4位整数和7位小数部分,范围从-8 (0x400) 到 +7.992 (0x3FF)。 0表示为0x000,系数1表示为0x080。

ct_offset

串扰校正矩阵的红色、绿色、蓝色偏移量

struct rkisp1_cif_isp_goc_config

Gamma输出校正使用的配置

定义:

struct rkisp1_cif_isp_goc_config {
    __u32 mode;
    __u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES];
};

成员

mode

goc模式(来自enum rkisp1_cif_isp_goc_mode)

gamma_y

所有颜色分量的gamma输出曲线y轴

描述

gamma_y的条目数取决于硬件修订版本,如ioctl MEDIA_IOC_DEVICE_INFO返回的struct media_device_info的hw_revision字段报告的那样。

V10具有RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10个条目,V12具有RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12个条目。 RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES等于两者的最大值。

struct rkisp1_cif_isp_hst_config

直方图统计信息的配置

定义:

struct rkisp1_cif_isp_hst_config {
    __u32 mode;
    __u8 histogram_predivider;
    struct rkisp1_cif_isp_window meas_window;
    __u8 hist_weight[RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE];
};

成员

mode

直方图模式(来自enum rkisp1_cif_isp_histogram_mode)

histogram_predivider

处理每个stepsize像素,跳过所有其他像素

meas_window

测量窗口的坐标

hist_weight

子窗口的加权因子

描述

hist_weight的条目数取决于硬件修订版本,如ioctl MEDIA_IOC_DEVICE_INFO返回的struct media_device_info的hw_revision字段报告的那样。

V10具有RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10个条目,V12具有RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12个条目。 RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE等于两者的最大值。

struct rkisp1_cif_isp_aec_config

自动曝光统计信息的配置

定义:

struct rkisp1_cif_isp_aec_config {
    __u32 mode;
    __u32 autostop;
    struct rkisp1_cif_isp_window meas_window;
};

成员

mode

曝光测量模式(来自enum rkisp1_cif_isp_exp_meas_mode

autostop

停止模式(来自enum rkisp1_cif_isp_exp_ctrl_autostop

meas_window

测量窗口的坐标

struct rkisp1_cif_isp_afc_config

自动对焦统计信息的配置

定义:

struct rkisp1_cif_isp_afc_config {
    __u8 num_afm_win;
    struct rkisp1_cif_isp_window afm_win[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
    __u32 thres;
    __u32 var_shift;
};

成员

num_afm_win

最大RKISP1_CIF_ISP_AFM_MAX_WINDOWS

afm_win

测量窗口的坐标

thres

用于最小化噪声影响的阈值

var_shift

计算链末尾的移位操作的位数。

enum rkisp1_cif_isp_dpf_gain_usage

dpf增益使用

常量

RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED

在预处理阶段不使用任何增益

RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS

仅使用来自寄存器DPF_NF_GAIN_R等的噪声函数增益

RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS

仅使用来自LSC模块的增益

RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS

使用噪声函数增益和来自LSC模块的增益

RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS

仅使用来自AWB模块的增益

RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS

使用来自AWB和LSC模块的增益

RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX

上边界(仅用于内部评估)

enum rkisp1_cif_isp_dpf_rb_filtersize

红色和蓝色过滤器大小

常量

RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9

红色和蓝色过滤器内核大小13x9(表示7x5活动像素)

RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9

红色和蓝色过滤器内核大小9x9(表示5x5活动像素)

enum rkisp1_cif_isp_dpf_nll_scale_mode

dpf噪声水平比例模式

常量

RKISP1_CIF_ISP_NLL_SCALE_LINEAR

使用线性比例

RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC

使用对数比例

struct rkisp1_cif_isp_dpf_nll

噪声水平查找

定义:

struct rkisp1_cif_isp_dpf_nll {
    __u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS];
    __u32 scale_mode;
};

成员

coeff

噪声水平查找系数

scale_mode

dpf噪声水平比例模式(来自enum rkisp1_cif_isp_dpf_nll_scale_mode

struct rkisp1_cif_isp_dpf_rb_flt

红蓝过滤器配置

定义:

struct rkisp1_cif_isp_dpf_rb_flt {
    __u32 fltsize;
    __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
    __u8 r_enable;
    __u8 b_enable;
};

成员

fltsize

红色和蓝色像素的过滤器大小(来自enum rkisp1_cif_isp_dpf_rb_filtersize

spatial_coeff

空间权重

r_enable

启用红色像素的过滤器处理

b_enable

启用蓝色像素的过滤器处理

struct rkisp1_cif_isp_dpf_g_flt

绿色过滤器配置

定义:

struct rkisp1_cif_isp_dpf_g_flt {
    __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
    __u8 gr_enable;
    __u8 gb_enable;
};

成员

spatial_coeff

空间权重

gr_enable

启用绿色/红色行中绿色像素的过滤器处理

gb_enable

启用绿色/蓝色行中绿色像素的过滤器处理

struct rkisp1_cif_isp_dpf_gain

噪声函数配置

定义:

struct rkisp1_cif_isp_dpf_gain {
    __u32 mode;
    __u16 nf_r_gain;
    __u16 nf_b_gain;
    __u16 nf_gr_gain;
    __u16 nf_gb_gain;
};

成员

mode

dpf增益使用(来自enum rkisp1_cif_isp_dpf_gain_usage

nf_r_gain

替换红色像素的AWB增益的噪声函数增益

nf_b_gain

替换蓝色像素的AWB增益的噪声函数增益

nf_gr_gain

替换红色行中绿色像素的AWB增益的噪声函数增益

nf_gb_gain

替换蓝色行中绿色像素的AWB增益的噪声函数增益

struct rkisp1_cif_isp_dpf_config

去噪预过滤器使用的配置

定义:

struct rkisp1_cif_isp_dpf_config {
    struct rkisp1_cif_isp_dpf_gain gain;
    struct rkisp1_cif_isp_dpf_g_flt g_flt;
    struct rkisp1_cif_isp_dpf_rb_flt rb_flt;
    struct rkisp1_cif_isp_dpf_nll nll;
};

成员

gain

噪声函数增益

g_flt

绿色过滤器配置

rb_flt

红蓝过滤器配置

nll

噪声水平查找

struct rkisp1_cif_isp_dpf_strength_config

过滤器的强度

定义:

struct rkisp1_cif_isp_dpf_strength_config {
    __u8 r;
    __u8 g;
    __u8 b;
};

成员

r

红色过滤器的过滤器强度

g

绿色过滤器的过滤器强度

b

蓝色过滤器的过滤器强度

struct rkisp1_cif_isp_isp_other_cfg

rockchip isp1中某些块的参数

定义:

struct rkisp1_cif_isp_isp_other_cfg {
    struct rkisp1_cif_isp_dpcc_config dpcc_config;
    struct rkisp1_cif_isp_bls_config bls_config;
    struct rkisp1_cif_isp_sdg_config sdg_config;
    struct rkisp1_cif_isp_lsc_config lsc_config;
    struct rkisp1_cif_isp_awb_gain_config awb_gain_config;
    struct rkisp1_cif_isp_flt_config flt_config;
    struct rkisp1_cif_isp_bdm_config bdm_config;
    struct rkisp1_cif_isp_ctk_config ctk_config;
    struct rkisp1_cif_isp_goc_config goc_config;
    struct rkisp1_cif_isp_dpf_config dpf_config;
    struct rkisp1_cif_isp_dpf_strength_config dpf_strength_config;
    struct rkisp1_cif_isp_cproc_config cproc_config;
    struct rkisp1_cif_isp_ie_config ie_config;
};

成员

dpcc_config

缺陷像素簇校正配置

bls_config

黑电平减法配置

sdg_config

传感器反gamma配置

lsc_config

镜头阴影配置

awb_gain_config

自动白平衡增益配置

flt_config

滤波器配置

bdm_config

去马赛克配置

ctk_config

串扰配置

goc_config

Gamma 输出配置

dpf_config

降噪预滤波器配置

dpf_strength_config

dpf 强度配置

cproc_config

色彩处理配置

ie_config

图像效果配置

struct rkisp1_cif_isp_isp_meas_cfg

Rockchip ISP1 测量参数

定义:

struct rkisp1_cif_isp_isp_meas_cfg {
    struct rkisp1_cif_isp_awb_meas_config awb_meas_config;
    struct rkisp1_cif_isp_hst_config hst_config;
    struct rkisp1_cif_isp_aec_config aec_config;
    struct rkisp1_cif_isp_afc_config afc_config;
};

成员

awb_meas_config

自动白平衡配置

hst_config

直方图配置

aec_config

自动曝光配置

afc_config

自动对焦配置

struct rkisp1_params_cfg

Rockchip ISP1 输入参数元数据

定义:

struct rkisp1_params_cfg {
    __u32 module_en_update;
    __u32 module_ens;
    __u32 module_cfg_update;
    struct rkisp1_cif_isp_isp_meas_cfg meas;
    struct rkisp1_cif_isp_isp_other_cfg others;
};

成员

module_en_update

需要更新的模块使能位的掩码

module_ens

每个模块的使能值的掩码,只更新在 module_en_update 中对应位被设置的模块

module_cfg_update

需要更新的模块配置位的掩码

meas

测量配置

others

其他配置

struct rkisp1_cif_isp_compand_bls_config

Rockchip ISP1 扩展参数 (BLS)

定义:

struct rkisp1_cif_isp_compand_bls_config {
    __u32 r;
    __u32 gr;
    __u32 gb;
    __u32 b;
};

成员

r

拜耳模式 R 的固定减法值

gr

拜耳模式 Gr 的固定减法值

gb

拜耳模式 Gb 的固定减法值

b

拜耳模式 B 的固定减法值

描述

这些值将从传感器值中减去。请注意,与专用的 BLS 块不同,扩展器中的 BLS 值为 20 位无符号。

struct rkisp1_cif_isp_compand_curve_config

Rockchip ISP1 扩展参数(扩展和压缩曲线)

定义:

struct rkisp1_cif_isp_compand_curve_config {
    __u8 px[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
    __u32 x[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
    __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
};

成员

px

扩展曲线 x 值。每个值存储与前一个 x 值的距离,以距离的 log2 表示,占用 5 位。

x

扩展曲线 x 值。由于缺乏硬件文档,这些参数的功能未知,但为了未来的兼容性,这里保留了这些参数。

y

扩展曲线 y 值

struct rkisp1_cif_isp_awb_meas

AWB 测量值

定义:

struct rkisp1_cif_isp_awb_meas {
    __u32 cnt;
    __u8 mean_y_or_g;
    __u8 mean_cb_or_b;
    __u8 mean_cr_or_r;
};

成员

cnt

白色像素计数,上次测量期间找到的“白色像素”数量

mean_y_or_g

窗口和帧内的 Y 平均值,如果选择了 RGB,则为绿色。

mean_cb_or_b

窗口和帧内的 Cb 平均值,如果选择了 RGB,则为蓝色。

mean_cr_or_r

窗口和帧内的 Cr 平均值,如果选择了 RGB,则为红色。

struct rkisp1_cif_isp_awb_stat

统计自动白平衡数据

定义:

struct rkisp1_cif_isp_awb_stat {
    struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID];
};

成员

awb_mean

平均测量数据

struct rkisp1_cif_isp_bls_meas_val

BLS 测量值

定义:

struct rkisp1_cif_isp_bls_meas_val {
    __u16 meas_r;
    __u16 meas_gr;
    __u16 meas_gb;
    __u16 meas_b;
};

成员

meas_r

拜耳模式 R 的平均测量值

meas_gr

拜耳模式 Gr 的平均测量值

meas_gb

拜耳模式 Gb 的平均测量值

meas_b

拜耳模式 B 的平均测量值

struct rkisp1_cif_isp_ae_stat

统计自动曝光数据

定义:

struct rkisp1_cif_isp_ae_stat {
    __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX];
    struct rkisp1_cif_isp_bls_meas_val bls_val;
};

成员

exp_mean

块 xx 的平均亮度值

bls_val

BLS 测量值

描述

exp_mean 的条目数量取决于硬件修订版本,由 ioctl MEDIA_IOC_DEVICE_INFO 返回的 struct media_device_info 的 hw_revision 字段报告。

V10 具有 RKISP1_CIF_ISP_AE_MEAN_MAX_V10 条目,V12 具有 RKISP1_CIF_ISP_AE_MEAN_MAX_V12 条目。RKISP1_CIF_ISP_AE_MEAN_MAX 等于两者的最大值。

在 V10 上,图像被分成 5x5 个块,在 V12 上,图像被分成 9x9 个块。

struct rkisp1_cif_isp_af_meas_val

AF 测量值

定义:

struct rkisp1_cif_isp_af_meas_val {
    __u32 sum;
    __u32 lum;
};

成员

sum

锐度值

lum

亮度值

struct rkisp1_cif_isp_af_stat

统计自动对焦数据

定义:

struct rkisp1_cif_isp_af_stat {
    struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
};

成员

window

窗口 x 的 AF 测量值

描述

该模块通过寄存器设置 (ISP_AFM_*_A/B/C) 测量 3 个可选择大小的窗口中的锐度。

struct rkisp1_cif_isp_hist_stat

统计直方图数据

定义:

struct rkisp1_cif_isp_hist_stat {
    __u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX];
};

成员

hist_bins

测量的 bin 计数器。每个 bin 都是一个 20 位无符号定点类型。位 0-4 是小数部分,位 5-19 是整数部分。

描述

测量区域的窗口被分成 5x5 个子窗口(对于 V10)和 9x9 个子窗口(对于 V12)。然后独立计算每个子窗口的直方图,最终结果是所有子窗口上直方图测量的加权平均值。可以使用 struct rkisp1_cif_isp_hst_config 配置测量区域的窗口和每个子窗口的权重。

直方图在 V10 中包含 16 个 bin,在 V12 中包含 32 个 bin。

hist_bins 的条目数量取决于硬件修订版本,由 ioctl MEDIA_IOC_DEVICE_INFO 返回的 struct media_device_info 的 hw_revision 字段报告。

V10 具有 RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 条目,V12 具有 RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 条目。RKISP1_CIF_ISP_HIST_BIN_N_MAX 等于两者的最大值。

struct rkisp1_cif_isp_stat

Rockchip ISP1 统计数据

定义:

struct rkisp1_cif_isp_stat {
    struct rkisp1_cif_isp_awb_stat awb;
    struct rkisp1_cif_isp_ae_stat ae;
    struct rkisp1_cif_isp_af_stat af;
    struct rkisp1_cif_isp_hist_stat hist;
};

成员

awb

自动白平衡的统计数据

ae

自动曝光的统计数据

af

自动对焦的统计数据

hist

统计直方图数据

struct rkisp1_stat_buffer

Rockchip ISP1 统计元数据

定义:

struct rkisp1_stat_buffer {
    __u32 meas_type;
    __u32 frame_id;
    struct rkisp1_cif_isp_stat params;
};

成员

meas_type

测量类型 (RKISP1_CIF_ISP_STAT_* 定义)

frame_id

用于同步的帧 ID

params

统计数据

enum rkisp1_ext_params_block_type

RkISP1 可扩展参数块类型

常量

RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS

黑电平减法

RKISP1_EXT_PARAMS_BLOCK_TYPE_DPCC

缺陷像素簇校正

RKISP1_EXT_PARAMS_BLOCK_TYPE_SDG

传感器去伽马

RKISP1_EXT_PARAMS_BLOCK_TYPE_AWB_GAIN

自动白平衡增益

RKISP1_EXT_PARAMS_BLOCK_TYPE_FLT

ISP 滤波

RKISP1_EXT_PARAMS_BLOCK_TYPE_BDM

拜耳去马赛克

RKISP1_EXT_PARAMS_BLOCK_TYPE_CTK

串扰校正

RKISP1_EXT_PARAMS_BLOCK_TYPE_GOC

Gamma 输出校正

RKISP1_EXT_PARAMS_BLOCK_TYPE_DPF

降噪预滤波器

RKISP1_EXT_PARAMS_BLOCK_TYPE_DPF_STRENGTH

降噪预滤波器强度

RKISP1_EXT_PARAMS_BLOCK_TYPE_CPROC

色彩处理

RKISP1_EXT_PARAMS_BLOCK_TYPE_IE

图像效果

RKISP1_EXT_PARAMS_BLOCK_TYPE_LSC

镜头阴影校正

RKISP1_EXT_PARAMS_BLOCK_TYPE_AWB_MEAS

自动白平衡统计

RKISP1_EXT_PARAMS_BLOCK_TYPE_HST_MEAS

直方图统计

RKISP1_EXT_PARAMS_BLOCK_TYPE_AEC_MEAS

自动曝光统计

RKISP1_EXT_PARAMS_BLOCK_TYPE_AFC_MEAS

自动对焦统计

RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS

扩展块中的 BLS

RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND

扩展曲线扩展

RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS

扩展压缩曲线

struct rkisp1_ext_params_block_header

RkISP1 可扩展参数块头

定义:

struct rkisp1_ext_params_block_header {
    __u16 type;
    __u16 flags;
    __u32 size;
};

成员

type

参数块类型,请参阅 rkisp1_ext_params_block_type

flags

块标志的位掩码

size

参数块的大小(以字节为单位),包括此标头

描述

此结构表示所有 ISP 配置块的公共部分。每个参数块应嵌入此结构类型的实例作为其第一个成员,后跟特定于块的配置数据。驱动程序检查此公共标头以识别块类型及其大小,并通过将其强制转换为正确的特定于块的类型来正确处理块内容。

type 字段是由 rkisp1_ext_params_block_type 枚举的值之一,并指定驱动程序应如何解释数据。size 字段指定参数块的大小,驱动程序使用它进行验证。

flags 字段是每个块标志 RKISP1_EXT_PARAMS_FL_* 的位掩码。

当用户空间想要配置和启用 ISP 块时,它应完全填充块配置并在 flags 字段中设置 RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE 位。

当用户空间只是想禁用 ISP 块时,应在 flags 字段中设置 RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE 位。在这种情况下,驱动程序会忽略块配置结构的其他部分。

如果要应用 ISP 块的新配置,用户空间应完全填充 ISP 块配置并忽略在 flags 字段中设置 RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE 和 RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE 位。

不允许在 flags 字段中同时设置 RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE 和 RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE 位,驱动程序也不会接受。

用户空间负责正确填充参数块头字段(typeflagssize)和特定于块的参数。

例如

void populate_bls(struct rkisp1_ext_params_block_header *block) {
        struct rkisp1_ext_params_bls_config *bls =
                (struct rkisp1_ext_params_bls_config *)block;

        bls->header.type = RKISP1_EXT_PARAMS_BLOCK_ID_BLS;
        bls->header.flags = RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE;
        bls->header.size = sizeof(*bls);

        bls->config.enable_auto = 0;
        bls->config.fixed_val.r = blackLevelRed_;
        bls->config.fixed_val.gr = blackLevelGreenR_;
        bls->config.fixed_val.gb = blackLevelGreenB_;
        bls->config.fixed_val.b = blackLevelBlue_;
}
struct rkisp1_ext_params_bls_config

RkISP1 可扩展参数 BLS 配置

定义:

struct rkisp1_ext_params_bls_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_bls_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

黑电平减法配置,请参阅 rkisp1_cif_isp_bls_config

描述

RkISP1 可扩展参数黑电平减法配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS 标识。

struct rkisp1_ext_params_dpcc_config

RkISP1 可扩展参数 DPCC 配置

定义:

struct rkisp1_ext_params_dpcc_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_dpcc_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

缺陷像素簇校正配置,请参阅 rkisp1_cif_isp_dpcc_config

描述

RkISP1 可扩展参数缺陷像素簇校正配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_DPCC 标识。

struct rkisp1_ext_params_sdg_config

RkISP1 可扩展参数 SDG 配置

定义:

struct rkisp1_ext_params_sdg_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_sdg_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

传感器去伽马配置,请参阅 rkisp1_cif_isp_sdg_config

描述

RkISP1 可扩展参数传感器去伽马配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_SDG 标识。

struct rkisp1_ext_params_lsc_config

RkISP1 可扩展参数 LSC 配置

定义:

struct rkisp1_ext_params_lsc_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_lsc_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

镜头阴影校正配置,请参阅 rkisp1_cif_isp_lsc_config

描述

RkISP1 可扩展参数镜头阴影校正配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_LSC 标识。

struct rkisp1_ext_params_awb_gain_config

RkISP1 可扩展参数 AWB 增益配置

定义:

struct rkisp1_ext_params_awb_gain_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_awb_gain_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

自动白平衡增益配置,请参阅 rkisp1_cif_isp_awb_gain_config

描述

RkISP1 可扩展参数自动白平衡增益配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_AWB_GAIN 标识。

struct rkisp1_ext_params_flt_config

RkISP1 可扩展参数 FLT 配置

定义:

struct rkisp1_ext_params_flt_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_flt_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

滤波器配置,请参阅 rkisp1_cif_isp_flt_config

描述

RkISP1 可扩展参数滤波器配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_FLT 标识。

struct rkisp1_ext_params_bdm_config

RkISP1 可扩展参数 BDM 配置

定义:

struct rkisp1_ext_params_bdm_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_bdm_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

去马赛克配置,请参阅 rkisp1_cif_isp_bdm_config

描述

RkISP1 可扩展参数去马赛克配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_BDM 标识。

struct rkisp1_ext_params_ctk_config

RkISP1 可扩展参数 CTK 配置

定义:

struct rkisp1_ext_params_ctk_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_ctk_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

串扰配置,请参阅 rkisp1_cif_isp_ctk_config

描述

RkISP1 可扩展参数串扰配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_CTK 标识。

struct rkisp1_ext_params_goc_config

RkISP1 可扩展参数 GOC 配置

定义:

struct rkisp1_ext_params_goc_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_goc_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

Gamma 输出配置,请参阅 rkisp1_cif_isp_goc_config

描述

RkISP1 可扩展参数 Gamma 输出配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_GOC 标识。

struct rkisp1_ext_params_dpf_config

RkISP1 可扩展参数 DPF 配置

定义:

struct rkisp1_ext_params_dpf_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_dpf_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

降噪预滤波器配置,请参阅 rkisp1_cif_isp_dpf_config

描述

RkISP1 可扩展参数降噪预滤波器配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_DPF 标识。

struct rkisp1_ext_params_dpf_strength_config

RkISP1 可扩展参数 DPF 强度配置

定义:

struct rkisp1_ext_params_dpf_strength_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_dpf_strength_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

降噪预滤波器强度配置,请参阅 rkisp1_cif_isp_dpf_strength_config

描述

RkISP1 可扩展参数降噪预滤波器强度配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_DPF_STRENGTH 标识。

struct rkisp1_ext_params_cproc_config

RkISP1 可扩展参数 CPROC 配置

定义:

struct rkisp1_ext_params_cproc_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_cproc_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

色彩处理配置,请参阅 rkisp1_cif_isp_cproc_config

描述

RkISP1 可扩展参数色彩处理配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_CPROC 标识。

struct rkisp1_ext_params_ie_config

RkISP1 可扩展参数 IE 配置

定义:

struct rkisp1_ext_params_ie_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_ie_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

图像效果配置,请参阅 rkisp1_cif_isp_ie_config

描述

RkISP1 可扩展参数图像效果配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_IE 标识。

struct rkisp1_ext_params_awb_meas_config

RkISP1 可扩展参数 AWB Meas 配置

定义:

struct rkisp1_ext_params_awb_meas_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_awb_meas_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

自动白平衡测量配置,请参阅 rkisp1_cif_isp_awb_meas_config

描述

RkISP1 可扩展参数自动白平衡测量配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_AWB_MEAS 标识。

struct rkisp1_ext_params_hst_config

RkISP1 可扩展参数直方图配置

定义:

struct rkisp1_ext_params_hst_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_hst_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

直方图统计配置,请参阅 rkisp1_cif_isp_hst_config

描述

RkISP1 可扩展参数直方图统计配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_HST_MEAS 标识。

struct rkisp1_ext_params_aec_config

RkISP1 可扩展参数 AEC 配置

定义:

struct rkisp1_ext_params_aec_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_aec_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

自动曝光统计配置,请参阅 rkisp1_cif_isp_aec_config

描述

RkISP1 可扩展参数自动曝光统计配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_AEC_MEAS 标识。

struct rkisp1_ext_params_afc_config

RkISP1 可扩展参数 AFC 配置

定义:

struct rkisp1_ext_params_afc_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_afc_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

自动对焦统计配置,请参阅 rkisp1_cif_isp_afc_config

描述

RkISP1 可扩展参数自动对焦统计配置块。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_AFC_MEAS 标识。

struct rkisp1_ext_params_compand_bls_config

RkISP1 可扩展参数 Compand BLS 配置

定义:

struct rkisp1_ext_params_compand_bls_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_compand_bls_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

扩展 BLS 配置,请参阅 rkisp1_cif_isp_compand_bls_config

描述

RkISP1 可扩展参数扩展配置块(黑电平减法)。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS 标识。

struct rkisp1_ext_params_compand_curve_config

RkISP1 可扩展参数 Compand 曲线配置

定义:

struct rkisp1_ext_params_compand_curve_config {
    struct rkisp1_ext_params_block_header header;
    struct rkisp1_cif_isp_compand_curve_config config;
};

成员

header

RkISP1 可扩展参数头,请参阅 rkisp1_ext_params_block_header

config

扩展曲线配置,请参阅 rkisp1_cif_isp_compand_curve_config

描述

RkISP1 可扩展参数扩展配置块(扩展和压缩曲线)。由 RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPANDRKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS 标识。

enum rksip1_ext_param_buffer_version

RkISP1 可扩展参数版本

常量

RKISP1_EXT_PARAM_BUFFER_V1

RkISP1 可扩展参数的第一个版本

struct rkisp1_ext_params_cfg

RkISP1 可扩展参数配置

定义:

struct rkisp1_ext_params_cfg {
    __u32 version;
    __u32 data_size;
    __u8 data[RKISP1_EXT_PARAMS_MAX_SIZE];
};

成员

version

RkISP1 可扩展参数缓冲区版本,请参阅 rksip1_ext_param_buffer_version

data_size

RkISP1 配置数据有效大小,不包括此标头

data

RkISP1 可扩展配置数据块

描述

此结构包含 RkISP1 ISP 算法的配置参数,由用户空间序列化为数据缓冲区。每个配置参数块由一个特定于块的结构表示,该结构包含一个 rkisp1_ext_params_block_header 条目作为第一个成员。用户空间使用它打算配置的块的配置参数填充 data 缓冲区。因此,数据缓冲区有效大小根据用户空间打算配置的 ISP 块的数量而变化,并由用户空间在 data_size 字段中设置。

参数缓冲区由 version 字段进行版本控制,以允许修改和扩展其定义。用户空间应填充 version 字段以通知驱动程序它打算使用的版本。驱动程序将根据特定于指示版本的数据布局来解析和处理 data 缓冲区,如果不支持所需的版本,则返回错误。

当前支持单个 RKISP1_EXT_PARAM_BUFFER_V1 版本。当添加新的格式版本时,将实现一种机制,使用户空间能够以只读 V4L2 控件的形式查询支持的格式版本。如果此类控件不可用,则用户空间应假定驱动程序仅支持 RKISP1_EXT_PARAM_BUFFER_V1。

对于用户空间想要配置的每个 ISP 块,一个特定于块的结构将追加到 data 缓冲区,一个接一个,之间没有间隙或重叠。用户空间应用 data_size 字段填充 data 缓冲区的有效大小(以字节为单位)。

参数缓冲区的预期内存布局是

+-------------------- struct rkisp1_ext_params_cfg -------------------+
| version = RKISP1_EXT_PARAM_BUFFER_V1;                               |
| data_size = sizeof(struct rkisp1_ext_params_bls_config)             |
|           + sizeof(struct rkisp1_ext_params_dpcc_config);           |
| +------------------------- data  ---------------------------------+ |
| | +------------- struct rkisp1_ext_params_bls_config -----------+ | |
| | | +-------- struct rkisp1_ext_params_block_header  ---------+ | | |
| | | | type = RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS;                | | | |
| | | | flags = RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE;              | | | |
| | | | size = sizeof(struct rkisp1_ext_params_bls_config);     | | | |
| | | +---------------------------------------------------------+ | | |
| | | +---------- struct rkisp1_cif_isp_bls_config -------------+ | | |
| | | | enable_auto = 0;                                        | | | |
| | | | fixed_val.r = 256;                                      | | | |
| | | | fixed_val.gr = 256;                                     | | | |
| | | | fixed_val.gb = 256;                                     | | | |
| | | | fixed_val.b = 256;                                      | | | |
| | | +---------------------------------------------------------+ | | |
| | +------------ struct rkisp1_ext_params_dpcc_config -----------+ | |
| | | +-------- struct rkisp1_ext_params_block_header  ---------+ | | |
| | | | type = RKISP1_EXT_PARAMS_BLOCK_TYPE_DPCC;               | | | |
| | | | flags = RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE;              | | | |
| | | | size = sizeof(struct rkisp1_ext_params_dpcc_config);    | | | |
| | | +---------------------------------------------------------+ | | |
| | | +---------- struct rkisp1_cif_isp_dpcc_config ------------+ | | |
| | | | mode = RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE;          | | | |
| | | | output_mode =                                           | | | |
| | | |   RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER; | | | |
| | | | set_use = ... ;                                         | | | |
| | | | ...  = ... ;                                            | | | |
| | | +---------------------------------------------------------+ | | |
| | +-------------------------------------------------------------+ | |
| +-----------------------------------------------------------------+ |
+---------------------------------------------------------------------+