#![forbid(unsafe_code)]
pub use bytes::Bytes;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Rational {
pub num: u64,
pub den: u32,
}
impl Rational {
#[must_use]
pub const fn new(num: u64, den: u32) -> Self {
Self { num, den }
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Codec {
H264,
Hevc,
Av1,
Vp9,
Aac,
Opus,
WebVtt,
Tx3g,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Track {
pub id: u32,
pub codec: Codec,
pub time_base: Rational,
pub width: u32,
pub height: u32,
pub extra_data: Bytes,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Sample {
pub stream_id: u32,
pub pts: i64,
pub dts: i64,
pub duration: u64,
pub is_keyframe: bool,
pub is_discard: bool,
pub payload: Bytes,
}