aboutsummaryrefslogtreecommitdiff
path: root/stream/types/src
diff options
context:
space:
mode:
Diffstat (limited to 'stream/types/src')
-rw-r--r--stream/types/src/lib.rs78
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 {