From d5be8c74b009cdfc16b2b637aa9c4edb11cf105d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 18 Oct 2021 16:45:21 +0200 Subject: [PATCH] output/pipewire: attempt to change the graph sample rate Requires PipeWire 0.3.32. Closes https://github.com/MusicPlayerDaemon/MPD/issues/1283 --- NEWS | 1 + src/output/plugins/PipeWireOutputPlugin.cxx | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/NEWS b/NEWS index e8b909ab0..f43df1bda 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,6 @@ ver 0.23.1 (not yet released) * output + - pipewire: attempt to change the graph sample rate - snapcast: fix time stamp bug which caused "Failed to get chunk" * fix libfmt linker problems * fix broken password authentication diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx index 6579c93b6..db7c36823 100644 --- a/src/output/plugins/PipeWireOutputPlugin.cxx +++ b/src/output/plugins/PipeWireOutputPlugin.cxx @@ -383,6 +383,13 @@ PipeWireOutput::Open(AudioFormat &audio_format) if (target != nullptr && target_id == PW_ID_ANY) pw_properties_setf(props, PW_KEY_NODE_TARGET, "%s", target); +#ifdef PW_KEY_NODE_RATE + /* ask PipeWire to change the graph sample rate to ours + (requires PipeWire 0.3.32) */ + pw_properties_setf(props, PW_KEY_NODE_RATE, "1/%u", + audio_format.sample_rate); +#endif + const PipeWire::ThreadLoopLock lock(thread_loop); stream = pw_stream_new_simple(pw_thread_loop_get_loop(thread_loop),