mp4_atom/moof/
mfhd.rs

1use crate::*;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5pub struct Mfhd {
6    pub sequence_number: u32,
7}
8
9impl Default for Mfhd {
10    fn default() -> Self {
11        Mfhd { sequence_number: 1 }
12    }
13}
14
15impl AtomExt for Mfhd {
16    type Ext = ();
17    const KIND_EXT: FourCC = FourCC::new(b"mfhd");
18
19    fn decode_body_ext<B: Buf>(buf: &mut B, _ext: ()) -> Result<Self> {
20        Ok(Mfhd {
21            sequence_number: u32::decode(buf)?,
22        })
23    }
24
25    fn encode_body_ext<B: BufMut>(&self, buf: &mut B) -> Result<()> {
26        self.sequence_number.encode(buf)?;
27        Ok(())
28    }
29}
30
31#[cfg(test)]
32mod tests {
33    use super::*;
34
35    #[test]
36    fn test_mfhd() {
37        let expected = Mfhd { sequence_number: 1 };
38        let mut buf = Vec::new();
39        expected.encode(&mut buf).unwrap();
40
41        let mut buf = buf.as_ref();
42        let decoded = Mfhd::decode(&mut buf).unwrap();
43        assert_eq!(decoded, expected);
44    }
45}