use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GPUDevice {
pub vendorId: f64,
pub deviceId: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub subSysId: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub revision: Option<f64>,
pub vendorString: String,
pub deviceString: String,
pub driverVendor: String,
pub driverVersion: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Size {
pub width: u64,
pub height: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct VideoDecodeAcceleratorCapability {
pub profile: String,
pub maxResolution: Size,
pub minResolution: Size,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct VideoEncodeAcceleratorCapability {
pub profile: String,
pub maxResolution: Size,
pub maxFramerateNumerator: i64,
pub maxFramerateDenominator: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum SubsamplingFormat {
#[default]
Yuv420,
Yuv422,
Yuv444,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum ImageType {
#[default]
Jpeg,
Webp,
Unknown,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GPUInfo {
pub devices: Vec<GPUDevice>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auxAttributes: Option<serde_json::Map<String, JsonValue>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub featureStatus: Option<serde_json::Map<String, JsonValue>>,
pub driverBugWorkarounds: Vec<String>,
pub videoDecoding: Vec<VideoDecodeAcceleratorCapability>,
pub videoEncoding: Vec<VideoEncodeAcceleratorCapability>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ProcessInfo {
#[serde(rename = "type")]
pub type_: String,
pub id: u64,
pub cpuTime: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetInfoReturns {
pub gpu: GPUInfo,
pub modelName: String,
pub modelVersion: String,
pub commandLine: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetFeatureStateParams {
pub featureState: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetFeatureStateReturns {
pub featureEnabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetProcessInfoReturns {
pub processInfo: Vec<ProcessInfo>,
}