wedeo_core/
frame_side_data.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3#[repr(u32)]
4pub enum FrameSideDataType {
5 Panscan = 0,
7 A53Cc = 1,
10 Stereo3d = 2,
12 MatrixEncoding = 3,
14 DownmixInfo = 4,
16 ReplayGain = 5,
18 DisplayMatrix = 6,
21 Afd = 7,
23 MotionVectors = 8,
25 SkipSamples = 9,
27 AudioServiceType = 10,
29 MasteringDisplayMetadata = 11,
31 GopTimecode = 12,
33 Spherical = 13,
35 ContentLightLevel = 14,
37 IccProfile = 15,
39 S12mTimecode = 16,
41 DynamicHdrPlus = 17,
43 RegionsOfInterest = 18,
45 VideoEncParams = 19,
47 SeiUnregistered = 20,
49 FilmGrainParams = 21,
51 DetectionBboxes = 22,
53 DoviRpuBuffer = 23,
55 DoviMetadata = 24,
57 DynamicHdrVivid = 25,
59 AmbientViewingEnvironment = 26,
61 VideoHint = 27,
63 Lcevc = 28,
65 ViewId = 29,
67 ThreeDReferenceDisplays = 30,
69 Exif = 31,
71}
72
73#[derive(Debug, Clone)]
75pub struct FrameSideData {
76 pub data_type: FrameSideDataType,
77 pub data: Vec<u8>,
78}
79
80#[cfg(test)]
81mod tests {
82 use super::*;
83
84 #[test]
85 fn test_side_data_type_discriminants() {
86 assert_eq!(FrameSideDataType::Panscan as u32, 0);
88 assert_eq!(FrameSideDataType::A53Cc as u32, 1);
89 assert_eq!(FrameSideDataType::DisplayMatrix as u32, 6);
90 assert_eq!(FrameSideDataType::MasteringDisplayMetadata as u32, 11);
91 assert_eq!(FrameSideDataType::ContentLightLevel as u32, 14);
92 assert_eq!(FrameSideDataType::FilmGrainParams as u32, 21);
93 assert_eq!(FrameSideDataType::DoviRpuBuffer as u32, 23);
94 assert_eq!(FrameSideDataType::DoviMetadata as u32, 24);
95 assert_eq!(FrameSideDataType::DynamicHdrVivid as u32, 25);
96 assert_eq!(FrameSideDataType::AmbientViewingEnvironment as u32, 26);
97 assert_eq!(FrameSideDataType::VideoHint as u32, 27);
98 assert_eq!(FrameSideDataType::Lcevc as u32, 28);
99 assert_eq!(FrameSideDataType::ViewId as u32, 29);
100 assert_eq!(FrameSideDataType::ThreeDReferenceDisplays as u32, 30);
101 assert_eq!(FrameSideDataType::Exif as u32, 31);
102 }
103
104 #[test]
105 fn test_frame_side_data_creation() {
106 let sd = FrameSideData {
107 data_type: FrameSideDataType::A53Cc,
108 data: vec![0x01, 0x02, 0x03],
109 };
110 assert_eq!(sd.data_type, FrameSideDataType::A53Cc);
111 assert_eq!(sd.data.len(), 3);
112 }
113
114 #[test]
115 fn test_frame_side_data_clone() {
116 let sd = FrameSideData {
117 data_type: FrameSideDataType::IccProfile,
118 data: vec![0xFF; 100],
119 };
120 let sd2 = sd.clone();
121 assert_eq!(sd2.data_type, FrameSideDataType::IccProfile);
122 assert_eq!(sd2.data.len(), 100);
123 }
124}