drivers/media/platform/amphion/vdec.c

Source file repositories/reference/linux-study-clean/drivers/media/platform/amphion/vdec.c

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/amphion/vdec.c
Extension
.c
Size
50966 bytes
Lines
1985
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_fs_info {
	char name[8];
	u32 type;
	u32 max_count;
	u32 req_count;
	u32 count;
	u32 index;
	u32 size;
	struct vpu_buffer buffer[32];
	u32 tag;
};

struct vdec_frame_store_t {
	struct vpu_vb2_buffer *curr;
	struct vpu_vb2_buffer *pend;
	dma_addr_t addr;
	unsigned int state;
	u32 tag;
};

struct vdec_t {
	u32 seq_hdr_found;
	struct vpu_buffer udata;
	struct vpu_decode_params params;
	struct vpu_dec_codec_info codec_info;
	enum vpu_codec_state state;

	struct vdec_frame_store_t *slots;
	u32 slot_count;
	u32 req_frame_count;
	struct vdec_fs_info mbi;
	struct vdec_fs_info dcp;
	u32 seq_tag;

	bool reset_codec;
	bool fixed_fmt;
	u32 decoded_frame_count;
	u32 display_frame_count;
	u32 sequence;
	u32 eos_received;
	bool is_source_changed;
	u32 source_change;
	u32 drain;
	bool aborting;
};

static const struct vpu_format vdec_formats[] = {
	{
		.pixfmt = V4L2_PIX_FMT_NV12M_8L128,
		.mem_planes = 2,
		.comp_planes = 2,
		.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
		.sibling = V4L2_PIX_FMT_NV12_8L128,
	},
	{
		.pixfmt = V4L2_PIX_FMT_NV12_8L128,
		.mem_planes = 1,
		.comp_planes = 2,
		.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
		.sibling = V4L2_PIX_FMT_NV12M_8L128,
	},
	{
		.pixfmt = V4L2_PIX_FMT_NV12M_10BE_8L128,
		.mem_planes = 2,
		.comp_planes = 2,
		.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
		.sibling = V4L2_PIX_FMT_NV12_10BE_8L128,
	},
	{
		.pixfmt = V4L2_PIX_FMT_NV12_10BE_8L128,
		.mem_planes = 1,
		.comp_planes = 2,
		.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
		.sibling = V4L2_PIX_FMT_NV12M_10BE_8L128
	},
	{
		.pixfmt = V4L2_PIX_FMT_H264,
		.mem_planes = 1,
		.comp_planes = 1,
		.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
		.flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED
	},
	{
		.pixfmt = V4L2_PIX_FMT_H264_MVC,
		.mem_planes = 1,
		.comp_planes = 1,
		.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
		.flags = V4L2_FMT_FLAG_DYN_RESOLUTION | V4L2_FMT_FLAG_COMPRESSED
	},
	{

Annotation

Implementation Notes