xref: /openbmc/linux/drivers/media/platform/verisilicon/rockchip_av1_entropymode.h (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
1*c0d0e579SBenjamin Gaignard /* SPDX-License-Identifier: GPL-2.0-only */
2*c0d0e579SBenjamin Gaignard 
3*c0d0e579SBenjamin Gaignard #ifndef _ROCKCHIP_AV1_ENTROPYMODE_H_
4*c0d0e579SBenjamin Gaignard #define _ROCKCHIP_AV1_ENTROPYMODE_H_
5*c0d0e579SBenjamin Gaignard 
6*c0d0e579SBenjamin Gaignard #include <linux/types.h>
7*c0d0e579SBenjamin Gaignard 
8*c0d0e579SBenjamin Gaignard struct hantro_ctx;
9*c0d0e579SBenjamin Gaignard 
10*c0d0e579SBenjamin Gaignard #define AV1_INTER_MODE_CONTEXTS 15
11*c0d0e579SBenjamin Gaignard #define AV1_INTRA_MODES 13
12*c0d0e579SBenjamin Gaignard #define AV1_REF_CONTEXTS 3
13*c0d0e579SBenjamin Gaignard #define AV1_SWITCHABLE_FILTERS 3	/* number of switchable filters */
14*c0d0e579SBenjamin Gaignard #define AV1_TX_SIZE_CONTEXTS 3
15*c0d0e579SBenjamin Gaignard #define BLOCK_SIZE_GROUPS 4
16*c0d0e579SBenjamin Gaignard #define BR_CDF_SIZE 4
17*c0d0e579SBenjamin Gaignard #define BWD_REFS 3
18*c0d0e579SBenjamin Gaignard #define CFL_ALLOWED_TYPES 2
19*c0d0e579SBenjamin Gaignard #define CFL_ALPHA_CONTEXTS 6
20*c0d0e579SBenjamin Gaignard #define CFL_ALPHABET_SIZE 16
21*c0d0e579SBenjamin Gaignard #define CFL_JOINT_SIGNS 8
22*c0d0e579SBenjamin Gaignard #define CDF_SIZE(x) ((x) - 1)
23*c0d0e579SBenjamin Gaignard #define COMP_GROUP_IDX_CONTEXTS 7
24*c0d0e579SBenjamin Gaignard #define COMP_INDEX_CONTEXTS 6
25*c0d0e579SBenjamin Gaignard #define COMP_INTER_CONTEXTS 5
26*c0d0e579SBenjamin Gaignard #define COMP_REF_TYPE_CONTEXTS 5
27*c0d0e579SBenjamin Gaignard #define COMPOUND_TYPES 3
28*c0d0e579SBenjamin Gaignard #define DC_SIGN_CONTEXTS 3
29*c0d0e579SBenjamin Gaignard #define DELTA_LF_PROBS 3
30*c0d0e579SBenjamin Gaignard #define DELTA_Q_PROBS 3
31*c0d0e579SBenjamin Gaignard #define DIRECTIONAL_MODES 8
32*c0d0e579SBenjamin Gaignard #define DRL_MODE_CONTEXTS 3
33*c0d0e579SBenjamin Gaignard #define EOB_COEF_CONTEXTS 9
34*c0d0e579SBenjamin Gaignard #define EXT_TX_SIZES 3
35*c0d0e579SBenjamin Gaignard #define EXT_TX_TYPES 16
36*c0d0e579SBenjamin Gaignard #define EXTTX_SIZES 4
37*c0d0e579SBenjamin Gaignard #define FRAME_LF_COUNT 4
38*c0d0e579SBenjamin Gaignard #define FWD_REFS 4
39*c0d0e579SBenjamin Gaignard #define GLOBALMV_MODE_CONTEXTS 2
40*c0d0e579SBenjamin Gaignard #define ICDF(x) (32768U - (x))
41*c0d0e579SBenjamin Gaignard #define INTER_COMPOUND_MODES 8
42*c0d0e579SBenjamin Gaignard #define INTERINTRA_MODES 4
43*c0d0e579SBenjamin Gaignard #define INTRA_INTER_CONTEXTS 4
44*c0d0e579SBenjamin Gaignard #define KF_MODE_CONTEXTS 5
45*c0d0e579SBenjamin Gaignard #define LEVEL_CONTEXTS 21
46*c0d0e579SBenjamin Gaignard #define MAX_ANGLE_DELTA 3
47*c0d0e579SBenjamin Gaignard #define MAX_MB_SEGMENTS 8
48*c0d0e579SBenjamin Gaignard #define MAX_SEGMENTS 8
49*c0d0e579SBenjamin Gaignard #define MAX_TX_CATS 4
50*c0d0e579SBenjamin Gaignard #define MAX_TX_DEPTH 2
51*c0d0e579SBenjamin Gaignard #define MBSKIP_CONTEXTS 3
52*c0d0e579SBenjamin Gaignard #define MOTION_MODES 3
53*c0d0e579SBenjamin Gaignard #define MOTION_MODE_CONTEXTS 10
54*c0d0e579SBenjamin Gaignard #define NEWMV_MODE_CONTEXTS 6
55*c0d0e579SBenjamin Gaignard #define NUM_BASE_LEVELS 2
56*c0d0e579SBenjamin Gaignard #define NUM_REF_FRAMES 8
57*c0d0e579SBenjamin Gaignard #define PALETTE_BLOCK_SIZES 7
58*c0d0e579SBenjamin Gaignard #define PALETTE_IDX_CONTEXTS 18
59*c0d0e579SBenjamin Gaignard #define PALETTE_SIZES 7
60*c0d0e579SBenjamin Gaignard #define PALETTE_UV_MODE_CONTEXTS 2
61*c0d0e579SBenjamin Gaignard #define PALETTE_Y_MODE_CONTEXTS 3
62*c0d0e579SBenjamin Gaignard #define PARTITION_PLOFFSET 4
63*c0d0e579SBenjamin Gaignard #define NUM_PARTITION_CONTEXTS (4 * PARTITION_PLOFFSET)
64*c0d0e579SBenjamin Gaignard #define PLANE_TYPES 2
65*c0d0e579SBenjamin Gaignard #define PREDICTION_PROBS 3
66*c0d0e579SBenjamin Gaignard #define REF_CONTEXTS 5
67*c0d0e579SBenjamin Gaignard #define REFMV_MODE_CONTEXTS 9
68*c0d0e579SBenjamin Gaignard #define SEG_TEMPORAL_PRED_CTXS 3
69*c0d0e579SBenjamin Gaignard #define SIG_COEF_CONTEXTS 42
70*c0d0e579SBenjamin Gaignard #define SIG_COEF_CONTEXTS_EOB 4
71*c0d0e579SBenjamin Gaignard #define SINGLE_REFS 7
72*c0d0e579SBenjamin Gaignard #define SKIP_CONTEXTS 3
73*c0d0e579SBenjamin Gaignard #define SKIP_MODE_CONTEXTS 3
74*c0d0e579SBenjamin Gaignard #define SPATIAL_PREDICTION_PROBS 3
75*c0d0e579SBenjamin Gaignard #define SWITCHABLE_FILTER_CONTEXTS ((AV1_SWITCHABLE_FILTERS + 1) * 4)
76*c0d0e579SBenjamin Gaignard #define TOKEN_CDF_Q_CTXS 4
77*c0d0e579SBenjamin Gaignard #define TX_SIZES 5
78*c0d0e579SBenjamin Gaignard #define TX_SIZE_CONTEXTS 2
79*c0d0e579SBenjamin Gaignard #define TX_TYPES 4
80*c0d0e579SBenjamin Gaignard #define TXB_SKIP_CONTEXTS 13
81*c0d0e579SBenjamin Gaignard #define TXFM_PARTITION_CONTEXTS 22
82*c0d0e579SBenjamin Gaignard #define UNI_COMP_REF_CONTEXTS 3
83*c0d0e579SBenjamin Gaignard #define UNIDIR_COMP_REFS 4
84*c0d0e579SBenjamin Gaignard #define UV_INTRA_MODES 14
85*c0d0e579SBenjamin Gaignard #define VARTX_PART_CONTEXTS 22
86*c0d0e579SBenjamin Gaignard #define ZEROMV_MODE_CONTEXTS 2
87*c0d0e579SBenjamin Gaignard 
88*c0d0e579SBenjamin Gaignard enum blocksizetype {
89*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_AB4X4,
90*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB4X8,
91*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB8X4,
92*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB8X8,
93*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB8X16,
94*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB16X8,
95*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_MB16X16,
96*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB16X32,
97*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB32X16,
98*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB32X32,
99*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB32X64,
100*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB64X32,
101*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB64X64,
102*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB64X128,
103*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB128X64,
104*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB128X128,
105*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB4X16,
106*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB16X4,
107*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB8X32,
108*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB32X8,
109*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB16X64,
110*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_SB64X16,
111*c0d0e579SBenjamin Gaignard 	BLOCK_SIZE_TYPES,
112*c0d0e579SBenjamin Gaignard 	BLOCK_SIZES_ALL = BLOCK_SIZE_TYPES
113*c0d0e579SBenjamin Gaignard };
114*c0d0e579SBenjamin Gaignard 
115*c0d0e579SBenjamin Gaignard enum filterintramodetype {
116*c0d0e579SBenjamin Gaignard 	FILTER_DC_PRED,
117*c0d0e579SBenjamin Gaignard 	FILTER_V_PRED,
118*c0d0e579SBenjamin Gaignard 	FILTER_H_PRED,
119*c0d0e579SBenjamin Gaignard 	FILTER_D153_PRED,
120*c0d0e579SBenjamin Gaignard 	FILTER_PAETH_PRED,
121*c0d0e579SBenjamin Gaignard 	FILTER_INTRA_MODES,
122*c0d0e579SBenjamin Gaignard 	FILTER_INTRA_UNUSED = 7
123*c0d0e579SBenjamin Gaignard };
124*c0d0e579SBenjamin Gaignard 
125*c0d0e579SBenjamin Gaignard enum frametype {
126*c0d0e579SBenjamin Gaignard 	KEY_FRAME = 0,
127*c0d0e579SBenjamin Gaignard 	INTER_FRAME = 1,
128*c0d0e579SBenjamin Gaignard 	NUM_FRAME_TYPES,
129*c0d0e579SBenjamin Gaignard };
130*c0d0e579SBenjamin Gaignard 
131*c0d0e579SBenjamin Gaignard enum txsize {
132*c0d0e579SBenjamin Gaignard 	TX_4X4 = 0,
133*c0d0e579SBenjamin Gaignard 	TX_8X8 = 1,
134*c0d0e579SBenjamin Gaignard 	TX_16X16 = 2,
135*c0d0e579SBenjamin Gaignard 	TX_32X32 = 3,
136*c0d0e579SBenjamin Gaignard 	TX_SIZE_MAX_SB,
137*c0d0e579SBenjamin Gaignard };
138*c0d0e579SBenjamin Gaignard 
139*c0d0e579SBenjamin Gaignard enum { SIMPLE_TRANSLATION, OBMC_CAUSAL, MOTION_MODE_COUNT };
140*c0d0e579SBenjamin Gaignard 
141*c0d0e579SBenjamin Gaignard enum mb_prediction_mode {
142*c0d0e579SBenjamin Gaignard 	DC_PRED,		/* average of above and left pixels */
143*c0d0e579SBenjamin Gaignard 	V_PRED,			/* vertical prediction */
144*c0d0e579SBenjamin Gaignard 	H_PRED,			/* horizontal prediction */
145*c0d0e579SBenjamin Gaignard 	D45_PRED,		/* Directional 45 deg prediction  [anti-clockwise from 0 deg hor] */
146*c0d0e579SBenjamin Gaignard 	D135_PRED,		/* Directional 135 deg prediction [anti-clockwise from 0 deg hor] */
147*c0d0e579SBenjamin Gaignard 	D117_PRED,		/* Directional 112 deg prediction [anti-clockwise from 0 deg hor] */
148*c0d0e579SBenjamin Gaignard 	D153_PRED,		/* Directional 157 deg prediction [anti-clockwise from 0 deg hor] */
149*c0d0e579SBenjamin Gaignard 	D27_PRED,		/* Directional 22 deg prediction  [anti-clockwise from 0 deg hor] */
150*c0d0e579SBenjamin Gaignard 	D63_PRED,		/* Directional 67 deg prediction  [anti-clockwise from 0 deg hor] */
151*c0d0e579SBenjamin Gaignard 	SMOOTH_PRED,
152*c0d0e579SBenjamin Gaignard 	TM_PRED_AV1 = SMOOTH_PRED,
153*c0d0e579SBenjamin Gaignard 	SMOOTH_V_PRED,		// Vertical interpolation
154*c0d0e579SBenjamin Gaignard 	SMOOTH_H_PRED,		// Horizontal interpolation
155*c0d0e579SBenjamin Gaignard 	TM_PRED,		/* Truemotion prediction */
156*c0d0e579SBenjamin Gaignard 	PAETH_PRED = TM_PRED,
157*c0d0e579SBenjamin Gaignard 	NEARESTMV,
158*c0d0e579SBenjamin Gaignard 	NEARMV,
159*c0d0e579SBenjamin Gaignard 	ZEROMV,
160*c0d0e579SBenjamin Gaignard 	NEWMV,
161*c0d0e579SBenjamin Gaignard 	NEAREST_NEARESTMV,
162*c0d0e579SBenjamin Gaignard 	NEAR_NEARMV,
163*c0d0e579SBenjamin Gaignard 	NEAREST_NEWMV,
164*c0d0e579SBenjamin Gaignard 	NEW_NEARESTMV,
165*c0d0e579SBenjamin Gaignard 	NEAR_NEWMV,
166*c0d0e579SBenjamin Gaignard 	NEW_NEARMV,
167*c0d0e579SBenjamin Gaignard 	ZERO_ZEROMV,
168*c0d0e579SBenjamin Gaignard 	NEW_NEWMV,
169*c0d0e579SBenjamin Gaignard 	SPLITMV,
170*c0d0e579SBenjamin Gaignard 	MB_MODE_COUNT
171*c0d0e579SBenjamin Gaignard };
172*c0d0e579SBenjamin Gaignard 
173*c0d0e579SBenjamin Gaignard enum partitiontype {
174*c0d0e579SBenjamin Gaignard 	PARTITION_NONE,
175*c0d0e579SBenjamin Gaignard 	PARTITION_HORZ,
176*c0d0e579SBenjamin Gaignard 	PARTITION_VERT,
177*c0d0e579SBenjamin Gaignard 	PARTITION_SPLIT,
178*c0d0e579SBenjamin Gaignard 	PARTITION_TYPES
179*c0d0e579SBenjamin Gaignard };
180*c0d0e579SBenjamin Gaignard 
181*c0d0e579SBenjamin Gaignard struct mvcdfs {
182*c0d0e579SBenjamin Gaignard 	u16 joint_cdf[3];
183*c0d0e579SBenjamin Gaignard 	u16 sign_cdf[2];
184*c0d0e579SBenjamin Gaignard 	u16 clsss_cdf[2][10];
185*c0d0e579SBenjamin Gaignard 	u16 clsss0_fp_cdf[2][2][3];
186*c0d0e579SBenjamin Gaignard 	u16 fp_cdf[2][3];
187*c0d0e579SBenjamin Gaignard 	u16 class0_hp_cdf[2];
188*c0d0e579SBenjamin Gaignard 	u16 hp_cdf[2];
189*c0d0e579SBenjamin Gaignard 	u16 class0_cdf[2];
190*c0d0e579SBenjamin Gaignard 	u16 bits_cdf[2][10];
191*c0d0e579SBenjamin Gaignard };
192*c0d0e579SBenjamin Gaignard 
193*c0d0e579SBenjamin Gaignard struct av1cdfs {
194*c0d0e579SBenjamin Gaignard 	u16 partition_cdf[13][16];
195*c0d0e579SBenjamin Gaignard 	u16 kf_ymode_cdf[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS][AV1_INTRA_MODES - 1];
196*c0d0e579SBenjamin Gaignard 	u16 segment_pred_cdf[PREDICTION_PROBS];
197*c0d0e579SBenjamin Gaignard 	u16 spatial_pred_seg_tree_cdf[SPATIAL_PREDICTION_PROBS][MAX_MB_SEGMENTS - 1];
198*c0d0e579SBenjamin Gaignard 	u16 mbskip_cdf[MBSKIP_CONTEXTS];
199*c0d0e579SBenjamin Gaignard 	u16 delta_q_cdf[DELTA_Q_PROBS];
200*c0d0e579SBenjamin Gaignard 	u16 delta_lf_multi_cdf[FRAME_LF_COUNT][DELTA_LF_PROBS];
201*c0d0e579SBenjamin Gaignard 	u16 delta_lf_cdf[DELTA_LF_PROBS];
202*c0d0e579SBenjamin Gaignard 	u16 skip_mode_cdf[SKIP_MODE_CONTEXTS];
203*c0d0e579SBenjamin Gaignard 	u16 vartx_part_cdf[VARTX_PART_CONTEXTS][1];
204*c0d0e579SBenjamin Gaignard 	u16 tx_size_cdf[MAX_TX_CATS][AV1_TX_SIZE_CONTEXTS][MAX_TX_DEPTH];
205*c0d0e579SBenjamin Gaignard 	u16 if_ymode_cdf[BLOCK_SIZE_GROUPS][AV1_INTRA_MODES - 1];
206*c0d0e579SBenjamin Gaignard 	u16 uv_mode_cdf[2][AV1_INTRA_MODES][AV1_INTRA_MODES - 1 + 1];
207*c0d0e579SBenjamin Gaignard 	u16 intra_inter_cdf[INTRA_INTER_CONTEXTS];
208*c0d0e579SBenjamin Gaignard 	u16 comp_inter_cdf[COMP_INTER_CONTEXTS];
209*c0d0e579SBenjamin Gaignard 	u16 single_ref_cdf[AV1_REF_CONTEXTS][SINGLE_REFS - 1];
210*c0d0e579SBenjamin Gaignard 	u16 comp_ref_type_cdf[COMP_REF_TYPE_CONTEXTS][1];
211*c0d0e579SBenjamin Gaignard 	u16 uni_comp_ref_cdf[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1][1];
212*c0d0e579SBenjamin Gaignard 	u16 comp_ref_cdf[AV1_REF_CONTEXTS][FWD_REFS - 1];
213*c0d0e579SBenjamin Gaignard 	u16 comp_bwdref_cdf[AV1_REF_CONTEXTS][BWD_REFS - 1];
214*c0d0e579SBenjamin Gaignard 	u16 newmv_cdf[NEWMV_MODE_CONTEXTS];
215*c0d0e579SBenjamin Gaignard 	u16 zeromv_cdf[ZEROMV_MODE_CONTEXTS];
216*c0d0e579SBenjamin Gaignard 	u16 refmv_cdf[REFMV_MODE_CONTEXTS];
217*c0d0e579SBenjamin Gaignard 	u16 drl_cdf[DRL_MODE_CONTEXTS];
218*c0d0e579SBenjamin Gaignard 	u16 interp_filter_cdf[SWITCHABLE_FILTER_CONTEXTS][AV1_SWITCHABLE_FILTERS - 1];
219*c0d0e579SBenjamin Gaignard 	struct mvcdfs mv_cdf;
220*c0d0e579SBenjamin Gaignard 	u16 obmc_cdf[BLOCK_SIZE_TYPES];
221*c0d0e579SBenjamin Gaignard 	u16 motion_mode_cdf[BLOCK_SIZE_TYPES][2];
222*c0d0e579SBenjamin Gaignard 	u16 inter_compound_mode_cdf[AV1_INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES - 1];
223*c0d0e579SBenjamin Gaignard 	u16 compound_type_cdf[BLOCK_SIZE_TYPES][CDF_SIZE(COMPOUND_TYPES - 1)];
224*c0d0e579SBenjamin Gaignard 	u16 interintra_cdf[BLOCK_SIZE_GROUPS];
225*c0d0e579SBenjamin Gaignard 	u16 interintra_mode_cdf[BLOCK_SIZE_GROUPS][INTERINTRA_MODES - 1];
226*c0d0e579SBenjamin Gaignard 	u16 wedge_interintra_cdf[BLOCK_SIZE_TYPES];
227*c0d0e579SBenjamin Gaignard 	u16 wedge_idx_cdf[BLOCK_SIZE_TYPES][CDF_SIZE(16)];
228*c0d0e579SBenjamin Gaignard 	u16 palette_y_mode_cdf[PALETTE_BLOCK_SIZES][PALETTE_Y_MODE_CONTEXTS][1];
229*c0d0e579SBenjamin Gaignard 	u16 palette_uv_mode_cdf[PALETTE_UV_MODE_CONTEXTS][1];
230*c0d0e579SBenjamin Gaignard 	u16 palette_y_size_cdf[PALETTE_BLOCK_SIZES][PALETTE_SIZES - 1];
231*c0d0e579SBenjamin Gaignard 	u16 palette_uv_size_cdf[PALETTE_BLOCK_SIZES][PALETTE_SIZES - 1];
232*c0d0e579SBenjamin Gaignard 	u16 cfl_sign_cdf[CFL_JOINT_SIGNS - 1];
233*c0d0e579SBenjamin Gaignard 	u16 cfl_alpha_cdf[CFL_ALPHA_CONTEXTS][CFL_ALPHABET_SIZE - 1];
234*c0d0e579SBenjamin Gaignard 	u16 intrabc_cdf[1];
235*c0d0e579SBenjamin Gaignard 	u16 angle_delta_cdf[DIRECTIONAL_MODES][6];
236*c0d0e579SBenjamin Gaignard 	u16 filter_intra_mode_cdf[FILTER_INTRA_MODES - 1];
237*c0d0e579SBenjamin Gaignard 	u16 filter_intra_cdf[BLOCK_SIZES_ALL];
238*c0d0e579SBenjamin Gaignard 	u16 comp_group_idx_cdf[COMP_GROUP_IDX_CONTEXTS][CDF_SIZE(2)];
239*c0d0e579SBenjamin Gaignard 	u16 compound_idx_cdf[COMP_INDEX_CONTEXTS][CDF_SIZE(2)];
240*c0d0e579SBenjamin Gaignard 	u16 dummy0[14];
241*c0d0e579SBenjamin Gaignard 	// Palette index contexts; sizes 1/7, 2/6, 3/5 packed together
242*c0d0e579SBenjamin Gaignard 	u16 palette_y_color_index_cdf[PALETTE_IDX_CONTEXTS][8];
243*c0d0e579SBenjamin Gaignard 	u16 palette_uv_color_index_cdf[PALETTE_IDX_CONTEXTS][8];
244*c0d0e579SBenjamin Gaignard 	u16 tx_type_intra0_cdf[EXTTX_SIZES][AV1_INTRA_MODES][8];
245*c0d0e579SBenjamin Gaignard 	u16 tx_type_intra1_cdf[EXTTX_SIZES][AV1_INTRA_MODES][4];
246*c0d0e579SBenjamin Gaignard 	u16 tx_type_inter_cdf[2][EXTTX_SIZES][EXT_TX_TYPES];
247*c0d0e579SBenjamin Gaignard 	u16 txb_skip_cdf[TX_SIZES][TXB_SKIP_CONTEXTS][CDF_SIZE(2)];
248*c0d0e579SBenjamin Gaignard 	u16 eob_extra_cdf[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS][CDF_SIZE(2)];
249*c0d0e579SBenjamin Gaignard 	u16 dummy1[5];
250*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf16[PLANE_TYPES][2][4];
251*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf32[PLANE_TYPES][2][8];
252*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf64[PLANE_TYPES][2][8];
253*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf128[PLANE_TYPES][2][8];
254*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf256[PLANE_TYPES][2][8];
255*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf512[PLANE_TYPES][2][16];
256*c0d0e579SBenjamin Gaignard 	u16 eob_flag_cdf1024[PLANE_TYPES][2][16];
257*c0d0e579SBenjamin Gaignard 	u16 coeff_base_eob_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS_EOB][CDF_SIZE(3)];
258*c0d0e579SBenjamin Gaignard 	u16 coeff_base_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS][CDF_SIZE(4) + 1];
259*c0d0e579SBenjamin Gaignard 	u16 dc_sign_cdf[PLANE_TYPES][DC_SIGN_CONTEXTS][CDF_SIZE(2)];
260*c0d0e579SBenjamin Gaignard 	u16 dummy2[2];
261*c0d0e579SBenjamin Gaignard 	u16 coeff_br_cdf[TX_SIZES][PLANE_TYPES][LEVEL_CONTEXTS][CDF_SIZE(BR_CDF_SIZE) + 1];
262*c0d0e579SBenjamin Gaignard 	u16 dummy3[16];
263*c0d0e579SBenjamin Gaignard };
264*c0d0e579SBenjamin Gaignard 
265*c0d0e579SBenjamin Gaignard void rockchip_av1_store_cdfs(struct hantro_ctx *ctx,
266*c0d0e579SBenjamin Gaignard 			     u32 refresh_frame_flags);
267*c0d0e579SBenjamin Gaignard void rockchip_av1_get_cdfs(struct hantro_ctx *ctx, u32 ref_idx);
268*c0d0e579SBenjamin Gaignard void rockchip_av1_set_default_cdfs(struct av1cdfs *cdfs,
269*c0d0e579SBenjamin Gaignard 				   struct mvcdfs *cdfs_ndvc);
270*c0d0e579SBenjamin Gaignard void rockchip_av1_default_coeff_probs(u32 base_qindex, void *ptr);
271*c0d0e579SBenjamin Gaignard 
272*c0d0e579SBenjamin Gaignard #endif /* _ROCKCHIP_AV1_ENTROPYMODE_H_ */
273