From 57bb4670727c3c26644933b19d4620d565a177e2 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 28 Nov 2018 23:19:25 -0800 Subject: [PATCH] Pass the desired resampler to CreateSampleConverter --- Alc/backends/wasapi.cpp | 2 +- Alc/converter.cpp | 12 ++++++++---- Alc/converter.h | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Alc/backends/wasapi.cpp b/Alc/backends/wasapi.cpp index dfc91489..04afe807 100644 --- a/Alc/backends/wasapi.cpp +++ b/Alc/backends/wasapi.cpp @@ -1666,7 +1666,7 @@ HRESULT ALCwasapiCapture::resetProxy() { mSampleConv = CreateSampleConverter( srcType, device->FmtType, ChannelsFromDevFmt(device->FmtChans, device->mAmbiOrder), - OutputType.Format.nSamplesPerSec, device->Frequency + OutputType.Format.nSamplesPerSec, device->Frequency, BSinc24Resampler ); if(!mSampleConv) { diff --git a/Alc/converter.cpp b/Alc/converter.cpp index d16d2cb7..958936a1 100644 --- a/Alc/converter.cpp +++ b/Alc/converter.cpp @@ -136,7 +136,9 @@ void Stereo2Mono(ALfloat *RESTRICT dst, const void *src, ALsizei frames) } // namespace -SampleConverter *CreateSampleConverter(enum DevFmtType srcType, enum DevFmtType dstType, ALsizei numchans, ALsizei srcRate, ALsizei dstRate) +SampleConverter *CreateSampleConverter(enum DevFmtType srcType, enum DevFmtType dstType, + ALsizei numchans, ALsizei srcRate, ALsizei dstRate, + Resampler resampler) { if(numchans <= 0 || srcRate <= 0 || dstRate <= 0) return nullptr; @@ -161,9 +163,11 @@ SampleConverter *CreateSampleConverter(enum DevFmtType srcType, enum DevFmtType converter->mResample = Resample_copy_C; else { - /* TODO: Allow other resamplers. */ - BsincPrepare(converter->mIncrement, &converter->mState.bsinc, &bsinc12); - converter->mResample = SelectResampler(BSinc12Resampler); + if(resampler == BSinc24Resampler) + BsincPrepare(converter->mIncrement, &converter->mState.bsinc, &bsinc24); + else if(resampler == BSinc12Resampler) + BsincPrepare(converter->mIncrement, &converter->mState.bsinc, &bsinc12); + converter->mResample = SelectResampler(resampler); } return converter; diff --git a/Alc/converter.h b/Alc/converter.h index 326c8033..e0aeb7d4 100644 --- a/Alc/converter.h +++ b/Alc/converter.h @@ -29,7 +29,9 @@ struct SampleConverter { DEF_PLACE_NEWDEL() }; -SampleConverter *CreateSampleConverter(enum DevFmtType srcType, enum DevFmtType dstType, ALsizei numchans, ALsizei srcRate, ALsizei dstRate); +SampleConverter *CreateSampleConverter(enum DevFmtType srcType, enum DevFmtType dstType, + ALsizei numchans, ALsizei srcRate, ALsizei dstRate, + Resampler resampler); void DestroySampleConverter(SampleConverter **converter); ALsizei SampleConverterInput(SampleConverter *converter, const ALvoid **src, ALsizei *srcframes, ALvoid *dst, ALsizei dstframes); -- 2.11.4.GIT