aboutsummaryrefslogtreecommitdiff
path: root/common/src/stream.rs
diff options
context:
space:
mode:
Diffstat (limited to 'common/src/stream.rs')
-rw-r--r--common/src/stream.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/common/src/stream.rs b/common/src/stream.rs
new file mode 100644
index 0000000..59166b8
--- /dev/null
+++ b/common/src/stream.rs
@@ -0,0 +1,38 @@
+#[cfg(feature = "rocket")]
+use rocket::{FromForm, FromFormField, UriDisplayQuery};
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Clone, Deserialize, Serialize)]
+#[cfg_attr(feature = "rocket", derive(FromForm, UriDisplayQuery))]
+pub struct StreamSpec {
+ pub tracks: Vec<usize>,
+ pub format: StreamFormat,
+ pub abr: Option<usize>,
+ pub vbr: Option<usize>,
+ pub index: Option<usize>,
+}
+
+#[rustfmt::skip]
+#[derive(Debug, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "snake_case")]
+#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))]
+pub enum StreamFormat {
+ #[cfg_attr(feature = "rocket", field(value = "original"))] Original,
+ #[cfg_attr(feature = "rocket", field(value = "matroska"))] Matroska,
+ #[cfg_attr(feature = "rocket", field(value = "webm"))] Webm,
+ #[cfg_attr(feature = "rocket", field(value = "hls"))] Hls,
+ #[cfg_attr(feature = "rocket", field(value = "jhls"))] Jhls,
+ #[cfg_attr(feature = "rocket", field(value = "hlsseg"))] Segment,
+}
+
+impl Default for StreamSpec {
+ fn default() -> Self {
+ Self {
+ tracks: Default::default(),
+ format: StreamFormat::Webm,
+ abr: Default::default(),
+ vbr: Default::default(),
+ index: Default::default(),
+ }
+ }
+}