mp4_atom/moov/udta/
mod.rs1mod meta;
2mod skip;
3
4pub use meta::*;
5pub use skip::*;
6
7use crate::*;
8
9#[derive(Debug, Clone, PartialEq, Eq, Default)]
10#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
11pub struct Udta {
12 pub meta: Option<Meta>,
13 pub skip: Option<Skip>,
14}
15
16impl Atom for Udta {
17 const KIND: FourCC = FourCC::new(b"udta");
18
19 nested! {
20 required: [ ],
21 optional: [ Meta, Skip ],
22 multiple: [ ],
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29
30 #[test]
31 fn test_udta_empty() {
32 let expected = Udta {
33 meta: None,
34 skip: None,
35 };
36
37 let mut buf = Vec::new();
38 expected.encode(&mut buf).unwrap();
39
40 let mut buf = buf.as_ref();
41 let output = Udta::decode(&mut buf).unwrap();
42 assert_eq!(output, expected);
43 }
44
45 #[test]
46 fn test_udta() {
47 let expected = Udta {
48 meta: Some(Meta::default()),
49 skip: None,
50 };
51
52 let mut buf = Vec::new();
53 expected.encode(&mut buf).unwrap();
54
55 let mut buf = buf.as_ref();
56 let output = Udta::decode(&mut buf).unwrap();
57 assert_eq!(output, expected);
58 }
59}