diff options
Diffstat (limited to 'stream/types/src')
-rw-r--r-- | stream/types/src/lib.rs | 78 |
1 files changed, 17 insertions, 61 deletions
diff --git a/stream/types/src/lib.rs b/stream/types/src/lib.rs index a90db03..a031f3a 100644 --- a/stream/types/src/lib.rs +++ b/stream/types/src/lib.rs @@ -6,7 +6,6 @@ use serde::{Deserialize, Serialize}; use std::{collections::BTreeMap, fmt::Display, str::FromStr}; -pub type SegmentNum = usize; pub type TrackNum = usize; pub type FormatNum = usize; pub type IndexNum = usize; @@ -27,28 +26,19 @@ pub enum StreamSpec { Original { track: TrackNum, }, - HlsSuperMultiVariant { - container: StreamContainer, - }, HlsMultiVariant { - segment: SegmentNum, container: StreamContainer, }, HlsVariant { - segment: SegmentNum, track: TrackNum, container: StreamContainer, format: FormatNum, }, - Info { - segment: Option<u64>, - }, + Info, FragmentIndex { - segment: SegmentNum, track: TrackNum, }, Fragment { - segment: SegmentNum, track: TrackNum, index: IndexNum, container: StreamContainer, @@ -65,12 +55,6 @@ pub enum StreamSpec { #[derive(Debug, Clone, Deserialize, Serialize)] pub struct StreamInfo { pub name: Option<String>, - pub segments: Vec<StreamSegmentInfo>, -} - -#[derive(Debug, Clone, Deserialize, Serialize)] -pub struct StreamSegmentInfo { - pub name: Option<String>, pub duration: f64, pub tracks: Vec<StreamTrackInfo>, } @@ -128,35 +112,25 @@ impl StreamSpec { ) } StreamSpec::Original { track } => format!("?original&track={track}"), - StreamSpec::HlsSuperMultiVariant { container } => { - format!("?hlssupermultivariant&container={container}") - } - StreamSpec::HlsMultiVariant { segment, container } => { - format!("?hlsmultivariant&segment={segment}&container={container}") + StreamSpec::HlsMultiVariant { container } => { + format!("?hlsmultivariant&container={container}") } StreamSpec::HlsVariant { - segment, track, container, format, - } => format!( - "?hlsvariant&segment={segment}&track={track}&container={container}&format={format}" - ), - StreamSpec::Info { - segment: Some(segment), - } => format!("?info&segment={segment}"), - StreamSpec::Info { segment: None } => "?info".to_string(), - StreamSpec::FragmentIndex { segment, track } => { - format!("?fragmentindex&segment={segment}&track={track}") + } => format!("?hlsvariant&track={track}&container={container}&format={format}"), + StreamSpec::Info => "?info".to_string(), + StreamSpec::FragmentIndex { track } => { + format!("?fragmentindex&track={track}") } StreamSpec::Fragment { - segment, track, index, container, format, } => format!( - "?fragment&segment={segment}&track={track}&index={index}&container={container}&format={format}" + "?fragment&track={track}&index={index}&container={container}&format={format}" ), } } @@ -173,32 +147,24 @@ impl StreamSpec { ) } StreamSpec::Original { track } => format!("?original&t={track}"), - StreamSpec::HlsSuperMultiVariant { container } => { - format!("?hlssupermultivariant&c={container}") - } - StreamSpec::HlsMultiVariant { segment, container } => { - format!("?hlsmultivariant&s={segment}&c={container}") + StreamSpec::HlsMultiVariant { container } => { + format!("?hlsmultivariant&c={container}") } StreamSpec::HlsVariant { - segment, track, container, format, - } => format!("?hlsvariant&s={segment}&t={track}&c={container}&f={format}"), - StreamSpec::Info { - segment: Some(segment), - } => format!("?info&s={segment}"), - StreamSpec::Info { segment: None } => "?info".to_string(), - StreamSpec::FragmentIndex { segment, track } => { - format!("?fragmentindex&s={segment}&t={track}") + } => format!("?hlsvariant&t={track}&c={container}&f={format}"), + StreamSpec::Info => "?info".to_string(), + StreamSpec::FragmentIndex { track } => { + format!("?fragmentindex&t={track}") } StreamSpec::Fragment { - segment, track, index, container, format, - } => format!("?fragment&s={segment}&t={track}&i={index}&c={container}&f={format}"), + } => format!("?fragment&t={track}&i={index}&c={container}&f={format}"), } } pub fn from_query_kv(query: &BTreeMap<String, String>) -> Result<Self, &'static str> { @@ -207,7 +173,7 @@ impl StreamSpec { .get(k) .or(query.get(ks)) .ok_or(k) - .and_then(|a| a.parse().map_err(|_| "invalid number")) + .and_then(|a| a.parse::<usize>().map_err(|_| "invalid number")) }; let get_container = || { query @@ -217,28 +183,19 @@ impl StreamSpec { .and_then(|s| s.parse().map_err(|()| "unknown container")) }; if query.contains_key("info") { - Ok(Self::Info { - segment: get_num("segment", "s").ok(), - }) - } else if query.contains_key("hlssupermultivariant") { - Ok(Self::HlsSuperMultiVariant { - container: get_container().ok().unwrap_or(StreamContainer::Matroska), - }) + Ok(Self::Info) } else if query.contains_key("hlsmultivariant") { Ok(Self::HlsMultiVariant { - segment: get_num("segment", "s")? as SegmentNum, container: get_container()?, }) } else if query.contains_key("hlsvariant") { Ok(Self::HlsVariant { - segment: get_num("segment", "s")? as SegmentNum, track: get_num("track", "t")? as TrackNum, format: get_num("format", "f")? as FormatNum, container: get_container()?, }) } else if query.contains_key("fragment") { Ok(Self::Fragment { - segment: get_num("segment", "s")? as SegmentNum, track: get_num("track", "t")? as TrackNum, format: get_num("format", "f")? as FormatNum, index: get_num("index", "i")? as IndexNum, @@ -246,7 +203,6 @@ impl StreamSpec { }) } else if query.contains_key("fragmentindex") { Ok(Self::FragmentIndex { - segment: get_num("segment", "s")? as SegmentNum, track: get_num("track", "t")? as TrackNum, }) } else { |