mp4_atom/moov/udta/
cprt.rs

1use crate::*;
2
3#[derive(Debug, Clone, PartialEq, Eq, Default)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5pub struct Cprt {
6    pub language: String,
7    pub notice: String,
8}
9
10impl AtomExt for Cprt {
11    type Ext = ();
12
13    const KIND_EXT: FourCC = FourCC::new(b"cprt");
14
15    fn decode_body_ext<B: Buf>(buf: &mut B, _ext: ()) -> Result<Self> {
16        let language_code = u16::decode(buf)?;
17        let language = language_string(language_code);
18
19        Ok(Cprt {
20            language,
21            notice: String::decode(buf)?,
22        })
23    }
24
25    fn encode_body_ext<B: BufMut>(&self, buf: &mut B) -> Result<()> {
26        let language_code = language_code(&self.language);
27        language_code.encode(buf)?;
28        self.notice.as_str().encode(buf)?;
29        Ok(())
30    }
31}