mp4_atom/moov/trak/mdia/minf/stbl/stsd/
btrt.rs1use 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}