From bcbeb87e6cde253ffc5d779b53d9a7e968a53570 Mon Sep 17 00:00:00 2001 From: Jan Palus Date: Mon, 18 Oct 2021 17:10:44 +0200 Subject: [PATCH] upstream patch for dynamic samplerate selection with pipewire output plugin see: https://github.com/MusicPlayerDaemon/MPD/issues/1283 --- mpd.spec | 2 ++ pipewire-graph-samplerate.patch | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 pipewire-graph-samplerate.patch diff --git a/mpd.spec b/mpd.spec index d1ce4d6..58f5287 100644 --- a/mpd.spec +++ b/mpd.spec @@ -20,6 +20,7 @@ Source2: %{name}.init Source3: %{name}.sysconfig Source4: %{name}.tmpfiles Patch0: smb.patch +Patch1: pipewire-graph-samplerate.patch URL: http://www.musicpd.org/ BuildRequires: OpenAL-devel BuildRequires: adplug-devel @@ -173,6 +174,7 @@ Dokumentacja do Music Player Daemon (MPD). %prep %setup -q %patch0 -p1 +%patch1 -p1 %build %meson build \ diff --git a/pipewire-graph-samplerate.patch b/pipewire-graph-samplerate.patch new file mode 100644 index 0000000..e62d56c --- /dev/null +++ b/pipewire-graph-samplerate.patch @@ -0,0 +1,31 @@ +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/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), -- 2.44.0