From 58ef63abd5a9187ee93609f142cb21a933da16c5 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 26 Feb 2026 17:08:19 -0600 Subject: feat(recording): validate system audio device before recording Add pre-recording validation that catches stale or drifted system audio devices before they cause silent recordings. When the default audio output changes (Bluetooth reconnect, device switch) between setup and recording, the monitor device is auto-updated. Warns if no audio is currently playing through the monitored sink. Co-Authored-By: Craig Jennings --- tests/fixtures/pactl-sink-inputs-active.txt | 18 ++++++++++++++++++ tests/fixtures/pactl-sink-inputs-different-sink.txt | 18 ++++++++++++++++++ tests/fixtures/pactl-sink-inputs-empty.txt | 1 + 3 files changed, 37 insertions(+) create mode 100644 tests/fixtures/pactl-sink-inputs-active.txt create mode 100644 tests/fixtures/pactl-sink-inputs-different-sink.txt create mode 100644 tests/fixtures/pactl-sink-inputs-empty.txt (limited to 'tests/fixtures') diff --git a/tests/fixtures/pactl-sink-inputs-active.txt b/tests/fixtures/pactl-sink-inputs-active.txt new file mode 100644 index 00000000..d06589e3 --- /dev/null +++ b/tests/fixtures/pactl-sink-inputs-active.txt @@ -0,0 +1,18 @@ +Sink Input #42 + Driver: PipeWire + Owner Module: 4294967295 + Client: 51 + Sink: 65 + Sample Specification: float32le 2ch 48000Hz + Channel Map: front-left,front-right + Format: pcm, format.sample_format = "\"float32le\"" format.rate = "48000" format.channels = "2" + Corked: no + Mute: no + Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB + balance 0.00 + Buffer Latency: 0 usec + Sink Latency: 0 usec + Resample method: PipeWire + Properties: + media.name = "Playback" + application.name = "Firefox" diff --git a/tests/fixtures/pactl-sink-inputs-different-sink.txt b/tests/fixtures/pactl-sink-inputs-different-sink.txt new file mode 100644 index 00000000..859010ed --- /dev/null +++ b/tests/fixtures/pactl-sink-inputs-different-sink.txt @@ -0,0 +1,18 @@ +Sink Input #42 + Driver: PipeWire + Owner Module: 4294967295 + Client: 51 + Sink: 73 + Sample Specification: float32le 2ch 48000Hz + Channel Map: front-left,front-right + Format: pcm, format.sample_format = "\"float32le\"" format.rate = "48000" format.channels = "2" + Corked: no + Mute: no + Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB + balance 0.00 + Buffer Latency: 0 usec + Sink Latency: 0 usec + Resample method: PipeWire + Properties: + media.name = "Playback" + application.name = "Firefox" diff --git a/tests/fixtures/pactl-sink-inputs-empty.txt b/tests/fixtures/pactl-sink-inputs-empty.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/tests/fixtures/pactl-sink-inputs-empty.txt @@ -0,0 +1 @@ + -- cgit v1.2.3