use std::collections::HashMap;
use std::time::Duration;
#[derive(Debug, Clone)]
#[must_use]
pub struct MediaMetadata {
pub video: Option<VideoMetadata>,
pub video_tracks: Option<Vec<VideoMetadata>>,
pub audio: Option<AudioMetadata>,
pub audio_tracks: Option<Vec<AudioMetadata>>,
pub subtitle: Option<SubtitleMetadata>,
pub subtitle_tracks: Option<Vec<SubtitleMetadata>>,
pub chapters: Option<Vec<ChapterMetadata>>,
pub duration: Duration,
pub format: String,
pub tags: Option<HashMap<String, String>>,
}
#[derive(Debug, Clone)]
#[must_use]
pub struct VideoMetadata {
pub width: u32,
pub height: u32,
pub frames_per_second: f64,
pub frame_count: u64,
pub codec: String,
pub color_space: Option<String>,
pub color_range: Option<String>,
pub color_primaries: Option<String>,
pub color_transfer: Option<String>,
pub bits_per_raw_sample: Option<u32>,
pub pixel_format_name: Option<String>,
pub track_index: usize,
pub(crate) stream_index: usize,
}
#[derive(Debug, Clone)]
#[must_use]
pub struct AudioMetadata {
pub sample_rate: u32,
pub channels: u16,
pub codec: String,
pub bit_rate: u64,
pub track_index: usize,
pub(crate) stream_index: usize,
}
#[derive(Debug, Clone)]
#[must_use]
pub struct ChapterMetadata {
pub title: Option<String>,
pub start: Duration,
pub end: Duration,
pub index: usize,
pub id: i64,
}
#[derive(Debug, Clone)]
#[must_use]
pub struct SubtitleMetadata {
pub codec: String,
pub language: Option<String>,
pub track_index: usize,
pub(crate) stream_index: usize,
}