pulse-pixelstream-types 0.14.0

Shared Myko entity and command types for the Pulse Pixelstream recording cell.
Documentation
use myko::prelude::*;
use myko::TS;
use myko_macros::myko_item;
use serde::{Deserialize, Serialize};

use crate::{DlssQuality, DlssSettings, PrevisProcessTarget};

#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, TS)]
#[serde(tag = "phase", rename_all = "snake_case")]
pub enum DlssConvergence {
    Unavailable {
        reason: String,
    },
    Observed {
        settings: DlssSettings,
    },
    Applying {
        desired: DlssSettings,
        observed: Option<DlssSettings>,
    },
    Failed {
        desired: DlssSettings,
        observed: Option<DlssSettings>,
        reason: String,
    },
}

#[myko_item]
pub struct PrevisDlssStatus {
    pub streamer_id: String,
    #[serde(default)]
    pub request_id: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub target: Option<PrevisProcessTarget>,
    #[serde(default)]
    pub supported_qualities: Vec<DlssQuality>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub quality_unavailable_reason: Option<String>,
    pub convergence: DlssConvergence,
    #[serde(default)]
    pub updated_at_ms: u64,
}