mp4_atom/moov/trak/mdia/minf/stbl/stsd/
st3d.rs1use crate::*;
2
3use super::spatial::ignore_trailing;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
10pub struct St3d {
11 pub stereo_mode: u8,
12}
13
14impl St3d {
15 pub const MONO: u8 = 0;
16 pub const TOP_BOTTOM: u8 = 1;
18 pub const LEFT_RIGHT: u8 = 2;
20 pub const STEREO_CUSTOM: u8 = 3;
23 pub const RIGHT_LEFT: u8 = 4;
25}
26
27impl AtomExt for St3d {
28 type Ext = FullBoxV0;
29
30 const KIND_EXT: FourCC = FourCC::new(b"st3d");
31
32 fn decode_body_ext<B: Buf>(buf: &mut B, _ext: FullBoxV0) -> Result<Self> {
33 let stereo_mode = u8::decode(buf)?;
34 ignore_trailing(Self::KIND_EXT, buf);
35 Ok(St3d { stereo_mode })
36 }
37
38 fn encode_body_ext<B: BufMut>(&self, buf: &mut B) -> Result<FullBoxV0> {
39 self.stereo_mode.encode(buf)?;
40 Ok(FullBoxV0)
41 }
42}