tauri-plugin-audioplayer 0.1.1

Tauri Audioplayer Plugin
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct StreamConfig {
    pub channels: u16,
    pub sample_format: String,
    pub sample_rate: u32,
    pub buffer_size: Option<BufferSizeRange>,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct BufferSizeRange {
    pub min_frames: u32,
    pub max_frames: u32,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AudioDevice {
    pub id: String,
    pub name: String,
    pub selected_stream_config: Option<StreamConfig>,
    pub error: Option<String>,
}

/// The devices available for one direction and the stable identifier of the
/// operating system's current default device for that direction.
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AudioDeviceList {
    pub devices: Vec<AudioDevice>,
    #[serde(rename = "default_id")]
    pub default_id: String,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LoadedAudio {
    pub channels: usize,
    pub sample_rate: u32,
    pub duration_seconds: f64,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PlaybackProgress {
    pub position_seconds: f64,
    pub duration_seconds: f64,
    pub is_playing: bool,
}