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}