summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2020-11-04 16:50:10 +0100
committerMax Kellermann <max@musicpd.org>2020-11-04 20:15:19 +0100
commit77c14692c9b7cb85efb8e1fb1a6024284a75d53c (patch)
treeed016bd8bfdf59218f513feb7e7edeccaf18c241 /src
parent226eb263001ebaa6bdaa3ca1c8087abf0d06e6e3 (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')
-rw-r--r--src/filter/plugins/AutoConvertFilterPlugin.cxx29
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();
}