use crate::*;
use super::spatial::ignore_trailing;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct St3d {
pub stereo_mode: u8,
}
impl St3d {
pub const MONO: u8 = 0;
pub const TOP_BOTTOM: u8 = 1;
pub const LEFT_RIGHT: u8 = 2;
pub const STEREO_CUSTOM: u8 = 3;
pub const RIGHT_LEFT: u8 = 4;
}
impl AtomExt for St3d {
type Ext = FullBoxV0;
const KIND_EXT: FourCC = FourCC::new(b"st3d");
fn decode_body_ext<B: Buf>(buf: &mut B, _ext: FullBoxV0) -> Result<Self> {
let stereo_mode = u8::decode(buf)?;
ignore_trailing(Self::KIND_EXT, buf);
Ok(St3d { stereo_mode })
}
fn encode_body_ext<B: BufMut>(&self, buf: &mut B) -> Result<FullBoxV0> {
self.stereo_mode.encode(buf)?;
Ok(FullBoxV0)
}
}