From bd79354f32266f60f94150bbf60e537ed1ba3dd0 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Thu, 26 Aug 2021 17:24:14 +0200
Subject: [PATCH] filter/TwoFilters: add ChainFilters()

---
 src/filter/plugins/TwoFilters.hxx | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/filter/plugins/TwoFilters.hxx b/src/filter/plugins/TwoFilters.hxx
index 28fa31948..d5fa77cd2 100644
--- a/src/filter/plugins/TwoFilters.hxx
+++ b/src/filter/plugins/TwoFilters.hxx
@@ -65,4 +65,23 @@ public:
 	std::unique_ptr<Filter> Open(AudioFormat &audio_format) override;
 };
 
+/**
+ * Create a #PreparedTwoFilters instance, but only if both parameters
+ * are not nullptr.
+ */
+template<typename F, typename S, typename N>
+static std::unique_ptr<PreparedFilter>
+ChainFilters(F &&first, S &&second, N &&second_name) noexcept
+{
+	if (!second)
+		return std::forward<F>(first);
+
+	if (!first)
+		return std::forward<S>(second);
+
+	return std::make_unique<PreparedTwoFilters>(std::forward<F>(first),
+						    std::forward<S>(second),
+						    std::forward<N>(second_name));
+}
+
 #endif
-- 
2.24.1