drivers/media/platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c

Source file repositories/reference/linux-study-clean/drivers/media/platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c
Extension
.c
Size
22630 bytes
Lines
640
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 rkvdec_hevc_sps {
	u16 video_parameters_set_id			: 4;
	u16 seq_parameters_set_id_sps			: 4;
	u16 chroma_format_idc				: 2;
	u16 width					: 16;
	u16 height					: 16;
	u16 bit_depth_luma				: 4;
	u16 bit_depth_chroma				: 4;
	u16 max_pic_order_count_lsb			: 5;
	u16 diff_max_min_luma_coding_block_size		: 2;
	u16 min_luma_coding_block_size			: 3;
	u16 min_transform_block_size			: 3;
	u16 diff_max_min_transform_block_size		: 2;
	u16 max_transform_hierarchy_depth_inter		: 3;
	u16 max_transform_hierarchy_depth_intra		: 3;
	u16 scaling_list_enabled_flag			: 1;
	u16 amp_enabled_flag				: 1;
	u16 sample_adaptive_offset_enabled_flag		: 1;
	u16 pcm_enabled_flag				: 1;
	u16 pcm_sample_bit_depth_luma			: 4;
	u16 pcm_sample_bit_depth_chroma			: 4;
	u16 pcm_loop_filter_disabled_flag		: 1;
	u16 diff_max_min_pcm_luma_coding_block_size	: 3;
	u16 min_pcm_luma_coding_block_size		: 3;
	u16 num_short_term_ref_pic_sets			: 7;
	u16 long_term_ref_pics_present_flag		: 1;
	u16 num_long_term_ref_pics_sps			: 6;
	u16 sps_temporal_mvp_enabled_flag		: 1;
	u16 strong_intra_smoothing_enabled_flag		: 1;
	u16 reserved_0					: 7;
	u16 sps_max_dec_pic_buffering_minus1		: 4;
	u16 reserved_0_2				: 3;
	u16 reserved_f					: 8;
} __packed;

//PPS
struct rkvdec_hevc_pps {
	u16 picture_parameters_set_id			: 6;
	u16 seq_parameters_set_id_pps			: 4;
	u16 dependent_slice_segments_enabled_flag	: 1;
	u16 output_flag_present_flag			: 1;
	u16 num_extra_slice_header_bits			: 13;
	u16 sign_data_hiding_enabled_flag		: 1;
	u16 cabac_init_present_flag			: 1;
	u16 num_ref_idx_l0_default_active		: 4;
	u16 num_ref_idx_l1_default_active		: 4;
	u16 init_qp_minus26				: 7;
	u16 constrained_intra_pred_flag			: 1;
	u16 transform_skip_enabled_flag			: 1;
	u16 cu_qp_delta_enabled_flag			: 1;
	u16 log2_min_cb_size				: 3;
	u16 pps_cb_qp_offset				: 5;
	u16 pps_cr_qp_offset				: 5;
	u16 pps_slice_chroma_qp_offsets_present_flag	: 1;
	u16 weighted_pred_flag				: 1;
	u16 weighted_bipred_flag			: 1;
	u16 transquant_bypass_enabled_flag		: 1;
	u16 tiles_enabled_flag				: 1;
	u16 entropy_coding_sync_enabled_flag		: 1;
	u16 pps_loop_filter_across_slices_enabled_flag	: 1;
	u16 loop_filter_across_tiles_enabled_flag	: 1;
	u16 deblocking_filter_override_enabled_flag	: 1;
	u16 pps_deblocking_filter_disabled_flag		: 1;
	u16 pps_beta_offset_div2			: 4;
	u16 pps_tc_offset_div2				: 4;
	u16 lists_modification_present_flag		: 1;
	u16 log2_parallel_merge_level			: 3;
	u16 slice_segment_header_extension_present_flag	: 1;
	u16 zeroes					: 3;
	u16 num_tile_columns				: 5;
	u16 num_tile_rows				: 5;
	u16 sps_pps_mode				: 4;
	u16 reserved_bits				: 14;
	u16 reserved;
} __packed;

struct rkvdec_hevc_tile {
	u16 value0	: 12;
	u16 value1	: 12;
} __packed;

struct rkvdec_sps_pps_packet {
	struct rkvdec_hevc_sps sps;
	struct rkvdec_hevc_pps pps;
	struct rkvdec_hevc_tile column_width[10];
	struct rkvdec_hevc_tile row_height[11];
	u32 zeroes[3];
	u32 zeroes_bits		: 6;
	u32 padding_bits	: 2;
	u32 padding;

Annotation

Implementation Notes