drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c

Source file repositories/reference/linux-study-clean/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
Extension
.c
Size
72668 bytes
Lines
2216
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 vdec_av1_slice_init_vsi {
	u32 architecture;
	u32 reserved;
	u64 core_vsi;
	u64 cdf_table_addr;
	u32 cdf_table_size;
	u64 iq_table_addr;
	u32 iq_table_size;
	u32 vsi_size;
};

/**
 * struct vdec_av1_slice_mem - memory address and size
 * @buf:		dma_addr padding
 * @dma_addr:		buffer address
 * @size:		buffer size
 * @dma_addr_end:	buffer end address
 * @padding:		for padding
 */
struct vdec_av1_slice_mem {
	union {
		u64 buf;
		dma_addr_t dma_addr;
	};
	union {
		size_t size;
		dma_addr_t dma_addr_end;
		u64 padding;
	};
};

/**
 * struct vdec_av1_slice_state - decoding state
 * @err                   : err type for decode
 * @full                  : transcoded buffer is full or not
 * @timeout               : decode timeout or not
 * @perf                  : performance enable
 * @crc                   : hw checksum
 * @out_size              : hw output size
 */
struct vdec_av1_slice_state {
	int err;
	u32 full;
	u32 timeout;
	u32 perf;
	u32 crc[16];
	u32 out_size;
};

/*
 * enum vdec_av1_slice_resolution_level - resolution level
 */
enum vdec_av1_slice_resolution_level {
	AV1_RES_NONE,
	AV1_RES_FHD,
	AV1_RES_4K,
	AV1_RES_8K,
};

/*
 * enum vdec_av1_slice_frame_type - av1 frame type
 */
enum vdec_av1_slice_frame_type {
	AV1_KEY_FRAME = 0,
	AV1_INTER_FRAME,
	AV1_INTRA_ONLY_FRAME,
	AV1_SWITCH_FRAME,
	AV1_FRAME_TYPES,
};

/*
 * enum vdec_av1_slice_reference_mode - reference mode type
 */
enum vdec_av1_slice_reference_mode {
	AV1_SINGLE_REFERENCE = 0,
	AV1_COMPOUND_REFERENCE,
	AV1_REFERENCE_MODE_SELECT,
	AV1_REFERENCE_MODES,
};

/**
 * struct vdec_av1_slice_tile_group - info for each tile
 * @num_tiles:			tile number
 * @tile_size:			input size for each tile
 * @tile_start_offset:		tile offset to input buffer
 */
struct vdec_av1_slice_tile_group {
	u32 num_tiles;
	u32 tile_size[V4L2_AV1_MAX_TILE_COUNT];
	u32 tile_start_offset[V4L2_AV1_MAX_TILE_COUNT];

Annotation

Implementation Notes