filter/Internal: return std::unique_ptr<Filter>

This commit is contained in:
Max Kellermann
2017-12-27 11:42:14 +01:00
parent e2621d5e44
commit edef62df86
12 changed files with 64 additions and 70 deletions

View File

@@ -29,6 +29,9 @@
#include <string.h>
AudioOutputSource::AudioOutputSource() noexcept {}
AudioOutputSource::~AudioOutputSource() noexcept = default;
AudioFormat
AudioOutputSource::Open(const AudioFormat audio_format, const MusicPipe &_pipe,
PreparedFilter *prepared_replay_gain_filter,
@@ -116,14 +119,9 @@ try {
void
AudioOutputSource::CloseFilter() noexcept
{
delete replay_gain_filter_instance;
replay_gain_filter_instance = nullptr;
delete other_replay_gain_filter_instance;
other_replay_gain_filter_instance = nullptr;
delete filter_instance;
filter_instance = nullptr;
replay_gain_filter_instance.reset();
other_replay_gain_filter_instance.reset();
filter_instance.reset();
}
ConstBuffer<void>
@@ -160,7 +158,7 @@ AudioOutputSource::GetChunkData(const MusicChunk &chunk,
ConstBuffer<void>
AudioOutputSource::FilterChunk(const MusicChunk &chunk)
{
auto data = GetChunkData(chunk, replay_gain_filter_instance,
auto data = GetChunkData(chunk, replay_gain_filter_instance.get(),
&replay_gain_serial);
if (data.empty())
return data;
@@ -169,7 +167,7 @@ AudioOutputSource::FilterChunk(const MusicChunk &chunk)
if (chunk.other != nullptr) {
auto other_data = GetChunkData(*chunk.other,
other_replay_gain_filter_instance,
other_replay_gain_filter_instance.get(),
&other_replay_gain_serial);
if (other_data.empty())
return data;