Skip to main content

mp4_atom/moov/trak/mdia/minf/stbl/stsd/
metadata.rs

1use crate::coding::{Decode, Encode};
2use crate::{Buf, BufMut, Result};
3
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[derive(Debug, Clone, PartialEq, Eq)]
6/// MetaDataSampleEntry base fields.
7///
8/// Used for meta data. Its essentially just the standard sample entry body.
9///
10/// See ISO/IEC 14496-12:2026 Section 12.3.3.2 and 8.5.2.2.
11pub struct MetaData {
12    pub data_reference_index: u16,
13}
14
15impl Encode for MetaData {
16    fn encode<B: BufMut>(&self, buf: &mut B) -> Result<()> {
17        0u32.encode(buf)?; // reserved
18        0u16.encode(buf)?; // reserved
19        self.data_reference_index.encode(buf)?;
20        Ok(())
21    }
22}
23impl Decode for MetaData {
24    fn decode<B: Buf>(buf: &mut B) -> Result<Self> {
25        u32::decode(buf)?; // reserved
26        u16::decode(buf)?; // reserved
27        let data_reference_index = u16::decode(buf)?;
28
29        Ok(Self {
30            data_reference_index,
31        })
32    }
33}