diff options
author | Max Kellermann <max@musicpd.org> | 2020-11-04 16:50:10 +0100 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2020-11-04 20:15:19 +0100 |
commit | 77c14692c9b7cb85efb8e1fb1a6024284a75d53c (patch) | |
tree | ed016bd8bfdf59218f513feb7e7edeccaf18c241 /src/filter | |
parent | 226eb263001ebaa6bdaa3ca1c8087abf0d06e6e3 (diff) |
filter/AutoConvert: eliminate AutoConvertFilter if possible
If no conversion is necessary, return the child Filter as-is. This
allows removing all nullptr checks from AutoConvertFilter.
Diffstat (limited to 'src/filter')
-rw-r--r-- | src/filter/plugins/AutoConvertFilterPlugin.cxx | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/filter/plugins/AutoConvertFilterPlugin.cxx b/src/filter/plugins/AutoConvertFilterPlugin.cxx index 0fe11cff3..d3eb38447 100644 --- a/src/filter/plugins/AutoConvertFilterPlugin.cxx +++ b/src/filter/plugins/AutoConvertFilterPlugin.cxx @@ -47,9 +47,7 @@ public: void Reset() noexcept override { filter->Reset(); - - if (convert) - convert->Reset(); + convert->Reset(); } ConstBuffer<void> FilterPCM(ConstBuffer<void> src) override; @@ -81,13 +79,14 @@ PreparedAutoConvertFilter::Open(AudioFormat &in_audio_format) /* need to convert? */ - std::unique_ptr<Filter> convert; - if (in_audio_format != child_audio_format) { - /* yes - create a convert_filter */ + if (in_audio_format == child_audio_format) + /* no */ + return new_filter; - convert = convert_filter_new(in_audio_format, - child_audio_format); - } + /* yes - create a convert_filter */ + + auto convert = convert_filter_new(in_audio_format, + child_audio_format); return std::make_unique<AutoConvertFilter>(std::move(new_filter), std::move(convert)); @@ -96,20 +95,16 @@ PreparedAutoConvertFilter::Open(AudioFormat &in_audio_format) ConstBuffer<void> AutoConvertFilter::FilterPCM(ConstBuffer<void> src) { - if (convert != nullptr) - src = convert->FilterPCM(src); - + src = convert->FilterPCM(src); return filter->FilterPCM(src); } ConstBuffer<void> AutoConvertFilter::Flush() { - if (convert != nullptr) { - auto result = convert->Flush(); - if (!result.IsNull()) - return filter->FilterPCM(result); - } + auto result = convert->Flush(); + if (!result.IsNull()) + return filter->FilterPCM(result); return filter->Flush(); } |