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