#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct VideoResolution { pub width: u32, pub height: u32, pub hdr: bool, pub label: String } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct VideoTrack { pub resolution: VideoResolution, pub url: String, pub mime_type: Option, pub bitrate: Option, pub codecs: Option, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct SubtitleTrack { pub label: String, pub url: String, pub language: Option, pub format: Option } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct Server { pub id: String, pub label: String, pub url: String, pub priority: u8, pub extra: Vec<(String, String)> } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct StreamSource { pub id: String, pub label: String, pub format: String, pub manifest_url: Option, pub videos: Vec, pub subtitles: Vec, pub headers: Vec<(String, String)>, pub extra: Vec<(String, String)>, }