Add a empty mock "soundtouch_config.h" file and remove "CMAKE" compiler
definition that was used in #ifdef that skipped including
"soundtouch_config.h" in cmake build.
This is to avoid errors about missing include file when not using
autotools build.
Also update version to 2.3.1
Signed-off-by: Olli <oparviai'at'iki.fi>
we need use += and a space CXXFLAGS+=" -O3 -ffast-math" , if not += you override all system settings for CXXFLAGS and none for LDFLAGS, which ends with "/usr/bin/ld: /tmp/ccARck2g.o: relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE`"
https://stackoverflow.com/a/38579792/778517
- enable "-Ofast" compilation flags for cmake build
- adjust compiler flags for the SoundTouchDLL compilation
- add cmake-generated "SoundTouchDLL_EXPORTS" as alias for "DLL_EXPORT"
- hide cmake temporary files in gitignore
Signed-off-by: Olli <oparviai'at'iki.fi>
Improve soundtouch.clear() so that it really clears all TDStretch &
RateTransposer state variables. Before this clear() left last processed
sample or fractional position state uncleared, which caused slightly
different result if same stream was processed again after clear().
... so that with nominal tempo the expected best sequence overlapping
location lays in middle of the correlation window. This will ensure that
with output should be similar to input when tempo adjustment is zero.
Change default setting so that SIMD does not skip of unaligned memory
offsets, as that likely is not a necessary compromise with concurrent
CPUs any more.
Refactored FIRfilter and TDStretch hot-spot routines to help compiler
perform more efficient autovectorization.
Benchmarked:
- 2x/3x improvement in gcc-generated x86 SIMD code execution
times for SSE2/AVX instruction extensions accordingly, when
hand-tuned SSE intrinsics were disabled. Hand-tuned SSE code
still is slightly faster than gcc-produced AVX.
- 2.4x improvement for cumulative ARM NEON tunings when compared to
previous SoundTouch release.
Signed-off-by: Olli Parviainen <oparviai'at'iki.fi>
Using "unsigned long" for "lnorm" variable that was yet made negative in very first step caused incorrect calculation result. Corrected the type to "long".
Signed-off-by: Olli Parviainen <oparviai@iki.fi>
Fixes warning C4267 on MSVC.
This assumes that `beats.size()` should never overflow `int` - if that
could happen, the API should likely be changed to handle it gracefully.