From 20c2d8540ce408366af3cce7b2ef0c03ba293acc Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Fri, 14 Oct 2022 12:47:09 +0200 Subject: [PATCH] audio_frame2_resampler: hide implementation use pimpl pattern --- src/audio/resampler.cpp | 17 +++++++++++++---- src/audio/resampler.hpp | 13 +++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/audio/resampler.cpp b/src/audio/resampler.cpp index 84fd9b3d1..031728d57 100644 --- a/src/audio/resampler.cpp +++ b/src/audio/resampler.cpp @@ -62,17 +62,23 @@ using namespace std; +class audio_frame2_resampler::impl { + public: + virtual std::tuple resample(audio_frame2 &a, std::vector &out, int new_sample_rate_num, int new_sample_rate_den) = 0; + virtual ~impl() {} +}; + tuple audio_frame2_resampler::resample(audio_frame2 &a, vector &out, int new_sample_rate_num, int new_sample_rate_den) { - if (!impl) { + if (!m_impl) { LOG(LOG_LEVEL_ERROR) << "Audio frame resampler: cannot resample, Soxr/SpeexDSP was not compiled in!\n"; return { false, audio_frame2{} }; } - return impl->resample(a, out, new_sample_rate_num, new_sample_rate_den); + return m_impl->resample(a, out, new_sample_rate_num, new_sample_rate_den); } #ifdef HAVE_SOXR -class soxr_resampler : public audio_frame2_resampler::interface { +class soxr_resampler : public audio_frame2_resampler::impl { public: tuple resample(audio_frame2 &a, vector &new_channels, int new_sample_rate_num, int new_sample_rate_den); @@ -201,7 +207,10 @@ tuple soxr_resampler::resample(audio_frame2 &a, vector