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}
12
13impl Atom for Udta {
14    const KIND: FourCC = FourCC::new(b"udta");
15
16    nested! {
17        required: [ ],
18        optional: [ Meta ],
19        multiple: [ ],
20    }
21}
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26
27    #[test]
28    fn test_udta_empty() {
29        let expected = Udta { meta: None };
30
31        let mut buf = Vec::new();
32        expected.encode(&mut buf).unwrap();
33
34        let mut buf = buf.as_ref();
35        let output = Udta::decode(&mut buf).unwrap();
36        assert_eq!(output, expected);
37    }
38
39    #[test]
40    fn test_udta() {
41        let expected = Udta {
42            meta: Some(Meta {
43                hdlr: Hdlr {
44                    handler: FourCC::new(b"fake"),
45                    name: "".into(),
46                },
47                items: vec![],
48            }),
49        };
50
51        let mut buf = Vec::new();
52        expected.encode(&mut buf).unwrap();
53
54        let mut buf = buf.as_ref();
55        let output = Udta::decode(&mut buf).unwrap();
56        assert_eq!(output, expected);
57    }
58}