diff --git a/Source/PS_Source/StretchSource.cpp b/Source/PS_Source/StretchSource.cpp index 45125e0..d38118c 100644 --- a/Source/PS_Source/StretchSource.cpp +++ b/Source/PS_Source/StretchSource.cpp @@ -30,7 +30,7 @@ StretchAudioSource::StretchAudioSource(int initialnumoutchans, AudioFormatManager* afm, std::array& enab_pars) : m_afm(afm) { - m_resampler = std::make_unique(); + m_resampler = std::make_unique(4*65536); m_resampler_outbuf.resize(1024*1024); m_inputfile = std::make_unique(m_afm); for (int i = 0; i < enab_pars.size(); ++i) diff --git a/Source/WDL/resample.cpp b/Source/WDL/resample.cpp index e43a0e9..f97f68b 100644 --- a/Source/WDL/resample.cpp +++ b/Source/WDL/resample.cpp @@ -185,7 +185,7 @@ void inline WDL_Resampler::SincSample2(WDL_ResampleSample *outptr, const WDL_Res -WDL_Resampler::WDL_Resampler() +WDL_Resampler::WDL_Resampler(int initialinputbuffersize) { m_filterq=0.707f; m_filterpos=0.693f; // .792 ? @@ -203,7 +203,8 @@ WDL_Resampler::WDL_Resampler() m_ratio=1.0; m_filter_ratio=-1.0; m_iirfilter=0; - m_rsinbuf.Resize(4 * 65536); + if (initialinputbuffersize>0) + m_rsinbuf.Resize(initialinputbuffersize); Reset(); } diff --git a/Source/WDL/resample.h b/Source/WDL/resample.h index 49478cb..18e24b1 100644 --- a/Source/WDL/resample.h +++ b/Source/WDL/resample.h @@ -57,7 +57,7 @@ typedef double WDL_ResampleSample; class WDL_Resampler { public: - WDL_Resampler(); + WDL_Resampler(int initialinputbuffersize=0); ~WDL_Resampler(); // if sinc set, it overrides interp or filtercnt void SetMode(bool interp, int filtercnt, bool sinc, int sinc_size=64, int sinc_interpsize=32);