hi_isp_cmos_drc

Description

Defines the CMOS parameters of DRC.

Definition

typedef struct {
    hi_bool enable;
    hi_op_mode op_type;

    hi_u16  manual_strength;
    hi_u16  auto_strength;

    hi_u8   spatial_flt_coef;
    hi_u8   range_flt_coef;
    hi_u8   contrast_control;
    hi_s8   detail_adjust_factor;
    hi_u8   range_ada_max;

    hi_u8   grad_rev_max;
    hi_u8   grad_rev_thr;

    hi_u8   bright_gain_lmt;
    hi_u8   bright_gain_lmt_step;
    hi_u8   dark_gain_lmt_y;
    hi_u8   dark_gain_lmt_c;

    hi_u8   purple_reduction_strength;
    hi_u8   local_mixing_bright_max;
    hi_u8   local_mixing_bright_min;
    hi_u8   local_mixing_bright_thr;
    hi_s8   local_mixing_bright_slo;
    hi_u8   local_mixing_dark_max;
    hi_u8   local_mixing_dark_min;
    hi_u8   local_mixing_dark_thr;
    hi_s8   local_mixing_dark_slo;
    hi_u16  color_correction_lut[HI_ISP_DRC_CC_NODE_NUM];
    hi_u16  tone_mapping_value[HI_ISP_DRC_TM_NODE_NUM];

    hi_u8   asymmetry;
    hi_u8   second_pole;
    hi_u8   stretch;
    hi_u8   compress;

    hi_u8   curve_sel;

} hi_isp_cmos_drc;

Members

Member

Description

enable

Enable switch.

The options are as follows:

HI_FALSE: disabled

HI_TRUE: enabled

op_type

DRC operating mode.

The options are as follows:

HI_OP_MODE_AUTO: automatic

HI_OP_MODE_MANUAL: manual

manual_strength

DRC strength in manual mode. A larger value indicates a higher differential gain between the shadow and highlight.

Value range: [0x0, 0x3FF]

auto_strength

DRC strength in automatic mode, which is readable and writable. A larger value indicates greater overall strength.

Value range: [0x0, 0x3FF]

spatial_flt_coef

Spatial filtering coefficient for the filter. A larger value indicates less obvious motion halo and a smaller number of details. A smaller value indicates better details and more obvious motion halo.

Value range: [0x0, 0x5]

range_flt_coef

Range filtering coefficient for the filter. A larger value indicates more obvious halo. And a smaller value indicates less obvious halo but more possible borders at strong edges.

Value range: [0x0, 0xA]

contrast_control

Local contrast control. The parameter effect is related to the image luminance distribution. The recommended value range is 6 to 10.

Value range: [0x0, 0xF]

detail_adjust_factor

Detail adjustment coefficient for the filter. A larger value indicates stronger overall detail.

Value range: [-0xF, 0xF]

range_ada_max

Adaptive range of the filtering coefficient. The filtering coefficient that takes effect is within the range of [range_flt_coef, MIN(range_flt_coef + range_ada_max, 0xA)]. Increasing the value of this parameter helps to weaken the boundaries, but may cause the loss of the details of the backlight object.

Value range: [0x0, 0x8]

grad_rev_max

Strength of border line correction. A larger value indicates that the border line is weakened more obviously, but may cause details loss.

Value range: [0x0, 0x40]

grad_rev_thr

Border line detection threshold. A larger value indicates that the border line is weakened more obviously, but may cause details loss.

Value range: [0x0, 0x80]

bright_gain_lmt

Target value of the luminance gain limit of the bright region. A larger value indicates a higher limit.

Value range: [0x0, 0xF]

bright_gain_lmt_step

Adaptive step of the luminance gain limit of the bright region. A smaller value indicates a higher limit.

Value range: [0x0, 0xF]

dark_gain_lmt_y

Luminance gain limit of the dark region. A larger value indicates a higher limit.

Value range: [0x0, 0x85]

dark_gain_lmt_c

Chrominance gain limit of the dark region A larger value indicates a higher limit.

Value range: [0x0, 0x85]

purple_reduction_strength

Strength of purple fringing correction. A larger value indicates greater correction strength.

Value range: [0x0, 0x80]

local_mixing_bright_max

Parameter used for controlling the maximum gain for positive details (linear detail enhancement)

Value range: [0x0, 0x80]

local_mixing_bright_min

Parameter used for controlling the minimum gain for positive details (linear detail enhancement)

Value range: [0x0, 0x40]

local_mixing_bright_thr

Parameter used for controlling the threshold of the positive detail gain that is adaptive to the luminance (linear detail enhancement). When the pixel luminance exceeds the threshold, the gain shifts from the maximum value to the minimum value (depending on the plus-minus sign of the slope parameter).

Value range: [0x0, 0xFF]

local_mixing_bright_slo

Parameter used for controlling the slope parameter of the positive detail gain that is adaptive to the luminance (linear detail enhancement). A larger absolute value indicates a faster shift from the minimum value to the maximum value and vice versa.

Value range: [-0x7, 0x7]

local_mixing_dark_max

Parameter used for controlling the maximum gain for negative details (linear detail enhancement)

Value range: [0x0, 0x80]

local_mixing_dark_min

Parameter used for controlling the minimum gain for negative details (linear detail enhancement)

Value range: [0x0, 0x40]

local_mixing_dark_thr

Parameter used for controlling the threshold of the negative detail gain that is adaptive to the luminance (linear detail enhancement). When the pixel luminance exceeds the threshold, the gain shifts from the minimum value to the maximum value (depending on the plus-minus sign of the slope parameter).

Value range: [0x0, 0xFF]

local_mixing_dark_slo

Parameter used for controlling the slope parameter of the negative detail gain that is adaptive to the luminance (linear detail enhancement). A larger absolute value indicates a faster shift from the minimum value to the maximum value and vice versa.

Value range: [-0x7, 0x7]

color_correction_lut

Color correction coefficient LUT. A smaller value indicates lower saturation.

Value range: [0x0, 0x400]

#define HI_ISP_DRC_CC_NODE_NUM          33

tone_mapping_value

User-defined tone mapping curve LUT

Value range: [0x0, 0xFFFF]

#define HI_ISP_DRC_TM_NODE_NUM          200

asymmetry

Parameter used for generating the asymmetry curve. A smaller value indicates more obvious luminance stretching in the dark region.

Value range: [1, 30]

second_pole

Parameter used for generating the asymmetry curve. A smaller value indicates stronger luminance suppression in the bright region and better retention of highlighted details.

Value range: [150, 210]

stretch

Parameter used for generating the asymmetry curve. A smaller value indicates brighter overall luminance.

Value range: [30, 60]

compress

Parameter used for generating the asymmetry curve. A smaller value indicates brighter overall luminance.

Value range: [100, 200]

curve_sel

DRC tone mapping curve select.

The options are as follows:

  • 0: asymmetry curve
  • 1: user-defined curve