#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AudioContextDiagnostics {
pub backend: AudioBackendDiagnostics,
pub render_thread: AudioRenderThreadDiagnostics,
pub graph: AudioGraphDiagnostics,
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AudioBackendDiagnostics {
pub name: String,
pub sink_id: String,
pub output_latency: Option<f64>,
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AudioRenderThreadDiagnostics {
pub sample_rate: f32,
pub buffer_size: usize,
pub frames_played: u64,
pub number_of_channels: usize,
pub suspended: bool,
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AudioGraphDiagnostics {
pub active: bool,
pub node_count: usize,
pub edge_count: usize,
pub ordered: Vec<u64>,
pub in_cycle: Vec<u64>,
pub cycle_breakers: Vec<u64>,
pub nodes: Vec<AudioNodeDiagnostics>,
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AudioNodeDiagnostics {
pub id: u64,
pub processor: String,
pub inputs: usize,
pub outputs: usize,
pub input_channels: Vec<usize>,
pub output_channels: Vec<usize>,
pub channel_config: String,
pub outgoing_edges: Vec<AudioGraphEdgeDiagnostics>,
pub control_handle_dropped: bool,
pub has_inputs_connected: bool,
pub cycle_breaker: bool,
pub has_side_effects: bool,
}
#[derive(Clone, Debug)]
#[non_exhaustive]
pub struct AudioGraphEdgeDiagnostics {
pub output: usize,
pub destination: u64,
pub input: Option<usize>,
}