mp4_atom/moov/udta/
mod.rs

1mod 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}