diff --git a/src/filter/plugins/ConvertFilterPlugin.cxx b/src/filter/plugins/ConvertFilterPlugin.cxx index 1ede2c03e..bcc70fcd5 100644 --- a/src/filter/plugins/ConvertFilterPlugin.cxx +++ b/src/filter/plugins/ConvertFilterPlugin.cxx @@ -57,6 +57,11 @@ public: } ConstBuffer FilterPCM(ConstBuffer src) override; + +private: + bool IsActive() const noexcept { + return out_audio_format != in_audio_format; + } }; class PreparedConvertFilter final : public PreparedFilter { @@ -80,7 +85,7 @@ ConvertFilter::Set(const AudioFormat &_out_audio_format) /* no change */ return; - if (out_audio_format != in_audio_format) { + if (IsActive()) { out_audio_format = in_audio_format; state.Close(); } @@ -111,7 +116,7 @@ ConvertFilter::~ConvertFilter() { assert(in_audio_format.IsValid()); - if (out_audio_format != in_audio_format) + if (IsActive()) state.Close(); } @@ -120,11 +125,10 @@ ConvertFilter::FilterPCM(ConstBuffer src) { assert(in_audio_format.IsValid()); - if (out_audio_format == in_audio_format) + return IsActive() + ? state.Convert(src) /* optimized special case: no-op */ - return src; - - return state.Convert(src); + : src; } const FilterPlugin convert_filter_plugin = {