tauri_plugin_mpv/
models.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::{collections::HashMap, process::Child};
4
5pub struct MpvInstance {
6 pub process: Child,
7 pub ipc_timeout: std::time::Duration,
8}
9
10fn default_mpv_path() -> String {
11 "mpv".to_string()
12}
13
14fn default_ipc_timeout() -> u64 {
15 2000
16}
17
18#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct MpvConfig {
21 #[serde(default = "default_mpv_path")]
22 pub path: String,
23 #[serde(default)]
24 pub args: Vec<String>,
25 #[serde(default)]
26 pub observed_properties: Vec<String>,
27 #[serde(default = "default_ipc_timeout")]
28 pub ipc_timeout_ms: u64,
29 #[serde(default)]
30 pub show_mpv_output: bool,
31}
32#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
33pub struct MpvCommand {
34 pub command: Vec<serde_json::Value>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub request_id: Option<u32>,
37}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
40pub struct MpvCommandResponse {
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub data: Option<Value>,
43 pub error: String,
44 pub request_id: u32,
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
48pub struct MpvEvent {
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub event: Option<String>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub name: Option<String>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub data: Option<Value>,
55 #[serde(flatten)]
56 pub other: HashMap<String, Value>,
57}
58
59#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60pub struct VideoMarginRatio {
61 pub left: Option<f64>,
62 pub right: Option<f64>,
63 pub top: Option<f64>,
64 pub bottom: Option<f64>,
65}