#[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, pub format: StreamFormat, pub abr: Option, pub vbr: Option, pub index: Option, } #[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(), } } }