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

1use crate::*;
2
3#[derive(Debug, Clone, PartialEq, Eq, Default)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5pub struct Btrt {
6    pub buffer_size_db: u32,
7    pub max_bitrate: u32,
8    pub avg_bitrate: u32,
9}
10
11impl Btrt {
12    pub fn new(buffer_size_db: u32, max_bitrate: u32, avg_bitrate: u32) -> Result<Self> {
13        Ok(Self {
14            buffer_size_db,
15            max_bitrate,
16            avg_bitrate,
17        })
18    }
19}
20
21impl Atom for Btrt {
22    const KIND: FourCC = FourCC::new(b"btrt");
23
24    fn decode_body<B: Buf>(buf: &mut B) -> Result<Self> {
25        let buffer_size_db = u32::decode(buf)?;
26        let max_bitrate = u32::decode(buf)?;
27        let avg_bitrate = u32::decode(buf)?;
28
29        Ok(Btrt {
30            buffer_size_db,
31            max_bitrate,
32            avg_bitrate,
33        })
34    }
35
36    fn encode_body<B: BufMut>(&self, buf: &mut B) -> Result<()> {
37        self.buffer_size_db.encode(buf)?;
38        self.max_bitrate.encode(buf)?;
39        self.avg_bitrate.encode(buf)?;
40        Ok(())
41    }
42}