2.13.7. 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.7.1. 配置参数

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

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

2.13.7.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.7.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.7.2. 3A 和直方图统计信息

ISP1 设备收集输入拜耳帧的不同统计信息。这些统计信息通过使用 v4l2_meta_format 接口从 rkisp1_stats 元数据捕获视频节点获得。缓冲区包含 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.7.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

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

gr

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

gb

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

b

拜耳模式 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

为每个拜耳位置(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 字段,结果是所有启用方法的逻辑 AND。其余字段设置每个方法的阈值和因子。

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 字段配置和选择三组方法。结果是所有启用集的逻辑 OR。

struct rkisp1_cif_isp_gamma_corr_curve

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

定义:

struct rkisp1_cif_isp_gamma_corr_curve {
    __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
};

成员

gamma_y

伽马曲线点的 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

De-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

传感器去伽马校正使用的配置

定义:

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

红色伽马曲线点定义轴

curve_g

绿色伽马曲线点定义轴

curve_b

蓝色伽马曲线点定义轴

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(模糊阈值)

thresh_bl1

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

thresh_sh0

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

thresh_sh1

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

lum_weight

亮度权重函数的参数。

fac_sh1

锐化 1 级别的滤波因子

fac_sh0

锐化 0 级别的滤波因子

fac_mid

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

fac_bl0

模糊 0 级别的滤波因子

fac_bl1

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

描述

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

struct rkisp1_cif_isp_bdm_config

拜耳去马赛克使用的配置

定义:

struct rkisp1_cif_isp_bdm_config {
    __u8 demosaic_th;
};

成员

demosaic_th

用于拜耳去马赛克纹理检测的阈值

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

伽马输出校正使用的配置

定义:

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

所有颜色分量的伽马输出曲线 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

处理每一步的像素,跳过所有其他像素

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

传感器去伽玛配置

lsc_config

镜头阴影配置

awb_gain_config

自动白平衡增益配置

flt_config

滤波器配置

bdm_config

去马赛克配置

ctk_config

串扰配置

goc_config

伽玛输出配置

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 是整数部分。

描述

测量区域的窗口在 V10 中划分为 5x5 子窗口,在 V12 中划分为 9x9 子窗口。然后,独立地计算每个子窗口的直方图,最终结果是对所有子窗口上的直方图测量的加权平均值。可以使用结构体 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

伽马输出校正

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

伽马输出配置,请参阅 rkisp1_cif_isp_goc_config

描述

RkISP1 可扩展参数伽马输出配置块。由 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 测量配置

定义:

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

Companding BLS 配置,请参考 rkisp1_cif_isp_compand_bls_config

描述

RkISP1 可扩展参数 Companding 配置块(黑电平减法)。由 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

Companding 曲线配置,请参考 rkisp1_cif_isp_compand_curve_config

描述

RkISP1 可扩展参数 Companding 配置块(扩展和压缩曲线)。由 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];
};

成员

版本

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 缓冲区的有效大小(以字节为单位)填充 data_size 字段。

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

+-------------------- struct rkisp1_ext_params_cfg -------------------+
| version = RKISP_EXT_PARAMS_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 = ... ;                                         | | | |
| | | | ...  = ... ;                                            | | | |
| | | +---------------------------------------------------------+ | | |
| | +-------------------------------------------------------------+ | |
| +-----------------------------------------------------------------+ |
+---------------------------------------------------------------------+