use bytes::Bytes;
use serde::{Deserialize, Serialize};
use serde_with::{base64::Base64, serde_as};
#[serde_as]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)]
#[serde(rename_all = "camelCase")]
#[serde(tag = "kind")]
pub enum Container {
#[serde(rename = "legacy")]
#[default]
Legacy,
Cmaf {
#[serde_as(as = "Base64")]
init: Bytes,
#[deprecated(note = "parse from `init` instead")]
#[serde(default, skip_serializing_if = "Option::is_none")]
timescale: Option<u32>,
#[deprecated(note = "parse from `init` instead")]
#[serde(default, skip_serializing_if = "Option::is_none")]
track_id: Option<u32>,
},
Loc,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn loc_roundtrip() {
let parsed: Container = serde_json::from_str(r#"{"kind":"loc"}"#).unwrap();
assert_eq!(parsed, Container::Loc);
let json = serde_json::to_string(&parsed).unwrap();
assert_eq!(json, r#"{"kind":"loc"}"#);
}
}