aboutsummaryrefslogtreecommitdiffstats
path: root/alc/converter.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-09-26 19:24:29 -0700
committerChris Robinson <[email protected]>2019-09-26 19:24:29 -0700
commit9b64e5e0db2a778313bb873bb38f481ce40efe31 (patch)
tree4ac057e992a8720abf57e1ce548d4bda1a750f42 /alc/converter.cpp
parentd50ca464cd5e4f07bc399fd244578b0b34d72aef (diff)
Implement a "fast" bsinc path
This takes advantage of the fact than when increment <= 1 (when not down- sampling), the scale factor is always 0. As a result, the scale and scale-phase deltas never contribute to the filtered output. Removing those multiply+add operations cuts half of the work done by the inner loop. Sounds that do need to down-sample (when played with a high pitch, or is 48khz on 44.1khz output, for example), still go through the normal bsinc process.
Diffstat (limited to 'alc/converter.cpp')
-rw-r--r--alc/converter.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/alc/converter.cpp b/alc/converter.cpp
index 6622a997..b0efb839 100644
--- a/alc/converter.cpp
+++ b/alc/converter.cpp
@@ -171,7 +171,7 @@ SampleConverterPtr CreateSampleConverter(DevFmtType srcType, DevFmtType dstType,
BsincPrepare(converter->mIncrement, &converter->mState.bsinc, &bsinc24);
else if(resampler == Resampler::BSinc12)
BsincPrepare(converter->mIncrement, &converter->mState.bsinc, &bsinc12);
- converter->mResample = SelectResampler(resampler);
+ converter->mResample = SelectResampler(resampler, converter->mIncrement);
}
return converter;