mp4_atom/moov/udta/
mod.rs

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