2.13.10. V4L2_META_FMT_RPPX1_PARAMS (‘DR1P’), V4L2_META_FMT_RPPX1_STATS (‘DR1S’)¶
2.13.10.1. Configuration Parameters¶
The configuration parameters are passed to the metadata output video node, using
the v4l2_meta_format interface. Rather than a single struct containing
sub-structs for each configurable area of the ISP, parameters for the Dreamchip
RPPX1 use the v4l2-isp parameters system, through which groups of parameters are
defined as distinct structs or “blocks” which may be added to the data member of
v4l2_isp_buffer. Userspace is responsible for populating the data
member with the blocks that need to be configured by the driver. Each
block-specific struct embeds v4l2_isp_block_header as its first member
and userspace must populate the type member with a value from
rppx1_params_block_type.
struct v4l2_isp_params_buffer *params =
(struct v4l2_isp_params_buffer *)buffer;
params->version = V4L2_ISP_PARAMS_VERSION_V1;
params->data_size = 0;
void *data = (void *)params->data;
struct rppx1_ccor_params *ccor =
(struct rppx1_ccor_params *)data;
ccor->header.type = RPPX1_PARAMS_BLOCK_TYPE_CCOR_POST;
ccor->header.flags |= V4L2_ISP_PARAMS_FL_BLOCK_ENABLE;
ccor->header.size = sizeof(struct rppx1_ccor_params);
ccor->coeff[0][0] = 0x1000;
ccor->coeff[0][1] = 0x0000;
ccor->coeff[0][2] = 0x0000;
ccor->coeff[1][0] = 0x0000;
ccor->coeff[1][1] = 0x1000;
ccor->coeff[1][2] = 0x0000;
ccor->coeff[2][0] = 0x0000;
ccor->coeff[2][1] = 0x0000;
ccor->coeff[2][2] = 0x1000;
ccor->offset[0] = 0x200000;
ccor->offset[1] = 0x200000;
ccor->offset[2] = 0x200000;
data += sizeof(struct rppx1_ccor_params);
params->data_size += sizeof(struct rppx1_ccor_params);
2.13.10.2. 3A Statistics¶
The ISP device collects different statistics over an input bayer frame. Those
statistics can be obtained by userspace from the metadata capture video node,
using the v4l2_meta_format interface. Rather than a single struct
containing sub-structs for each statistics area of the ISP, statistics for the
Dreamchip RPPX1 use the v4l2-isp statistics system, through which groups of
statistics are defined as distinct structs or “blocks” which may be added to the
data member of v4l2_isp_buffer. Userspace is responsible for parsing
the buffer and extracting the blocks of statistics. Each block-specific struct
embeds v4l2_isp_block_header as its first member and userspace must
interpret the type member with a value from rppx1_stats_block_type.
const struct v4l2_isp_buffer *stats =
(struct v4l2_isp_buffer *)buf;
size_t block_offset = 0;
while (block_offset < stats->data_size) {
const struct v4l2_isp_stats_block_header *block =
(void*)(stats->data + block_offset);
block_offset += block->size;
switch (block->type) {
case RPPX1_STATS_BLOCK_TYPE_HIST_POST:
for (unsigned int i = 0; i < RPPX1_HIST_NUM_BINS; i++)
printf("hist.hist_bins[%u] = 0x%08x\n",
i, hist.hist_bins[%i]);
break;
default:
printf("Unknown block type 0x%04x", block->type);
break;
}
}
2.13.10.3. Dreamchip RPPX1 uAPI data types¶
-
struct rppx1_window¶
Measurement window
Definition:
struct rppx1_window {
__u16 h_offs;
__u16 v_offs;
__u16 h_size;
__u16 v_size;
};
Members
h_offshorizontal offset from the left of the frame in pixels
v_offsvertical offset from the top of the frame in pixels
h_sizehorizontal size of the window in pixels
v_sizevertical size of the window in pixels
Description
RPP-X1 measurement window. Different blocks use a window or multiple windows for measurement purposes. This defines a common type for all of them. The number of relevant bits depends on the block where the window is used and is specified in the per-block description
-
enum rppx1_meas_chan¶
Measurement point for the Histogram and EXM Modules
Constants
RPPX1_MEAS_CHAN_SEL0after input acquisition
RPPX1_MEAS_CHAN_SEL1after black level subtraction
RPPX1_MEAS_CHAN_SEL2after sensor gamma linearization
RPPX1_MEAS_CHAN_SEL3after lens shading correction
RPPX1_MEAS_CHAN_SEL4after auto white balance gains
RPPX1_MEAS_CHAN_SEL5after defect pixel correction
RPPX1_MEAS_CHAN_SEL6after denoise pre-filter
RPPX1_MEAS_CHAN_SEL7after demosaicing
Description
Measurement points for the RPP-X1 Histogram measurement module and Exposure measurement module.
All tap points are available for the PRE1/PRE2 pipes. Only RPPX1_MEAS_CHAN_SEL4 and RPPX1_MEAS_CHAN_SEL7 are available for the MAIN_POST pipe.
-
enum rppx1_params_block_type¶
RPP-X1 extensible params block types
Constants
RPPX1_PARAMS_BLOCK_TYPE_WBMEAS_POSTAWB Measurement Configuration
RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE1PRE1 pipe White Balance Gains
RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE2PRE2 White Balance Gains
RPPX1_PARAMS_BLOCK_TYPE_AWBG_POSTMAIN_POST White Balance Gains
RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE1PRE1 pipe Exposure Measurement
RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE2PRE2 pipe Exposure Measurement
RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE1PRE1 pipe Histogram Measurement
RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE2PRE2 pipe Histogram Measurement
RPPX1_PARAMS_BLOCK_TYPE_HIST_POSTPOST pipe Histogram Measurement
RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE1PRE1 pipe Black Level Subtraction
RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE2PRE2 pipe Black Level Subtraction
RPPX1_PARAMS_BLOCK_TYPE_CCOR_POSTPOST pipe Color Correction
RPPX1_PARAMS_BLOCK_TYPE_LSC_PRE1PRE1 pipe Lens Shading Correction
RPPX1_PARAMS_BLOCK_TYPE_LSC_PRE2PRE2 pipe Lens Shading Correction
RPPX1_PARAMS_BLOCK_TYPE_GA_HVHuman Vision Pipe Gamma Out Correction
RPPX1_PARAMS_BLOCK_TYPE_GA_MVMachine Vision Gamma Out Correction
RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1PRE1 pipe Linearization (Sensor De-gamma)
RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2PRE2 pipe Linearization (Sensor De-gamma)
NOTE
Only append to the enumeration as the numbers are uAPI.
-
enum rppx1_wbmeas_mode¶
AWB measurement mode
Constants
RPPX1_WBMEAS_MODE_YCBCRYCbCr measurement mode
RPPX1_WBMEAS_MODE_RGBRGB measurement mode
-
struct rppx1_wbmeas_params¶
AWB measurement configuration
Definition:
struct rppx1_wbmeas_params {
struct v4l2_isp_params_block_header header;
struct rppx1_window wnd;
__u8 mode;
__u8 ymax_cmp;
__u8 frames;
__u8 reserved;
__u32 ref_cr_max_r;
__u32 ref_cb_max_b;
__u32 min_y_max_g;
__u32 max_y;
__u32 max_csum;
__u32 min_c;
__u16 ccor_coeff[3][3];
__u16 reserved2;
__u32 ccor_offs[3];
__u32 reserved3;
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_WBMEAS_POST)
wndmeasurement window
modemeasurement mode (from
enum rppx1_wbmeas_mode)ymax_cmpenable Y_MAX compare using max_y
framesnumber of frames for mean value calculation (0 = 1 frame)
reservedpadding
ref_cr_max_rreference Cr or max red value in RGB mode, 24 bits
ref_cb_max_breference Cb or max blue value in RGB mode, 24 bits
min_y_max_gluminance minimum value or max green value in RGB mode, 24 bits
max_yluminance maximum value, only valid if mode is set to YCbCr and ymax_cmp is set to enabled, 24 bits
max_csumchrominance sum maximum value, 24 bits
min_cchrominance minimum value, 24 bits
ccor_coeffcoefficients for color conversion matrix, signed 16 bits Q4.6
reserved2padding
ccor_offsR-G-B color conversion coefficients, signed 25 bits 2’s complement
reserved3padding
Description
The Auto-White Balance measurement module is available on the MAIN_POST pipe. It supports two measurement modes, selected by the mode field. The measurement window is programmed through the wnd field.
To support measurement in YCbCr mode a color conversion matrix with programmable offset is available in the ccor_coeff and ccor_offs fields. The color conversion matrix coefficients are represented as 16 bits signed Q4.12 numbers ranging from -8 to +7.99. The per-color channel offsets are represented as 25 bits 2’s complement integer numbers ranging from -16777216 to +16777215.
-
struct rppx1_awbg_params¶
WB gain configuration
Definition:
struct rppx1_awbg_params {
struct v4l2_isp_params_block_header header;
__u32 gain_red;
__u32 gain_green_r;
__u32 gain_blue;
__u32 gain_green_b;
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE1 or type = RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE2 or type = RPPX1_PARAMS_BLOCK_TYPE_AWBG_POST)
gain_redgain for red component, 18-bit (unsigned Q6.12)
gain_green_rgain for green component in red lines, 18-bit (unsigned Q6.12)
gain_bluegain for blue component, 18-bit (unsigned Q6.12)
gain_green_bgain for green component in blue lines, 18-bit (unsigned Q6.12)
Description
The RPP-X1 White Balance Gain module is available in the PRE1 and PRE2 pre-fusion pipes and in the MAIN_POST post-fusion pipe. Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE1, RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE2 or RPPX1_PARAMS_BLOCK_TYPE_AWBG_POST.
The White Balance module allows to specify per-color channel gains, expressed as unsigned fixed-point values as 18 bits unsigned integers in Q6.12 format with a maximum of 63.999.
-
enum rppx1_exm_mode¶
Exposure measurement mode
Constants
RPPX1_EXP_MEASURING_MODE_DISABLEDno measurement
RPPX1_EXP_MEASURING_MODE_RGBY/R/G/B measurement
RPPX1_EXP_MEASURING_MODE_BAYERBayer RGB measurement
Description
Exaposure measurement mode selection (RGB/Bayer).
-
struct rppx1_exm_params¶
Exposure measurement configuration
Definition:
struct rppx1_exm_params {
struct v4l2_isp_params_block_header header;
struct rppx1_window wnd;
__u32 mode;
__u32 last_line;
__u8 channel_sel;
__u8 coeff_r;
__u8 coeff_g_gr;
__u8 coeff_b;
__u8 coeff_gb;
__u8 reserved[3];
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE1 or type = RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE2)
wndmeasurement window coordinates
modeexposure measure mode (from
enum rppx1_exm_mode)last_lineline number for which the exposure measurement completes
channel_selexposure measurement point (see
enum rppx1_meas_chan)coeff_rcoefficient for the red Bayer sample or red color channel, Q1.7
coeff_g_grcoefficient for the green/red Bayer sample or green color channel, Q1.7
coeff_bcoefficient for the blue Bayer sample or blue color channel, Q1.7
coeff_gbcoefficient for the green/blue Bayer sample, unused in RGB mode, Q1.7
reservedpadding
Description
The RPP-X1 Exposure measurement unit is available on the PRE1 and PRE2 pre-fusion pipes. Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE2.
Exposure measurement is performed in the RGB or Bayer domain, according to the setting of the mode field. The exposure measurement tap point is selected according to the value of channel_sel.
The exposure measurement is performed on an input window specified in wnd. To each color component a programmable weight coefficient is associated. Coefficients are represented as unsigned 8 bits integer values in Q1.7 format ranging from 0 to 1.992.
The last_line fields controls when the exposure measurement completes. It is usually programmed to the value of (wnd.v_offs + wnd.v_size + 1).
-
enum rppx1_hist_mode¶
Histogram measurement mode
Constants
RPPX1_HIST_MODE_DISABLEhistogram disabled
RPPX1_HIST_MODE_RGB_COMBINEDcombined RGB histogram
RPPX1_HIST_MODE_R_HISTOGRAMred channel histogram
RPPX1_HIST_MODE_GR_HISTOGRAMgreen/red channel histogram
RPPX1_HIST_MODE_B_HISTOGRAMblue channel histogram
RPPX1_HIST_MODE_GB_HISTOGRAMgreen/blue histogram
Description
Histogram measurement mode. Select which channel or combination of channels the histogram measurement is performed on.
-
struct rppx1_hist_params¶
Histogram measurement configuration
Definition:
struct rppx1_hist_params {
struct v4l2_isp_params_block_header header;
struct rppx1_window wnd;
__u32 last_line;
__u32 v_stepsize;
__u32 h_step_inc;
__u32 sample_offs;
__u8 mode;
__u8 channel_sel;
__u8 weights[RPPX1_HIST_WEIGHT_GRIDS_SIZE];
__u8 coeff[3];
__u8 sample_shift;
__u8 reserved;
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE1, type = RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE2 or type = RPPX1_PARAMS_BLOCK_TYPE_HIST_POST)
wndmeasurement window coordinates
last_lineline number for which the histogram measurement completes
v_stepsizevertical subsampling divider, 7 bits
h_step_inchorizontal subsampling step counter, 17 bits
sample_offssample offset, 24 bits
modehistogram measurement mode (from
enum rppx1_hist_mode)channel_selhistogram measurement point (see
enum rppx1_meas_chan)weightsweighting factors for each sub-window (5x5 grid)
coeffR-G-B coefficients, 8 bits unsigned Q1.7
sample_shiftsample shift, 4 bits
reservedpadding
Description
The RPP-X1 Histogram measurement unit is available on the PRE1, PRE2 and MAIN_POST pipes. Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE1, RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE2 or RPPX1_PARAMS_BLOCK_TYPE_HIST_POST.
The histogram measurement point is selected using the channel field while histogram measurement mode is selected using the mode field.
Histogram measurement is performed by programming subsampling factors using the v_stepsize and h_step_inc fields and by weighted windowing, by programming the size of the measurement window wnd with weights associated to each cell of the 5x5 measurement grid. Weights are represented as 5 bits integer values ranging from 0 to 16.
The last_line fields controls when the histogram measurement completes. It is usually programmed to the value of (wnd.v_offs + wnd.v_size - 1).
Histogram values are calculated by applying a per-color channel coefficient represented as an 8 bits unsigned Q1.7 integer value. The sample_offs and sample_shift fields allow to reduce the color dynamic range on which histogram data are produced.
-
struct rppx1_bls_fixed¶
BLS fixed subtraction values
Definition:
struct rppx1_bls_fixed {
__u32 a;
__u32 b;
__u32 c;
__u32 d;
};
Members
asubtraction value for channel A
bsubtraction value for channel B
csubtraction value for channel C
dsubtraction value for channel D
Description
Fixed black level values subtracted from sensor data per Bayer channel. Negative values result in addition.
The PRE1 pipe BLS module operates on a 24-bits input data and fixed black levels are stored as a signed 2’s complement representation ranging from -2^24 to 2^24-1.
The PRE2 pipe BLS module operates on a 12-bits input data and fixed black levels are stored as a signed 2’s complement representation ranging from -2^12 to 2^12-1.
Userspace is expected to provide fixed black level values with a bit-depth matching the one of pipe in use.
These subtraction values are matched with the sensor native Bayer components ordering according to the cropping configuration on the input port.
-
enum rppx1_bls_mode¶
BLS subtraction mode
Constants
RPPX1_BLS_MODE_FIXEDsubtract fixed values
RPPX1_BLS_MODE_MEASsubtract measured values
Description
Select if subtracted black level come from fixed or measured values.
-
enum rppx1_bls_win_en¶
BLS measurement configuration
Constants
RPPX1_BLS_WIN_EN_OFFdisable measurement
RPPX1_BLS_WIN_EN_WIN1Enable measurement from window 1
RPPX1_BLS_WIN_EN_WIN2enable measurement from window 2
RPPX1_BLS_WIN_EN_WIN12enable measurement from window 1 and window 2
Description
Select the measurement window to use for measured black level values.
-
struct rppx1_bls_params¶
RPP-X1 Black Level Subtraction Module
Definition:
struct rppx1_bls_params {
struct v4l2_isp_params_block_header header;
struct rppx1_window window1;
struct rppx1_window window2;
struct rppx1_bls_fixed fixed;
__u8 mode;
__u8 en_windows;
__u8 samples;
__u8 reserved[5];
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE1 or type == RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE2)
window1BLS measurement window 1 (14 bits)
window2BLS measurement window 2 (14 bits)
fixedfixed subtraction values (see
enum rppx1_bls_fixed)modeBLS subtraction mode (see
enum rppx1_bls_mode)en_windowsBLS measurement mode (see rppx1_bls_win_en)
sampleslog2 of the number of measured pixels per Bayer position
reservedpadding
Description
The RPP-X1 Black Level Subtraction module is available on the PRE1 and PRE2 pre-fusion pipes. Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE2.
The BLS module operates on fixed or measured data according to the setting of the mode field. When RPPX1_BLS_MODE_FIXED is used userspace shall provide the per-channel black levels in fixed. When RPPX1_BLS_MODE_MEAS is used userspace shall configure the measurement windows window1 and optionally window2 to select the optically black pixels region in the input frame. The samples fields controls how many measure samples are used for averaging the measured black levels.
-
struct rppx1_ccor_params¶
Color CORrection configuration
Definition:
struct rppx1_ccor_params {
struct v4l2_isp_params_block_header header;
__u16 coeff[3][3];
__u16 reserved;
__u32 offset[3];
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_CCOR_POST)
coeffcolor correction matrix coefficients, 16 bits signed Q4.12
reservedpadding
offsetR, G, B offsets, 2’s complement 25 bits
Description
The CCOR (Color Correction) module is available on the MAIN_POST pipe. It performs color space correction on a pixel-per-pixel basis using a 3x3 matrix of coefficients and per-color channel offsets.
The matrix coefficients are represented as 16 bits signed fixed point values in Q4.12 format ranging from -8 to +7.999.
The per-channel color offsets are represented as 2’s complement values stored in 25 bits ranging from -16777216 to 16777215.
-
struct rppx1_lsc_params¶
Lens Shading Correction configuration
Definition:
struct rppx1_lsc_params {
struct v4l2_isp_params_block_header header;
__u16 r_data[RPPX1_LSC_SAMPLES_MAX][RPPX1_LSC_SAMPLES_MAX];
__u16 gr_data[RPPX1_LSC_SAMPLES_MAX][RPPX1_LSC_SAMPLES_MAX];
__u16 gb_data[RPPX1_LSC_SAMPLES_MAX][RPPX1_LSC_SAMPLES_MAX];
__u16 b_data[RPPX1_LSC_SAMPLES_MAX][RPPX1_LSC_SAMPLES_MAX];
__u16 x_grad[RPPX1_LSC_NUM_SECTORS];
__u16 y_grad[RPPX1_LSC_NUM_SECTORS];
__u16 x_sect_size[RPPX1_LSC_NUM_SECTORS];
__u16 y_sect_size[RPPX1_LSC_NUM_SECTORS];
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_LSC)
r_datacorrection factors for the red channel in Q2.10 format
gr_datacorrection factors for the green (red) channel in Q2.10 format
gb_datacorrection factors for the green (blue) channel in Q2.10 format
b_datacorrection factors for the blue channel in Q2.10 format
x_gradInterpolation gradients for each horizontal sector (12 bits)
y_gradInterpolation gradients for each vertical sector (12 bits)
x_sect_sizeHorizontal sectors sizes
y_sect_sizeVertical sectors sizes
Description
The RPP-X1 Lens shading correction module is available on the PRE1 and PRE2 pre-fusion pipes. Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_LSC_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_LSC_PRE2.
The module applies per-color channel correction factors r_data, gr_data, gb_data and b_data as a 16x16 grid mapped on the image. The size of each grid segment is expressed by the x_sect_size and y_sect_size arrays. Each segment shall be at least 8 pixels in size and the sum of all horizontal segments x_sect_size shall match the input frame size width.
The correction factors values are expressed as unsigned Q2.10 integers ranging from 1 to 3.999.
Pre-calculated interpolation factors shall be provided in the x_grad and y_grad fields, expressed as 12 bits integer values.
-
enum rppx1_ga_seg_mode¶
Gamma out curve segmentation mode
Constants
RPPX1_GA_SEG_MODE_LOGARITHMIClogarithmic-like segmentation mode
RPPX1_GA_SEG_MODE_EQUIDISTANTequidistant segmentation mode
Description
Segmentation mode of the 16 input sampling points for the Gamma Out Correction module.
-
struct rppx1_ga_params¶
Gamma Out Correction configuration
Definition:
struct rppx1_ga_params {
struct v4l2_isp_params_block_header header;
__u32 gamma_y[RPPX1_GA_MAX_SAMPLES];
__u8 mode;
__u8 reserved[3];
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_GA_HV or type = RPPX1_PARAMS_BLOCK_TYPE_GA_MV)
gamma_ygamma out curve y-axis values
modegamma curve input segmentation mode (see rppx1_ga_seg_mode)
reservedpadding
Description
The Gamma Out Correction module is available on the Human Vision Output Pipe (HV) and the Machine Vision Output Pipe (MV). Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_GA_HV or RPPX1_PARAMS_BLOCK_TYPE_GA_MV.
The module allows to apply a gamma_y gamma correction curve to RGB data represented as a table of 16 entries. The 16 input sampling points can be equidistant or segmented using a logarithmic scale according to the value of mode.
The gamma curve values are 12 bits on the HV output pipe and 24 bits on the MV output pipe. Userspace is expected to provide the curve values with a bit-depth matching the one of pipe in use.
-
struct rppx1_lin_params¶
Linearization (Sensor De-gamma) configuration
Definition:
struct rppx1_lin_params {
struct v4l2_isp_params_block_header header;
__u32 curve_r[RPPX1_LIN_DEGAMMA_CURVE_NUM];
__u32 curve_g[RPPX1_LIN_DEGAMMA_CURVE_NUM];
__u32 curve_b[RPPX1_LIN_DEGAMMA_CURVE_NUM];
__u8 dx[RPPX1_LIN_SAMPLE_POINTS_NUM];
__u32 reserved;
};
Members
headerblock header (type = RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2)
curve_rde-gamma linearization curve for red channel
curve_gde-gamma linearization curve for green channel
curve_bde-gamma linearization curve for blue channel
dxinput sampling points
reservedpadding
Description
The RPP-X1 linearization module is available on the PRE1 and PRE2 pre-fusion pipes. Userspace selects which pipe to operate by setting the header.type field to RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2.
The LIN module applies the per-color channel de-gamma linearization curves curve_r, curve_g and curve_b defined on the input sampling points dx.
For the PRE1 pipe the de-gamma curves values are 24-bits, for the PRE2 pipe the de-gamma curve values are 12-bits.
For the PRE1 pipe de-gamma module sampling points dx values are in the range [0, 15] (4 bits). For the PRE2 pipe de-gamma module sampling points values are in the range [0, 7] (3 bits).
Userspace is expected to provide the curve values and sampling points with a bit-depth matching the one of pipe in use.
-
RPPX1_PARAMS_MAX_SIZE¶
RPPX1_PARAMS_MAX_SIZE
Maximum size of all RPP-X1 parameter blocks
Description
Some types are reported twice as the same block might be instantiated in multiple pipes.
-
enum rppx1_stats_block_type¶
RPP-X1 extensible stats block types
Constants
RPPX1_STATS_BLOCK_TYPE_WBMEAS_POSTpost-fusion white-balance measurement
RPPX1_STATS_BLOCK_TYPE_EXM_PRE1pre-fusion pipe1 exposure measurement
RPPX1_STATS_BLOCK_TYPE_EXM_PRE2pre-fusion pipe2 exposure measurement
RPPX1_STATS_BLOCK_TYPE_HIST_PRE1pre-fusion pipe1 histogram
RPPX1_STATS_BLOCK_TYPE_HIST_PRE2pre-fusion pipe2 histogram
RPPX1_STATS_BLOCK_TYPE_HIST_POSTpost-fusion histogram
NOTE
Only append to the enumeration as the numbers are uAPI.
-
struct rppx1_wbmeas_stats¶
AWB statistics
Definition:
struct rppx1_wbmeas_stats {
struct v4l2_isp_block_header header;
__u32 cnt;
__u32 mean_y_or_g;
__u32 mean_cb_or_b;
__u32 mean_cr_or_r;
};
Members
headerblock header (type = RPPX1_STATS_BLOCK_TYPE_WBMEAS_POST)
cntNumber of pixels matched
mean_y_or_gmean Y (or G in RGB mode) value, 24-bit
mean_cb_or_bmean Cb (or B in RGB mode) value, 24-bit
mean_cr_or_rmean Cr (or R in RGB mode) value, 24-bit
-
struct rppx1_exm_stats¶
Exposure measurement
Definition:
struct rppx1_exm_stats {
struct v4l2_isp_block_header header;
__u32 exp_mean[RPPX1_EXM_NUM_WIN];
__u32 reserved;
};
Members
headerblock header (type = RPPX1_STATS_BLOCK_TYPE_EXM_PRE1)
exp_meanmean luminance values per block, up to 20-bit
reservedpadding
Description
RPP-X1 exposure measurement calculates the mean value on 25 programmable windows on the input picture.
-
struct rppx1_hist_stats¶
Histogram statistics
Definition:
struct rppx1_hist_stats {
struct v4l2_isp_block_header header;
__u32 hist_bins[RPPX1_HIST_NUM_BINS];
};
Members
headerblock header (type = RPPX1_STATS_BLOCK_TYPE_HIST_POST)
hist_binsaccumulation histogram results in unsigned 20-bit Q16.4 format
-
RPPX1_STATS_MAX_SIZE¶
RPPX1_STATS_MAX_SIZE
Maximum size of all RPP-X1 statistics
Description
Some types are reported twice as the same block might be instantiated in multiple pipes.