#![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, PartialEq)]
pub struct TrackInfo {
pub track_number: u64,
pub track_type: u8,
pub codec_id: String,
pub width: u32,
pub height: u32,
pub sample_rate: f64,
pub channels: u32,
}
impl TrackInfo {
#[must_use]
pub const fn is_video(&self) -> bool {
self.track_type == 1
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Frame {
pub track_number: u64,
pub timecode: i64,
pub is_keyframe: bool,
pub duration_ticks: Option<u64>,
pub payload: Bytes,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct CuePoint {
pub time_ticks: u64,
pub cluster_position: u64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SeekEntry {
pub id: u32,
pub position: u64,
}