50 Commits

Author SHA1 Message Date
Vestral b7d8e685dd Remove cpu runtime checks 2023-11-30 01:06:02 +01:00
Olli 17a63e99d5 Fix bug with too small initial skipFract value
Fix bug with too small initial skipFract value with certain processing
parameter set: replaces assert with assignment that corrects the
situation.
2021-03-03 18:11:45 +02:00
Olli 6533514372 Improve soundtouch.clear() so that it really clears TDStretch & RateTransposer states
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().
2021-01-30 19:02:08 +02:00
Olli 81b0d74727 Correct initial skip value
... 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.
2021-01-28 21:32:35 +02:00
Olli Parviainen bf3cec0244 Improvements to help compiler autovectorization
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>
2020-10-13 20:46:23 +03:00
Olli Parviainen a911a1e986 Bugfix in integer version of calcCrossCorrAccumulate()
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>
2020-10-03 16:58:00 +03:00
Olli Parviainen 3d7bf376fd Tuning for ARM NEON
Tuning to enable ARM NEON SIMD performance improvements:
- NEON detection in configure file
- Remove manual loop unrolling, gcc autovectorization does better job
without manually unrolled loops.
- Avoid unaligned pointer accesses when using NEON
2020-06-21 20:38:00 +03:00
oparviainen cca9271e98 Merge branch 'master' of https://gitlab.com/soundtouch/soundtouch 2018-08-12 20:25:12 +03:00
oparviainen 107f2c5d20 Replaced illegal-number-of-channel assertions with run-time exception 2018-08-12 20:00:56 +03:00
luz.paz 0093b63141 MIsc. source comment typos
Found via `codespell -q 3`
2018-07-27 12:26:56 -04:00
Olli 47f74e83ef Merged typo correction patch 2018-05-12 18:40:56 +03:00
Olli c4154b063f Corrected typos in source code comments 2018-05-12 18:39:43 +03:00
Olli e765f8146f Removed Subversion $Id$, $Date$ etc autoupdate tags 2018-05-10 21:51:49 +03:00
oparviai 6e8d58cbcc Added sanity checks against illegal input audio stream parameters e.g. wildly excessive samplerate 2017-08-27 15:23:28 +00:00
oparviai 92bfdd1e8d Fixed a bug introduced in r245 that caused small constant time offset in the output vs. input stream 2017-04-07 19:01:22 +00:00
oparviai 6f82bdebdb Modify 'maxnorm' value insider critical section when using OpenMP with integer samples 2017-03-05 13:56:03 +00:00
oparviai 5d9bc2fdf3 Adjusted algorithm parameters for reducing reverberation artifact at tempo slowdown 2017-01-08 16:56:20 +00:00
oparviai 1049304b5d Fixed issue that clipped brief sequence of audio from beginning of the input audio 2017-01-08 16:27:02 +00:00
oparviai e302cd7123 Fix to issue that started audio track with brief sequence of silence 2016-10-20 16:30:11 +00:00
oparviai ac03757ec8 Added functions to get initial processing latency, and clarified reporting input/output batch sizes 2016-10-15 18:55:12 +00:00
oparviai e1c7cffbcd - Fixed incorrect maximally-small float variable initialization to use -FLT_MAX instead of FLT_MIN. This glitch may have caused possible negative index access when using best overlap quick seek algorithm
- version to 1.9.3(pre)
2016-01-05 20:42:45 +00:00
oparviai 089edd12f4 updated comments 2015-11-05 17:46:08 +00:00
oparviai db04025351 - Redesigned quickseek algorithm for improved sound quality in quickseek mode
- Adaptive integer divider scaling for improved sound quality when using integer processing
- Version 1.9.1-pre
2015-08-08 21:00:15 +00:00
oparviai c9507ff7f1 - Improved SoundTouch::flush() so that it produces exactly accurate number of output samples.
- Changed 'float' variables into 'double' for more precise calculation of input-vs-output samples.
2015-07-26 14:45:48 +00:00
oparviai 3e9cc3fd4b bugfix 2015-02-22 15:07:12 +00:00
oparviai d7d0a5c0f9 Implemented parallel computation using OpenMP pragmas 2015-02-21 21:24:29 +00:00
oparviai e23bd6d093 Replaced custom 'BOOL' type with C++ 'bool' 2014-04-06 15:57:21 +00:00
oparviai 1f6391a9ca Performance improvement in calcCrossCorr function - maintain accumulating normalization calculation instead of recalculating normalization factor on each round. 2014-01-07 18:25:40 +00:00
oparviai 746a90d610 Fixed integer overflow bug in integer versions of cross-correlation routines. 2014-01-06 19:40:40 +00:00
oparviai 55aa6f15e9 Bugfix and cleanups 2013-06-14 17:34:33 +00:00
oparviai 8c65661b91 Added support for multi-channel audio 2013-06-12 15:24:44 +00:00
oparviai c3f4ff9532 Fixed pointer aligning for mingw64 compilation 2012-11-08 18:53:01 +00:00
oparviai 557bf9d6e4 Time stretch routine improvements:
- improved sound quality
- streamlined code
2012-04-01 19:49:30 +00:00
oparviai ad164d96db Added a compile-time switch to disable throwing c++ exceptions 2011-09-02 18:56:11 +00:00
oparviai d002b52f2a use more specifically named global #defines 2011-02-13 19:13:57 +00:00
oparviai 33334d8dab Minor redundant code cleanup 2011-01-16 12:59:19 +00:00
oparviai c045c24e80 Retired 3DNow! optimizations as obsolete 2010-01-24 12:40:30 +00:00
oparviai b9a89735a3 Updated automatic parameter adjustment logic to reduce tone wobbling at large tempo changes. 2009-12-28 19:27:04 +00:00
oparviai 7560501414 Bugfix: Fixed variable initialization to avoid segment fault possibility due to negative array indexing in quick seek algorithm in presence of worst-case correlations. 2009-11-09 17:27:50 +00:00
oparviai fb966425c4 Couple of improvements:
- Added normalization to correlation calculation
- Heuristic that weights center of the processing window
2009-05-17 11:35:13 +00:00
oparviai 47659b0810 Fixed ambiguities in Solaris compilation 2009-02-25 17:13:51 +00:00
oparviai c17eb6821a Cleaned code with Lint 2009-02-21 16:00:14 +00:00
oparviai 9d7952e56e Added automatic sequence/seek window length parameter calculation 2009-01-25 13:43:54 +00:00
oparviai 9aaf4210af Added typecast to pow() 2009-01-11 11:35:44 +00:00
oparviai 59d58734b4 Repaired "integer" build 2008-12-13 19:52:22 +00:00
oparviai f7f1e2298b Fix in "setParameters": Negative function parameters values now mean "use the previous value". Earlier the function declaration used hardcoded default values for default parameters, and for this reason customized algorithm settings didn't work correctly. 2008-08-03 18:19:40 +00:00
oparviai da6bd9641c Added "const" keyword to a static constant array 2008-05-04 07:55:29 +00:00
oparviai 365531fa15 Fixed uninitialized tempo variable bug 2008-02-17 13:15:45 +00:00
oparviai e69813f645 Activated SVN keyword expansion 2008-02-10 16:26:55 +00:00
oparviai 2b64de964c Initial commit as per SoundTouch v1.3.1 2008-02-10 16:24:28 +00:00