use serde::{Deserialize, Serialize};
use time::Duration;
#[derive(Debug, Deserialize)]
pub(crate) struct OutputList {
pub outputs: Vec<Output>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub struct Output {
#[serde(rename = "outputName")]
pub name: String,
#[serde(rename = "outputKind")]
pub kind: String,
#[serde(rename = "outputWidth")]
pub width: u32,
#[serde(rename = "outputHeight")]
pub height: u32,
#[serde(rename = "outputActive")]
pub active: bool,
#[serde(rename = "outputFlags")]
pub flags: OutputFlags,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub struct OutputFlags {
#[serde(rename = "OBS_OUTPUT_AUDIO")]
pub audio: bool,
#[serde(rename = "OBS_OUTPUT_VIDEO")]
pub video: bool,
#[serde(rename = "OBS_OUTPUT_ENCODED")]
pub encoded: bool,
#[serde(rename = "OBS_OUTPUT_MULTI_TRACK")]
pub multi_track: bool,
#[serde(rename = "OBS_OUTPUT_SERVICE")]
pub service: bool,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, PartialOrd, Serialize)]
pub struct OutputStatus {
#[serde(rename = "outputActive")]
pub active: bool,
#[serde(rename = "outputReconnecting")]
pub reconnecting: bool,
#[serde(rename = "outputTimecode", with = "crate::serde::duration_timecode")]
pub timecode: Duration,
#[serde(rename = "outputDuration", with = "crate::serde::duration_millis")]
pub duration: Duration,
#[serde(rename = "outputCongestion")]
pub congestion: f32,
#[serde(rename = "outputBytes")]
pub bytes: u64,
#[serde(rename = "outputSkippedFrames")]
pub skipped_frames: u32,
#[serde(rename = "outputTotalFrames")]
pub total_frames: u32,
}
#[derive(Debug, Deserialize)]
pub(crate) struct OutputActive {
#[serde(rename = "outputActive")]
pub active: bool,
}
#[derive(Debug, Deserialize)]
pub(crate) struct OutputSettings<T> {
#[serde(rename = "outputSettings")]
pub settings: T,
}