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_offs

horizontal offset from the left of the frame in pixels

v_offs

vertical offset from the top of the frame in pixels

h_size

horizontal size of the window in pixels

v_size

vertical 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_SEL0

after input acquisition

RPPX1_MEAS_CHAN_SEL1

after black level subtraction

RPPX1_MEAS_CHAN_SEL2

after sensor gamma linearization

RPPX1_MEAS_CHAN_SEL3

after lens shading correction

RPPX1_MEAS_CHAN_SEL4

after auto white balance gains

RPPX1_MEAS_CHAN_SEL5

after defect pixel correction

RPPX1_MEAS_CHAN_SEL6

after denoise pre-filter

RPPX1_MEAS_CHAN_SEL7

after 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_POST

AWB Measurement Configuration

RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE1

PRE1 pipe White Balance Gains

RPPX1_PARAMS_BLOCK_TYPE_AWBG_PRE2

PRE2 White Balance Gains

RPPX1_PARAMS_BLOCK_TYPE_AWBG_POST

MAIN_POST White Balance Gains

RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE1

PRE1 pipe Exposure Measurement

RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE2

PRE2 pipe Exposure Measurement

RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE1

PRE1 pipe Histogram Measurement

RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE2

PRE2 pipe Histogram Measurement

RPPX1_PARAMS_BLOCK_TYPE_HIST_POST

POST pipe Histogram Measurement

RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE1

PRE1 pipe Black Level Subtraction

RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE2

PRE2 pipe Black Level Subtraction

RPPX1_PARAMS_BLOCK_TYPE_CCOR_POST

POST pipe Color Correction

RPPX1_PARAMS_BLOCK_TYPE_LSC_PRE1

PRE1 pipe Lens Shading Correction

RPPX1_PARAMS_BLOCK_TYPE_LSC_PRE2

PRE2 pipe Lens Shading Correction

RPPX1_PARAMS_BLOCK_TYPE_GA_HV

Human Vision Pipe Gamma Out Correction

RPPX1_PARAMS_BLOCK_TYPE_GA_MV

Machine Vision Gamma Out Correction

RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1

PRE1 pipe Linearization (Sensor De-gamma)

RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2

PRE2 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_YCBCR

YCbCr measurement mode

RPPX1_WBMEAS_MODE_RGB

RGB 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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_WBMEAS_POST)

wnd

measurement window

mode

measurement mode (from enum rppx1_wbmeas_mode)

ymax_cmp

enable Y_MAX compare using max_y

frames

number of frames for mean value calculation (0 = 1 frame)

reserved

padding

ref_cr_max_r

reference Cr or max red value in RGB mode, 24 bits

ref_cb_max_b

reference Cb or max blue value in RGB mode, 24 bits

min_y_max_g

luminance minimum value or max green value in RGB mode, 24 bits

max_y

luminance maximum value, only valid if mode is set to YCbCr and ymax_cmp is set to enabled, 24 bits

max_csum

chrominance sum maximum value, 24 bits

min_c

chrominance minimum value, 24 bits

ccor_coeff

coefficients for color conversion matrix, signed 16 bits Q4.6

reserved2

padding

ccor_offs

R-G-B color conversion coefficients, signed 25 bits 2’s complement

reserved3

padding

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

header

block 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_red

gain for red component, 18-bit (unsigned Q6.12)

gain_green_r

gain for green component in red lines, 18-bit (unsigned Q6.12)

gain_blue

gain for blue component, 18-bit (unsigned Q6.12)

gain_green_b

gain 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_DISABLED

no measurement

RPPX1_EXP_MEASURING_MODE_RGB

Y/R/G/B measurement

RPPX1_EXP_MEASURING_MODE_BAYER

Bayer 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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE1 or type = RPPX1_PARAMS_BLOCK_TYPE_EXM_PRE2)

wnd

measurement window coordinates

mode

exposure measure mode (from enum rppx1_exm_mode)

last_line

line number for which the exposure measurement completes

channel_sel

exposure measurement point (see enum rppx1_meas_chan)

coeff_r

coefficient for the red Bayer sample or red color channel, Q1.7

coeff_g_gr

coefficient for the green/red Bayer sample or green color channel, Q1.7

coeff_b

coefficient for the blue Bayer sample or blue color channel, Q1.7

coeff_gb

coefficient for the green/blue Bayer sample, unused in RGB mode, Q1.7

reserved

padding

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_DISABLE

histogram disabled

RPPX1_HIST_MODE_RGB_COMBINED

combined RGB histogram

