drivers/media/test-drivers/vidtv/vidtv_encoder.h
Source file repositories/reference/linux-study-clean/drivers/media/test-drivers/vidtv/vidtv_encoder.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/test-drivers/vidtv/vidtv_encoder.h- Extension
.h- Size
- 3843 bytes
- Lines
- 166
- 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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.h
Detected Declarations
struct vidtv_access_unitstruct vidtv_encoderenum vidtv_encoder_idenum musical_notes
Annotated Snippet
struct vidtv_access_unit {
u32 num_samples;
u64 pts;
u64 dts;
u32 nbytes;
u32 offset;
struct vidtv_access_unit *next;
};
/* Some musical notes, used by a tone generator. Values are in Hz */
enum musical_notes {
NOTE_SILENT = 0,
NOTE_C_2 = 65,
NOTE_CS_2 = 69,
NOTE_D_2 = 73,
NOTE_DS_2 = 78,
NOTE_E_2 = 82,
NOTE_F_2 = 87,
NOTE_FS_2 = 93,
NOTE_G_2 = 98,
NOTE_GS_2 = 104,
NOTE_A_2 = 110,
NOTE_AS_2 = 117,
NOTE_B_2 = 123,
NOTE_C_3 = 131,
NOTE_CS_3 = 139,
NOTE_D_3 = 147,
NOTE_DS_3 = 156,
NOTE_E_3 = 165,
NOTE_F_3 = 175,
NOTE_FS_3 = 185,
NOTE_G_3 = 196,
NOTE_GS_3 = 208,
NOTE_A_3 = 220,
NOTE_AS_3 = 233,
NOTE_B_3 = 247,
NOTE_C_4 = 262,
NOTE_CS_4 = 277,
NOTE_D_4 = 294,
NOTE_DS_4 = 311,
NOTE_E_4 = 330,
NOTE_F_4 = 349,
NOTE_FS_4 = 370,
NOTE_G_4 = 392,
NOTE_GS_4 = 415,
NOTE_A_4 = 440,
NOTE_AS_4 = 466,
NOTE_B_4 = 494,
NOTE_C_5 = 523,
NOTE_CS_5 = 554,
NOTE_D_5 = 587,
NOTE_DS_5 = 622,
NOTE_E_5 = 659,
NOTE_F_5 = 698,
NOTE_FS_5 = 740,
NOTE_G_5 = 784,
NOTE_GS_5 = 831,
NOTE_A_5 = 880,
NOTE_AS_5 = 932,
NOTE_B_5 = 988,
NOTE_C_6 = 1047,
NOTE_CS_6 = 1109,
NOTE_D_6 = 1175,
NOTE_DS_6 = 1245,
NOTE_E_6 = 1319,
NOTE_F_6 = 1397,
NOTE_FS_6 = 1480,
NOTE_G_6 = 1568,
NOTE_GS_6 = 1661,
NOTE_A_6 = 1760,
NOTE_AS_6 = 1865,
NOTE_B_6 = 1976,
NOTE_C_7 = 2093
};
/**
* struct vidtv_encoder - A generic encoder type.
* @id: So we can cast to a concrete implementation when needed.
* @name: Usually the same as the stream name.
* @encoder_buf: The encoder internal buffer for the access units.
* @encoder_buf_sz: The encoder buffer size, in bytes
* @encoder_buf_offset: Our byte position in the encoder buffer.
* @sample_count: How many samples we have encoded in total.
* @access_units: encoder payload units, used for clock references
* @src_buf: The source of raw data to be encoded, encoder might set a
* default if null.
* @src_buf_sz: size of @src_buf.
* @src_buf_offset: Our position in the source buffer.
* @is_video_encoder: Whether this a video encoder (as opposed to audio)
Annotation
- Immediate include surface: `linux/types.h`.
- Detected declarations: `struct vidtv_access_unit`, `struct vidtv_encoder`, `enum vidtv_encoder_id`, `enum musical_notes`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.