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