RPPX1_HIST_MODE_R_HISTOGRAM

red channel histogram

RPPX1_HIST_MODE_GR_HISTOGRAM

green/red channel histogram

RPPX1_HIST_MODE_B_HISTOGRAM

blue channel histogram

RPPX1_HIST_MODE_GB_HISTOGRAM

green/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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE1, type = RPPX1_PARAMS_BLOCK_TYPE_HIST_PRE2 or type = RPPX1_PARAMS_BLOCK_TYPE_HIST_POST)

wnd

measurement window coordinates

last_line

line number for which the histogram measurement completes

v_stepsize

vertical subsampling divider, 7 bits

h_step_inc

horizontal subsampling step counter, 17 bits

sample_offs

sample offset, 24 bits

mode

histogram measurement mode (from enum rppx1_hist_mode)

channel_sel

histogram measurement point (see enum rppx1_meas_chan)

weights

weighting factors for each sub-window (5x5 grid)

coeff

R-G-B coefficients, 8 bits unsigned Q1.7

sample_shift

sample shift, 4 bits

reserved

padding

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

a

subtraction value for channel A

b

subtraction value for channel B

c

subtraction value for channel C

d

subtraction 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_FIXED

subtract fixed values

RPPX1_BLS_MODE_MEAS

subtract 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_OFF

disable measurement

RPPX1_BLS_WIN_EN_WIN1

Enable measurement from window 1

RPPX1_BLS_WIN_EN_WIN2

enable measurement from window 2

RPPX1_BLS_WIN_EN_WIN12

enable 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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE1 or type == RPPX1_PARAMS_BLOCK_TYPE_BLS_PRE2)

window1

BLS measurement window 1 (14 bits)

window2

BLS measurement window 2 (14 bits)

fixed

fixed subtraction values (see enum rppx1_bls_fixed)

mode

BLS subtraction mode (see enum rppx1_bls_mode)

en_windows

BLS measurement mode (see rppx1_bls_win_en)

samples

log2 of the number of measured pixels per Bayer position

reserved

padding

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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_CCOR_POST)

coeff

color correction matrix coefficients, 16 bits signed Q4.12

reserved

padding

offset

R, 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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_LSC)

r_data

correction factors for the red channel in Q2.10 format

gr_data

correction factors for the green (red) channel in Q2.10 format

gb_data

correction factors for the green (blue) channel in Q2.10 format

b_data

correction factors for the blue channel in Q2.10 format

x_grad

Interpolation gradients for each horizontal sector (12 bits)

y_grad

Interpolation gradients for each vertical sector (12 bits)

x_sect_size

Horizontal sectors sizes

y_sect_size

Vertical 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_LOGARITHMIC

logarithmic-like segmentation mode

RPPX1_GA_SEG_MODE_EQUIDISTANT

equidistant 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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_GA_HV or type = RPPX1_PARAMS_BLOCK_TYPE_GA_MV)

gamma_y

gamma out curve y-axis values

mode

gamma curve input segmentation mode (see rppx1_ga_seg_mode)

reserved

padding

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

header

block header (type = RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE1 or RPPX1_PARAMS_BLOCK_TYPE_LIN_PRE2)

curve_r

de-gamma linearization curve for red channel

curve_g

de-gamma linearization curve for green channel

curve_b

de-gamma linearization curve for blue channel

dx

input sampling points

reserved

padding

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_POST

post-fusion white-balance measurement

RPPX1_STATS_BLOCK_TYPE_EXM_PRE1

pre-fusion pipe1 exposure measurement

RPPX1_STATS_BLOCK_TYPE_EXM_PRE2

pre-fusion pipe2 exposure measurement

RPPX1_STATS_BLOCK_TYPE_HIST_PRE1

pre-fusion pipe1 histogram

RPPX1_STATS_BLOCK_TYPE_HIST_PRE2

pre-fusion pipe2 histogram

RPPX1_STATS_BLOCK_TYPE_HIST_POST

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

header

block header (type = RPPX1_STATS_BLOCK_TYPE_WBMEAS_POST)

cnt

Number of pixels matched

mean_y_or_g

mean Y (or G in RGB mode) value, 24-bit

mean_cb_or_b

mean Cb (or B in RGB mode) value, 24-bit

mean_cr_or_r

mean 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

header

block header (type = RPPX1_STATS_BLOCK_TYPE_EXM_PRE1)

exp_mean

mean luminance values per block, up to 20-bit

reserved

padding

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

header

block header (type = RPPX1_STATS_BLOCK_TYPE_HIST_POST)

hist_bins

accumulation 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.