xref: /rockchip-linux_mpp/mpp/vproc/inc/vdpp_api.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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