Commit 77c14692 authored by Max Kellermann's avatar Max Kellermann

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.
parent 226eb263
...@@ -47,8 +47,6 @@ public: ...@@ -47,8 +47,6 @@ public:
void Reset() noexcept override { void Reset() noexcept override {
filter->Reset(); filter->Reset();
if (convert)
convert->Reset(); convert->Reset();
} }
...@@ -81,13 +79,14 @@ PreparedAutoConvertFilter::Open(AudioFormat &in_audio_format) ...@@ -81,13 +79,14 @@ PreparedAutoConvertFilter::Open(AudioFormat &in_audio_format)
/* need to convert? */ /* need to convert? */
std::unique_ptr<Filter> convert; if (in_audio_format == child_audio_format)
if (in_audio_format != child_audio_format) { /* no */
return new_filter;
/* yes - create a convert_filter */ /* yes - create a convert_filter */
convert = convert_filter_new(in_audio_format, auto convert = convert_filter_new(in_audio_format,
child_audio_format); child_audio_format);
}
return std::make_unique<AutoConvertFilter>(std::move(new_filter), return std::make_unique<AutoConvertFilter>(std::move(new_filter),
std::move(convert)); std::move(convert));
...@@ -96,20 +95,16 @@ PreparedAutoConvertFilter::Open(AudioFormat &in_audio_format) ...@@ -96,20 +95,16 @@ PreparedAutoConvertFilter::Open(AudioFormat &in_audio_format)
ConstBuffer<void> ConstBuffer<void>
AutoConvertFilter::FilterPCM(ConstBuffer<void> src) AutoConvertFilter::FilterPCM(ConstBuffer<void> src)
{ {
if (convert != nullptr)
src = convert->FilterPCM(src); src = convert->FilterPCM(src);
return filter->FilterPCM(src); return filter->FilterPCM(src);
} }
ConstBuffer<void> ConstBuffer<void>
AutoConvertFilter::Flush() AutoConvertFilter::Flush()
{ {
if (convert != nullptr) {
auto result = convert->Flush(); auto result = convert->Flush();
if (!result.IsNull()) if (!result.IsNull())
return filter->FilterPCM(result); return filter->FilterPCM(result);
}
return filter->Flush(); return filter->Flush();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment