drivers/media/platform/verisilicon/rockchip_av1_entropymode.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/verisilicon/rockchip_av1_entropymode.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/verisilicon/rockchip_av1_entropymode.h
Extension
.h
Size
8530 bytes
Lines
273
Domain
Driver Families
Bucket
drivers/media
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mvcdfs {
	u16 joint_cdf[3];
	u16 sign_cdf[2];
	u16 clsss_cdf[2][10];
	u16 clsss0_fp_cdf[2][2][3];
	u16 fp_cdf[2][3];
	u16 class0_hp_cdf[2];
	u16 hp_cdf[2];
	u16 class0_cdf[2];
	u16 bits_cdf[2][10];
};

struct av1cdfs {
	u16 partition_cdf[13][16];
	u16 kf_ymode_cdf[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS][AV1_INTRA_MODES - 1];
	u16 segment_pred_cdf[PREDICTION_PROBS];
	u16 spatial_pred_seg_tree_cdf[SPATIAL_PREDICTION_PROBS][MAX_MB_SEGMENTS - 1];
	u16 mbskip_cdf[MBSKIP_CONTEXTS];
	u16 delta_q_cdf[DELTA_Q_PROBS];
	u16 delta_lf_multi_cdf[FRAME_LF_COUNT][DELTA_LF_PROBS];
	u16 delta_lf_cdf[DELTA_LF_PROBS];
	u16 skip_mode_cdf[SKIP_MODE_CONTEXTS];
	u16 vartx_part_cdf[VARTX_PART_CONTEXTS][1];
	u16 tx_size_cdf[MAX_TX_CATS][AV1_TX_SIZE_CONTEXTS][MAX_TX_DEPTH];
	u16 if_ymode_cdf[BLOCK_SIZE_GROUPS][AV1_INTRA_MODES - 1];
	u16 uv_mode_cdf[2][AV1_INTRA_MODES][AV1_INTRA_MODES - 1 + 1];
	u16 intra_inter_cdf[INTRA_INTER_CONTEXTS];
	u16 comp_inter_cdf[COMP_INTER_CONTEXTS];
	u16 single_ref_cdf[AV1_REF_CONTEXTS][SINGLE_REFS - 1];
	u16 comp_ref_type_cdf[COMP_REF_TYPE_CONTEXTS][1];
	u16 uni_comp_ref_cdf[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1][1];
	u16 comp_ref_cdf[AV1_REF_CONTEXTS][FWD_REFS - 1];
	u16 comp_bwdref_cdf[AV1_REF_CONTEXTS][BWD_REFS - 1];
	u16 newmv_cdf[NEWMV_MODE_CONTEXTS];
	u16 zeromv_cdf[ZEROMV_MODE_CONTEXTS];
	u16 refmv_cdf[REFMV_MODE_CONTEXTS];
	u16 drl_cdf[DRL_MODE_CONTEXTS];
	u16 interp_filter_cdf[SWITCHABLE_FILTER_CONTEXTS][AV1_SWITCHABLE_FILTERS - 1];
	struct mvcdfs mv_cdf;
	u16 obmc_cdf[BLOCK_SIZE_TYPES];
	u16 motion_mode_cdf[BLOCK_SIZE_TYPES][2];
	u16 inter_compound_mode_cdf[AV1_INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES - 1];
	u16 compound_type_cdf[BLOCK_SIZE_TYPES][CDF_SIZE(COMPOUND_TYPES - 1)];
	u16 interintra_cdf[BLOCK_SIZE_GROUPS];
	u16 interintra_mode_cdf[BLOCK_SIZE_GROUPS][INTERINTRA_MODES - 1];
	u16 wedge_interintra_cdf[BLOCK_SIZE_TYPES];
	u16 wedge_idx_cdf[BLOCK_SIZE_TYPES][CDF_SIZE(16)];
	u16 palette_y_mode_cdf[PALETTE_BLOCK_SIZES][PALETTE_Y_MODE_CONTEXTS][1];
	u16 palette_uv_mode_cdf[PALETTE_UV_MODE_CONTEXTS][1];
	u16 palette_y_size_cdf[PALETTE_BLOCK_SIZES][PALETTE_SIZES - 1];
	u16 palette_uv_size_cdf[PALETTE_BLOCK_SIZES][PALETTE_SIZES - 1];
	u16 cfl_sign_cdf[CFL_JOINT_SIGNS - 1];
	u16 cfl_alpha_cdf[CFL_ALPHA_CONTEXTS][CFL_ALPHABET_SIZE - 1];
	u16 intrabc_cdf[1];
	u16 angle_delta_cdf[DIRECTIONAL_MODES][6];
	u16 filter_intra_mode_cdf[FILTER_INTRA_MODES - 1];
	u16 filter_intra_cdf[BLOCK_SIZES_ALL];
	u16 comp_group_idx_cdf[COMP_GROUP_IDX_CONTEXTS][CDF_SIZE(2)];
	u16 compound_idx_cdf[COMP_INDEX_CONTEXTS][CDF_SIZE(2)];
	u16 dummy0[14];
	// Palette index contexts; sizes 1/7, 2/6, 3/5 packed together
	u16 palette_y_color_index_cdf[PALETTE_IDX_CONTEXTS][8];
	u16 palette_uv_color_index_cdf[PALETTE_IDX_CONTEXTS][8];
	u16 tx_type_intra0_cdf[EXTTX_SIZES][AV1_INTRA_MODES][8];
	u16 tx_type_intra1_cdf[EXTTX_SIZES][AV1_INTRA_MODES][4];
	u16 tx_type_inter_cdf[2][EXTTX_SIZES][EXT_TX_TYPES];
	u16 txb_skip_cdf[TX_SIZES][TXB_SKIP_CONTEXTS][CDF_SIZE(2)];
	u16 eob_extra_cdf[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS][CDF_SIZE(2)];
	u16 dummy1[5];
	u16 eob_flag_cdf16[PLANE_TYPES][2][4];
	u16 eob_flag_cdf32[PLANE_TYPES][2][8];
	u16 eob_flag_cdf64[PLANE_TYPES][2][8];
	u16 eob_flag_cdf128[PLANE_TYPES][2][8];
	u16 eob_flag_cdf256[PLANE_TYPES][2][8];
	u16 eob_flag_cdf512[PLANE_TYPES][2][16];
	u16 eob_flag_cdf1024[PLANE_TYPES][2][16];
	u16 coeff_base_eob_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS_EOB][CDF_SIZE(3)];
	u16 coeff_base_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS][CDF_SIZE(4) + 1];
	u16 dc_sign_cdf[PLANE_TYPES][DC_SIGN_CONTEXTS][CDF_SIZE(2)];
	u16 dummy2[2];
	u16 coeff_br_cdf[TX_SIZES][PLANE_TYPES][LEVEL_CONTEXTS][CDF_SIZE(BR_CDF_SIZE) + 1];
	u16 dummy3[16];
};

void rockchip_av1_store_cdfs(struct hantro_ctx *ctx,
			     u32 refresh_frame_flags);
void rockchip_av1_get_cdfs(struct hantro_ctx *ctx, u32 ref_idx);
void rockchip_av1_set_default_cdfs(struct av1cdfs *cdfs,
				   struct mvcdfs *cdfs_ndvc);
void rockchip_av1_default_coeff_probs(u32 base_qindex, void *ptr);

Annotation

Implementation Notes