async_mp4/types/
sample.rs

1use std::ops::Deref;
2use fixed::types::I16F16;
3use crate::mp4_data;
4
5mp4_data! {
6    #[derive(Default, Debug, Copy, Clone, Eq, PartialEq, Hash)]
7    pub struct SampleEntry {
8        pub _r1: [u8; 6],
9        pub data_reference_index: u16
10    }
11}
12
13mp4_data! {
14    #[derive(Default, Debug, Copy, Clone, Eq, PartialEq, Hash)]
15    pub struct VisualSampleEntry {
16        pub sample_entry: SampleEntry,
17        pub _r1: [u32; 4],
18        pub width: u16,
19        pub height: u16,
20        pub horizresolution: I16F16,
21        pub vertresolution: I16F16,
22        pub _r2: u32,
23        pub framecount: u16,
24        pub compressorname: [u8; 32],
25        pub depth: u16,
26        pub _r3: u16,
27    }
28}
29
30impl Deref for VisualSampleEntry {
31    type Target = SampleEntry;
32
33    fn deref(&self) -> &Self::Target {
34        &self.sample_entry
35    }
36}
37
38mp4_data! {
39    #[derive(Default, Debug, Copy, Clone, Eq, PartialEq, Hash)]
40    pub struct AudioSampleEntry {
41        pub sample_entry: SampleEntry,
42        pub _r1: [u32; 2],
43        pub channel_count: u16,
44        pub sample_size: u16,
45        pub _r2: [u16; 2],
46        pub sample_rate: I16F16,
47    }
48}
49
50impl Deref for AudioSampleEntry {
51    type Target = SampleEntry;
52
53    fn deref(&self) -> &Self::Target {
54        &self.sample_entry
55    }
56}