use bytes::Bytes;
use serde::{Deserialize, Serialize};
use serde_with::{hex::Hex, DisplayFromStr};
use super::{Dimensions, Track, VideoCodec};
#[serde_with::serde_as]
#[serde_with::skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Video {
pub track: Track,
#[serde_as(as = "DisplayFromStr")]
pub codec: VideoCodec,
#[serde(default, skip_serializing_if = "Bytes::is_empty")]
#[serde_as(as = "Hex")]
pub description: Bytes,
pub resolution: Dimensions,
#[serde(default)]
pub bitrate: Option<u32>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub layers: Vec<VideoLayer>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct VideoLayer {
pub name: String,
pub priority: i8,
pub resolution: Dimensions,
}