From a009f1b8e6427ef42f1dc25c2b38f5ad93610e16 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Fri, 24 Apr 2026 20:04:39 -0300 Subject: [PATCH] fix(sync): instrument post-queue uac audio --- Cargo.lock | 6 +++--- client/Cargo.toml | 2 +- common/Cargo.toml | 2 +- server/Cargo.toml | 2 +- server/src/audio/ear_capture.rs | 6 +++++- server/src/audio/voice_input.rs | 11 ++++++++++- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7e27066..714dec6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "lesavka_client" -version = "0.13.4" +version = "0.13.5" dependencies = [ "anyhow", "async-stream", @@ -1676,7 +1676,7 @@ dependencies = [ [[package]] name = "lesavka_common" -version = "0.13.4" +version = "0.13.5" dependencies = [ "anyhow", "base64", @@ -1688,7 +1688,7 @@ dependencies = [ [[package]] name = "lesavka_server" -version = "0.13.4" +version = "0.13.5" dependencies = [ "anyhow", "base64", diff --git a/client/Cargo.toml b/client/Cargo.toml index 1053a83..cafaab1 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.13.4" +version = "0.13.5" edition = "2024" [dependencies] diff --git a/common/Cargo.toml b/common/Cargo.toml index 5ce6537..c54f5c9 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.13.4" +version = "0.13.5" edition = "2024" build = "build.rs" diff --git a/server/Cargo.toml b/server/Cargo.toml index d2daaae..51d417b 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.13.4" +version = "0.13.5" edition = "2024" autobins = false diff --git a/server/src/audio/ear_capture.rs b/server/src/audio/ear_capture.rs index 6f9bd48..7c66d56 100644 --- a/server/src/audio/ear_capture.rs +++ b/server/src/audio/ear_capture.rs @@ -98,7 +98,11 @@ fn spawn_pipeline_bus_logger(bus: gst::Bus, label: &'static str, playing_message Element(e) => { if let Some(structure) = e.structure() { if structure.name() == "level" { - info!("🔊 {label} audio level {}", structure); + let source = msg + .src() + .map(gst::prelude::GstObjectExt::path_string) + .unwrap_or_else(|| "".into()); + info!("🔊 {label} audio level src={source} {}", structure); } else { debug!("🔎 audio element message: {}", structure); } diff --git a/server/src/audio/voice_input.rs b/server/src/audio/voice_input.rs index e16b5f6..d66f1c4 100644 --- a/server/src/audio/voice_input.rs +++ b/server/src/audio/voice_input.rs @@ -176,16 +176,23 @@ impl Voice { .build() .context("make capsfilter")?; let level = gst::ElementFactory::make("level") + .name("voice_level_pre_queue") .property("interval", 1_000_000_000u64) .property("message", true) .build() - .context("make voice level probe")?; + .context("make voice pre-queue level probe")?; let alsa_sink = gst::ElementFactory::make("alsasink") .build() .context("make alsasink")?; let delay_queue = gst::ElementFactory::make("queue") .build() .context("make voice delay queue")?; + let post_level = gst::ElementFactory::make("level") + .name("voice_level_post_queue") + .property("interval", 1_000_000_000u64) + .property("message", true) + .build() + .context("make voice post-queue level probe")?; let buffer_time_us = voice_sink_buffer_time_us(); let latency_time_us = voice_sink_latency_time_us(); let compensation_us = voice_sink_compensation_us(); @@ -219,6 +226,7 @@ impl Voice { &capsfilter, &level, &delay_queue, + &post_level, &alsa_sink, ])?; appsrc.link(&decodebin)?; @@ -228,6 +236,7 @@ impl Voice { &capsfilter, &level, &delay_queue, + &post_level, &alsa_sink, ])?;