1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4*437bfbebSnyanmisaka */ 5*437bfbebSnyanmisaka 6*437bfbebSnyanmisaka #ifndef __VDPP_API_H__ 7*437bfbebSnyanmisaka #define __VDPP_API_H__ 8*437bfbebSnyanmisaka 9*437bfbebSnyanmisaka #include <stdbool.h> 10*437bfbebSnyanmisaka 11*437bfbebSnyanmisaka #include "mpp_debug.h" 12*437bfbebSnyanmisaka #include "mpp_frame.h" 13*437bfbebSnyanmisaka 14*437bfbebSnyanmisaka #define CEIL(a) (int)( (double)(a) > (int)(a) ? (int)((a)+1) : (int)(a) ) 15*437bfbebSnyanmisaka #define FLOOR(a) (int)( (double)(a) < (int)(a) ? (int)((a)-1) : (int)(a) ) 16*437bfbebSnyanmisaka #define ROUND(a) (int)( (a) > 0 ? ((double) (a) + 0.5) : ((double) (a) - 0.5) ) 17*437bfbebSnyanmisaka 18*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_GLOBAL_HIST_BIN_BITS (8) 19*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_GLOBAL_HIST_BIN_NUMS (1 << (RKVOP_PQ_PREPROCESS_GLOBAL_HIST_BIN_BITS)) 20*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_HIST_BITS_VERI (4) 21*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_HIST_BITS_HORI (4) 22*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_HIST_SIZE_VERI (1 << RKVOP_PQ_PREPROCESS_HIST_BITS_VERI) /* 16 */ 23*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_HIST_SIZE_HORI (1 << RKVOP_PQ_PREPROCESS_HIST_BITS_HORI) /* 16 */ 24*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_LOCAL_HIST_BIN_BITS (4) 25*437bfbebSnyanmisaka #define RKVOP_PQ_PREPROCESS_LOCAL_HIST_BIN_NUMS (1 << (RKVOP_PQ_PREPROCESS_LOCAL_HIST_BIN_BITS)) 26*437bfbebSnyanmisaka 27*437bfbebSnyanmisaka #define VDPP_COLOR_SPACE_LIMIT_RANGE (0) 28*437bfbebSnyanmisaka #define VDPP_COLOR_SPACE_FULL_RANGE (1) 29*437bfbebSnyanmisaka 30*437bfbebSnyanmisaka #define VDPP_CAP_UNSUPPORTED (0) 31*437bfbebSnyanmisaka #define VDPP_CAP_VEP (1 << 0) 32*437bfbebSnyanmisaka #define VDPP_CAP_HIST (1 << 1) 33*437bfbebSnyanmisaka 34*437bfbebSnyanmisaka #define VDPP_WORK_MODE_VEP (2) 35*437bfbebSnyanmisaka #define VDPP_WORK_MODE_DCI (3) /* hist mode */ 36*437bfbebSnyanmisaka 37*437bfbebSnyanmisaka #define VDPP_DMSR_EN (4) 38*437bfbebSnyanmisaka #define VDPP_ES_EN (2) 39*437bfbebSnyanmisaka #define VDPP_SHARP_EN (1) 40*437bfbebSnyanmisaka 41*437bfbebSnyanmisaka /* DCI horizontal scale down mode select */ 42*437bfbebSnyanmisaka #define VDPP_DCI_HSD_DISABLE (0) 43*437bfbebSnyanmisaka #define VDPP_DCI_HSD_MODE_1 (1) 44*437bfbebSnyanmisaka /* DCI vertical scale down mode select */ 45*437bfbebSnyanmisaka #define VDPP_DCI_VSD_DISABLE (0) 46*437bfbebSnyanmisaka #define VDPP_DCI_VSD_MODE_1 (1) 47*437bfbebSnyanmisaka #define VDPP_DCI_VSD_MODE_2 (2) 48*437bfbebSnyanmisaka 49*437bfbebSnyanmisaka enum VDPP_FMT { 50*437bfbebSnyanmisaka VDPP_FMT_YUV444 = 0, 51*437bfbebSnyanmisaka VDPP_FMT_YUV420 = 3, 52*437bfbebSnyanmisaka }; 53*437bfbebSnyanmisaka 54*437bfbebSnyanmisaka enum VDPP_YUV_SWAP { 55*437bfbebSnyanmisaka VDPP_YUV_SWAP_SP_UV, 56*437bfbebSnyanmisaka VDPP_YUV_SWAP_SP_VU, 57*437bfbebSnyanmisaka }; 58*437bfbebSnyanmisaka 59*437bfbebSnyanmisaka enum VDPP_PARAM_TYPE { 60*437bfbebSnyanmisaka VDPP_PARAM_TYPE_COM, 61*437bfbebSnyanmisaka VDPP_PARAM_TYPE_DMSR, 62*437bfbebSnyanmisaka VDPP_PARAM_TYPE_ZME_COM, 63*437bfbebSnyanmisaka VDPP_PARAM_TYPE_ZME_COEFF, 64*437bfbebSnyanmisaka VDPP_PARAM_TYPE_COM2 = 0x10, 65*437bfbebSnyanmisaka VDPP_PARAM_TYPE_ES, 66*437bfbebSnyanmisaka VDPP_PARAM_TYPE_HIST, 67*437bfbebSnyanmisaka VDPP_PARAM_TYPE_SHARP, 68*437bfbebSnyanmisaka }; 69*437bfbebSnyanmisaka 70*437bfbebSnyanmisaka typedef enum VdppCmd_e { 71*437bfbebSnyanmisaka VDPP_CMD_INIT, /* reset msg to all zero */ 72*437bfbebSnyanmisaka VDPP_CMD_SET_SRC, /* config source image info */ 73*437bfbebSnyanmisaka VDPP_CMD_SET_DST, /* config destination image info */ 74*437bfbebSnyanmisaka VDPP_CMD_SET_COM_CFG, 75*437bfbebSnyanmisaka /* DMSR command */ 76*437bfbebSnyanmisaka VDPP_CMD_SET_DMSR_CFG = 0x0100, /* config DMSR configure */ 77*437bfbebSnyanmisaka /* ZME command */ 78*437bfbebSnyanmisaka VDPP_CMD_SET_ZME_COM_CFG = 0x0200, /* config ZME COM configure */ 79*437bfbebSnyanmisaka VDPP_CMD_SET_ZME_COEFF_CFG, /* config ZME COEFF configure */ 80*437bfbebSnyanmisaka /* hardware trigger command */ 81*437bfbebSnyanmisaka VDPP_CMD_RUN_SYNC = 0x1000, /* start sync mode process */ 82*437bfbebSnyanmisaka VDPP_CMD_SET_COM2_CFG = 0x2000, /* config common params for RK3576 */ 83*437bfbebSnyanmisaka VDPP_CMD_SET_DST_C, /* config destination chroma info */ 84*437bfbebSnyanmisaka VDPP_CMD_SET_HIST_FD, /* config dci hist fd */ 85*437bfbebSnyanmisaka VDPP_CMD_SET_ES, /* config ES configure */ 86*437bfbebSnyanmisaka VDPP_CMD_SET_DCI_HIST, /* config dci hist configure */ 87*437bfbebSnyanmisaka VDPP_CMD_SET_SHARP, /* config sharp configure */ 88*437bfbebSnyanmisaka } VdppCmd; 89*437bfbebSnyanmisaka 90*437bfbebSnyanmisaka typedef void* VdppCtx; 91*437bfbebSnyanmisaka typedef struct vdpp_com_ctx_t vdpp_com_ctx; 92*437bfbebSnyanmisaka 93*437bfbebSnyanmisaka typedef struct VdppImg_t { 94*437bfbebSnyanmisaka RK_U32 mem_addr; /* base address fd */ 95*437bfbebSnyanmisaka RK_U32 uv_addr; /* chroma address fd + (offset << 10) */ 96*437bfbebSnyanmisaka RK_U32 uv_off; 97*437bfbebSnyanmisaka } VdppImg; 98*437bfbebSnyanmisaka 99*437bfbebSnyanmisaka typedef struct vdpp_com_ops_t { 100*437bfbebSnyanmisaka MPP_RET (*init)(VdppCtx *ctx); 101*437bfbebSnyanmisaka MPP_RET (*deinit)(VdppCtx ctx); 102*437bfbebSnyanmisaka MPP_RET (*control)(VdppCtx ctx, VdppCmd cmd, void *param); 103*437bfbebSnyanmisaka void (*release)(vdpp_com_ctx *ctx); 104*437bfbebSnyanmisaka RK_S32 (*check_cap)(VdppCtx ctx); 105*437bfbebSnyanmisaka MPP_RET (*reserve[3])(VdppCtx *ctx); 106*437bfbebSnyanmisaka } vdpp_com_ops; 107*437bfbebSnyanmisaka 108*437bfbebSnyanmisaka typedef struct vdpp_com_ctx_t { 109*437bfbebSnyanmisaka vdpp_com_ops *ops; 110*437bfbebSnyanmisaka VdppCtx priv; 111*437bfbebSnyanmisaka RK_S32 ver; 112*437bfbebSnyanmisaka } vdpp_com_ctx; 113*437bfbebSnyanmisaka 114*437bfbebSnyanmisaka union vdpp_api_content { 115*437bfbebSnyanmisaka struct { 116*437bfbebSnyanmisaka enum VDPP_YUV_SWAP sswap; 117*437bfbebSnyanmisaka enum VDPP_FMT dfmt; 118*437bfbebSnyanmisaka enum VDPP_YUV_SWAP dswap; 119*437bfbebSnyanmisaka RK_S32 src_width; 120*437bfbebSnyanmisaka RK_S32 src_height; 121*437bfbebSnyanmisaka RK_S32 dst_width; 122*437bfbebSnyanmisaka RK_S32 dst_height; 123*437bfbebSnyanmisaka } com; 124*437bfbebSnyanmisaka 125*437bfbebSnyanmisaka struct { 126*437bfbebSnyanmisaka bool enable; 127*437bfbebSnyanmisaka RK_U32 str_pri_y; 128*437bfbebSnyanmisaka RK_U32 str_sec_y; 129*437bfbebSnyanmisaka RK_U32 dumping_y; 130*437bfbebSnyanmisaka RK_U32 wgt_pri_gain_even_1; 131*437bfbebSnyanmisaka RK_U32 wgt_pri_gain_even_2; 132*437bfbebSnyanmisaka RK_U32 wgt_pri_gain_odd_1; 133*437bfbebSnyanmisaka RK_U32 wgt_pri_gain_odd_2; 134*437bfbebSnyanmisaka RK_U32 wgt_sec_gain; 135*437bfbebSnyanmisaka RK_U32 blk_flat_th; 136*437bfbebSnyanmisaka RK_U32 contrast_to_conf_map_x0; 137*437bfbebSnyanmisaka RK_U32 contrast_to_conf_map_x1; 138*437bfbebSnyanmisaka RK_U32 contrast_to_conf_map_y0; 139*437bfbebSnyanmisaka RK_U32 contrast_to_conf_map_y1; 140*437bfbebSnyanmisaka RK_U32 diff_core_th0; 141*437bfbebSnyanmisaka RK_U32 diff_core_th1; 142*437bfbebSnyanmisaka RK_U32 diff_core_wgt0; 143*437bfbebSnyanmisaka RK_U32 diff_core_wgt1; 144*437bfbebSnyanmisaka RK_U32 diff_core_wgt2; 145*437bfbebSnyanmisaka RK_U32 edge_th_low_arr[7]; 146*437bfbebSnyanmisaka RK_U32 edge_th_high_arr[7]; 147*437bfbebSnyanmisaka } dmsr; 148*437bfbebSnyanmisaka 149*437bfbebSnyanmisaka struct { 150*437bfbebSnyanmisaka bool bypass_enable; 151*437bfbebSnyanmisaka bool dering_enable; 152*437bfbebSnyanmisaka RK_U32 dering_sen_0; 153*437bfbebSnyanmisaka RK_U32 dering_sen_1; 154*437bfbebSnyanmisaka RK_U32 dering_blend_alpha; 155*437bfbebSnyanmisaka RK_U32 dering_blend_beta; 156*437bfbebSnyanmisaka RK_S16 (*tap8_coeff)[17][8]; 157*437bfbebSnyanmisaka RK_S16 (*tap6_coeff)[17][8]; 158*437bfbebSnyanmisaka } zme; 159*437bfbebSnyanmisaka 160*437bfbebSnyanmisaka struct { 161*437bfbebSnyanmisaka MppFrameFormat sfmt; 162*437bfbebSnyanmisaka enum VDPP_YUV_SWAP sswap; 163*437bfbebSnyanmisaka enum VDPP_FMT dfmt; 164*437bfbebSnyanmisaka enum VDPP_YUV_SWAP dswap; 165*437bfbebSnyanmisaka RK_U32 src_width; 166*437bfbebSnyanmisaka RK_U32 src_height; 167*437bfbebSnyanmisaka RK_U32 src_width_vir; 168*437bfbebSnyanmisaka RK_U32 src_height_vir; 169*437bfbebSnyanmisaka RK_U32 dst_width; 170*437bfbebSnyanmisaka RK_U32 dst_height; 171*437bfbebSnyanmisaka RK_U32 dst_width_vir; 172*437bfbebSnyanmisaka RK_U32 dst_height_vir; 173*437bfbebSnyanmisaka RK_U32 yuv_out_diff; 174*437bfbebSnyanmisaka RK_U32 dst_c_width; 175*437bfbebSnyanmisaka RK_U32 dst_c_height; 176*437bfbebSnyanmisaka RK_U32 dst_c_width_vir; 177*437bfbebSnyanmisaka RK_U32 dst_c_height_vir; 178*437bfbebSnyanmisaka RK_U32 hist_mode_en; /* 0 - vdpp, 1 - hist */ 179*437bfbebSnyanmisaka /* high 16 bit: mask; low 3 bit: dmsr|es|sharp */ 180*437bfbebSnyanmisaka RK_U32 cfg_set; 181*437bfbebSnyanmisaka } com2; 182*437bfbebSnyanmisaka 183*437bfbebSnyanmisaka struct { 184*437bfbebSnyanmisaka RK_U32 es_bEnabledES; 185*437bfbebSnyanmisaka RK_U32 es_iAngleDelta; 186*437bfbebSnyanmisaka RK_U32 es_iAngleDeltaExtra; 187*437bfbebSnyanmisaka RK_U32 es_iGradNoDirTh; 188*437bfbebSnyanmisaka RK_U32 es_iGradFlatTh; 189*437bfbebSnyanmisaka RK_U32 es_iWgtGain; 190*437bfbebSnyanmisaka RK_U32 es_iWgtDecay; 191*437bfbebSnyanmisaka RK_U32 es_iLowConfTh; 192*437bfbebSnyanmisaka RK_U32 es_iLowConfRatio; 193*437bfbebSnyanmisaka RK_U32 es_iConfCntTh; 194*437bfbebSnyanmisaka RK_U32 es_iWgtLocalTh; 195*437bfbebSnyanmisaka RK_U32 es_iK1; 196*437bfbebSnyanmisaka RK_U32 es_iK2; 197*437bfbebSnyanmisaka RK_U32 es_iDeltaLimit; 198*437bfbebSnyanmisaka RK_U32 es_iDiff2conf_lut_x[9]; 199*437bfbebSnyanmisaka RK_U32 es_iDiff2conf_lut_y[9]; 200*437bfbebSnyanmisaka RK_U32 es_bEndpointCheckEnable; 201*437bfbebSnyanmisaka /* generated by es_iAngleDelta and es_iAngleDeltaExtra */ 202*437bfbebSnyanmisaka RK_U32 es_tan_hi_th; 203*437bfbebSnyanmisaka RK_U32 es_tan_lo_th; 204*437bfbebSnyanmisaka } es; 205*437bfbebSnyanmisaka 206*437bfbebSnyanmisaka struct { 207*437bfbebSnyanmisaka RK_U32 hist_cnt_en; 208*437bfbebSnyanmisaka RK_U32 dci_hsd_mode; 209*437bfbebSnyanmisaka RK_U32 dci_vsd_mode; 210*437bfbebSnyanmisaka RK_U32 dci_yrgb_gather_num; 211*437bfbebSnyanmisaka RK_U32 dci_yrgb_gather_en; 212*437bfbebSnyanmisaka RK_U32 dci_csc_range; 213*437bfbebSnyanmisaka } hist; 214*437bfbebSnyanmisaka 215*437bfbebSnyanmisaka struct { 216*437bfbebSnyanmisaka RK_S32 sharp_enable; 217*437bfbebSnyanmisaka RK_S32 sharp_coloradj_bypass_en; 218*437bfbebSnyanmisaka 219*437bfbebSnyanmisaka RK_S32 lti_h_enable; 220*437bfbebSnyanmisaka RK_S32 lti_h_radius; 221*437bfbebSnyanmisaka RK_S32 lti_h_slope; 222*437bfbebSnyanmisaka RK_S32 lti_h_thresold; 223*437bfbebSnyanmisaka RK_S32 lti_h_gain; 224*437bfbebSnyanmisaka RK_S32 lti_h_noise_thr_pos; 225*437bfbebSnyanmisaka RK_S32 lti_h_noise_thr_neg; 226*437bfbebSnyanmisaka 227*437bfbebSnyanmisaka RK_S32 lti_v_enable; 228*437bfbebSnyanmisaka RK_S32 lti_v_radius; 229*437bfbebSnyanmisaka RK_S32 lti_v_slope; 230*437bfbebSnyanmisaka RK_S32 lti_v_thresold; 231*437bfbebSnyanmisaka RK_S32 lti_v_gain; 232*437bfbebSnyanmisaka RK_S32 lti_v_noise_thr_pos; 233*437bfbebSnyanmisaka RK_S32 lti_v_noise_thr_neg; 234*437bfbebSnyanmisaka 235*437bfbebSnyanmisaka RK_S32 cti_h_enable; 236*437bfbebSnyanmisaka RK_S32 cti_h_radius; 237*437bfbebSnyanmisaka RK_S32 cti_h_slope; 238*437bfbebSnyanmisaka RK_S32 cti_h_thresold; 239*437bfbebSnyanmisaka RK_S32 cti_h_gain; 240*437bfbebSnyanmisaka RK_S32 cti_h_noise_thr_pos; 241*437bfbebSnyanmisaka RK_S32 cti_h_noise_thr_neg; 242*437bfbebSnyanmisaka 243*437bfbebSnyanmisaka RK_S32 peaking_enable; 244*437bfbebSnyanmisaka RK_S32 peaking_gain; 245*437bfbebSnyanmisaka 246*437bfbebSnyanmisaka RK_S32 peaking_coring_enable; 247*437bfbebSnyanmisaka RK_S32 peaking_coring_zero[8]; 248*437bfbebSnyanmisaka RK_S32 peaking_coring_thr[8]; 249*437bfbebSnyanmisaka RK_S32 peaking_coring_ratio[8]; 250*437bfbebSnyanmisaka 251*437bfbebSnyanmisaka RK_S32 peaking_gain_enable; 252*437bfbebSnyanmisaka RK_S32 peaking_gain_pos[8]; 253*437bfbebSnyanmisaka RK_S32 peaking_gain_neg[8]; 254*437bfbebSnyanmisaka 255*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_enable; 256*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_pos0[8]; 257*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_pos1[8]; 258*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_neg0[8]; 259*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_neg1[8]; 260*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_ratio[8]; 261*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_bnd_pos[8]; 262*437bfbebSnyanmisaka RK_S32 peaking_limit_ctrl_bnd_neg[8]; 263*437bfbebSnyanmisaka 264*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_enable; 265*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_non_dir_thr; 266*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_dir_cmp_ratio; 267*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_non_dir_wgt_offset; 268*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_non_dir_wgt_ratio; 269*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_dir_cnt_thr; 270*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_dir_cnt_avg; 271*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_dir_cnt_offset; 272*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_diag_dir_thr; 273*437bfbebSnyanmisaka RK_S32 peaking_edge_ctrl_diag_adj_gain_tab[8]; 274*437bfbebSnyanmisaka 275*437bfbebSnyanmisaka RK_S32 peaking_estc_enable; 276*437bfbebSnyanmisaka RK_S32 peaking_estc_delta_offset_h; 277*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_h; 278*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_h; 279*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_unlimit_h; 280*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_unlimit_h; 281*437bfbebSnyanmisaka RK_S32 peaking_estc_delta_offset_v; 282*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_v; 283*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_v; 284*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_unlimit_v; 285*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_unlimit_v; 286*437bfbebSnyanmisaka RK_S32 peaking_estc_delta_offset_d0; 287*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_d0; 288*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_d0; 289*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_unlimit_d0; 290*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_unlimit_d0; 291*437bfbebSnyanmisaka RK_S32 peaking_estc_delta_offset_d1; 292*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_d1; 293*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_d1; 294*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_unlimit_d1; 295*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_unlimit_d1; 296*437bfbebSnyanmisaka RK_S32 peaking_estc_delta_offset_non; 297*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_non; 298*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_non; 299*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_over_unlimit_non; 300*437bfbebSnyanmisaka RK_S32 peaking_estc_alpha_under_unlimit_non; 301*437bfbebSnyanmisaka RK_S32 peaking_filter_cfg_diag_enh_coef; 302*437bfbebSnyanmisaka 303*437bfbebSnyanmisaka RK_S32 peaking_filt_core_H0[6]; 304*437bfbebSnyanmisaka RK_S32 peaking_filt_core_H1[6]; 305*437bfbebSnyanmisaka RK_S32 peaking_filt_core_H2[6]; 306*437bfbebSnyanmisaka RK_S32 peaking_filt_core_H3[6]; 307*437bfbebSnyanmisaka RK_S32 peaking_filt_core_V0[3]; 308*437bfbebSnyanmisaka RK_S32 peaking_filt_core_V1[3]; 309*437bfbebSnyanmisaka RK_S32 peaking_filt_core_V2[3]; 310*437bfbebSnyanmisaka RK_S32 peaking_filt_core_USM[3]; 311*437bfbebSnyanmisaka 312*437bfbebSnyanmisaka RK_S32 shootctrl_enable; 313*437bfbebSnyanmisaka RK_S32 shootctrl_filter_radius; 314*437bfbebSnyanmisaka RK_S32 shootctrl_delta_offset; 315*437bfbebSnyanmisaka RK_S32 shootctrl_alpha_over; 316*437bfbebSnyanmisaka RK_S32 shootctrl_alpha_under; 317*437bfbebSnyanmisaka RK_S32 shootctrl_alpha_over_unlimit; 318*437bfbebSnyanmisaka RK_S32 shootctrl_alpha_under_unlimit; 319*437bfbebSnyanmisaka 320*437bfbebSnyanmisaka RK_S32 global_gain_enable; 321*437bfbebSnyanmisaka RK_S32 global_gain_lum_mode; 322*437bfbebSnyanmisaka RK_S32 global_gain_lum_grd[6]; 323*437bfbebSnyanmisaka RK_S32 global_gain_lum_val[6]; 324*437bfbebSnyanmisaka RK_S32 global_gain_adp_grd[6]; 325*437bfbebSnyanmisaka RK_S32 global_gain_adp_val[6]; 326*437bfbebSnyanmisaka RK_S32 global_gain_var_grd[6]; 327*437bfbebSnyanmisaka RK_S32 global_gain_var_val[6]; 328*437bfbebSnyanmisaka 329*437bfbebSnyanmisaka RK_S32 color_ctrl_enable; 330*437bfbebSnyanmisaka 331*437bfbebSnyanmisaka RK_S32 color_ctrl_p0_scaling_coef; 332*437bfbebSnyanmisaka RK_S32 color_ctrl_p0_point_u; 333*437bfbebSnyanmisaka RK_S32 color_ctrl_p0_point_v; 334*437bfbebSnyanmisaka RK_S32 color_ctrl_p0_roll_tab[16]; 335*437bfbebSnyanmisaka 336*437bfbebSnyanmisaka RK_S32 color_ctrl_p1_scaling_coef; 337*437bfbebSnyanmisaka RK_S32 color_ctrl_p1_point_u; 338*437bfbebSnyanmisaka RK_S32 color_ctrl_p1_point_v; 339*437bfbebSnyanmisaka RK_S32 color_ctrl_p1_roll_tab[16]; 340*437bfbebSnyanmisaka 341*437bfbebSnyanmisaka RK_S32 color_ctrl_p2_scaling_coef; 342*437bfbebSnyanmisaka RK_S32 color_ctrl_p2_point_u; 343*437bfbebSnyanmisaka RK_S32 color_ctrl_p2_point_v; 344*437bfbebSnyanmisaka RK_S32 color_ctrl_p2_roll_tab[16]; 345*437bfbebSnyanmisaka 346*437bfbebSnyanmisaka RK_S32 color_ctrl_p3_scaling_coef; 347*437bfbebSnyanmisaka RK_S32 color_ctrl_p3_point_u; 348*437bfbebSnyanmisaka RK_S32 color_ctrl_p3_point_v; 349*437bfbebSnyanmisaka RK_S32 color_ctrl_p3_roll_tab[16]; 350*437bfbebSnyanmisaka 351*437bfbebSnyanmisaka RK_S32 tex_adj_enable; 352*437bfbebSnyanmisaka RK_S32 tex_adj_y_mode_select; 353*437bfbebSnyanmisaka RK_S32 tex_adj_mode_select; 354*437bfbebSnyanmisaka RK_S32 tex_adj_grd[6]; 355*437bfbebSnyanmisaka RK_S32 tex_adj_val[6]; 356*437bfbebSnyanmisaka } sharp; 357*437bfbebSnyanmisaka }; 358*437bfbebSnyanmisaka 359*437bfbebSnyanmisaka struct vdpp_api_params { 360*437bfbebSnyanmisaka enum VDPP_PARAM_TYPE ptype; 361*437bfbebSnyanmisaka union vdpp_api_content param; 362*437bfbebSnyanmisaka }; 363*437bfbebSnyanmisaka 364*437bfbebSnyanmisaka #ifdef __cplusplus 365*437bfbebSnyanmisaka extern "C" { 366*437bfbebSnyanmisaka #endif 367*437bfbebSnyanmisaka 368*437bfbebSnyanmisaka vdpp_com_ctx* rockchip_vdpp_api_alloc_ctx(void); 369*437bfbebSnyanmisaka void rockchip_vdpp_api_release_ctx(vdpp_com_ctx *com_ctx); 370*437bfbebSnyanmisaka MPP_RET dci_hist_info_parser(RK_U8* p_pack_hist_addr, RK_U32* p_hist_local, RK_U32* p_hist_global); 371*437bfbebSnyanmisaka 372*437bfbebSnyanmisaka #ifdef __cplusplus 373*437bfbebSnyanmisaka } 374*437bfbebSnyanmisaka #endif 375*437bfbebSnyanmisaka 376*437bfbebSnyanmisaka #endif 377