Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package soundtouch for openSUSE:Factory checked in at 2026-07-06 12:28:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/soundtouch (Old) and /work/SRC/openSUSE:Factory/.soundtouch.new.1982 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "soundtouch" Mon Jul 6 12:28:09 2026 rev:38 rq:1363641 version:2.4.1 Changes: -------- --- /work/SRC/openSUSE:Factory/soundtouch/soundtouch.changes 2024-05-16 17:14:02.645462267 +0200 +++ /work/SRC/openSUSE:Factory/.soundtouch.new.1982/soundtouch.changes 2026-07-06 12:28:48.552054904 +0200 @@ -1,0 +2,19 @@ +Sun Jun 28 17:53:20 UTC 2026 - Dirk Müller <[email protected]> + +- update to 2.4.1: + * Fix buffer overflow when processing >16 channels + * fix: fix unused variables in DLMain + * fix: fix warning for unused peaklevel in release mode + +------------------------------------------------------------------- +Thu Sep 18 13:22:27 UTC 2025 - Antonio Teixeira <[email protected]> + +- Update to 2.4.0: + * Set CMake minimum version to 3.5 to avoid deprecation warning + * Increase max nr. of channels from 16 to 32 + * Don't use `pow()` when using integer precision samples + * Replace `-Ofast` that's being deprecated in some compilers, by + `-O3 -ffast-math` +- Refresh disable-ffast-math.patch + +------------------------------------------------------------------- Old: ---- 2.3.3.tar.gz New: ---- 2.4.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ soundtouch.spec ++++++ --- /var/tmp/diff_new_pack.CIfvFr/_old 2026-07-06 12:28:49.516088349 +0200 +++ /var/tmp/diff_new_pack.CIfvFr/_new 2026-07-06 12:28:49.516088349 +0200 @@ -1,7 +1,7 @@ # # spec file for package soundtouch # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define sover 1 Name: soundtouch -Version: 2.3.3 +Version: 2.4.1 Release: 0 Summary: Audio Processing Library License: LGPL-2.1-or-later ++++++ 2.3.3.tar.gz -> 2.4.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/.vscode/settings.json new/soundtouch/.vscode/settings.json --- old/soundtouch/.vscode/settings.json 1970-01-01 01:00:00.000000000 +0100 +++ new/soundtouch/.vscode/settings.json 2026-03-29 12:09:52.000000000 +0200 @@ -0,0 +1,3 @@ +{ + "html.format.enable": false +} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/CMakeLists.txt new/soundtouch/CMakeLists.txt --- old/soundtouch/CMakeLists.txt 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/CMakeLists.txt 2026-03-29 12:09:52.000000000 +0200 @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.1) -project(SoundTouch VERSION 2.3.3 LANGUAGES CXX) +cmake_minimum_required(VERSION 3.5) +project(SoundTouch VERSION 2.4.1 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) include(GNUInstallDirs) @@ -13,7 +13,8 @@ if(EMSCRIPTEN) list(APPEND COMPILE_OPTIONS -O3) else() - list(APPEND COMPILE_OPTIONS -Ofast) + # Apply -ffast-math to allow compiler autovectorization generate effective SIMD code for arm compilation + list(APPEND COMPILE_OPTIONS -O3 -ffast-math) endif() endif() @@ -96,6 +97,7 @@ include/soundtouch_config.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/soundtouch" + COMPONENT SoundTouch ) install(TARGETS SoundTouch @@ -104,6 +106,7 @@ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + COMPONENT SoundTouch ) ####################### @@ -126,6 +129,7 @@ install(TARGETS soundstretch DESTINATION bin + COMPONENT soundstretch ) endif() @@ -144,8 +148,8 @@ target_compile_definitions(SoundTouchDLL PRIVATE DLL_EXPORTS) target_include_directories(SoundTouchDLL PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>) target_link_libraries(SoundTouchDLL PRIVATE SoundTouch) - install(FILES source/SoundTouchDLL/SoundTouchDLL.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/soundtouch") - install(TARGETS SoundTouchDLL EXPORT SoundTouchTargets) + install(FILES source/SoundTouchDLL/SoundTouchDLL.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/soundtouch" COMPONENT SoundTouchDLL) + install(TARGETS SoundTouchDLL EXPORT SoundTouchTargets COMPONENT SoundTouchDLL) endif() ######################## @@ -157,7 +161,7 @@ set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") set(VERSION "${CMAKE_PROJECT_VERSION}") configure_file(soundtouch.pc.in "${CMAKE_CURRENT_BINARY_DIR}/soundtouch.pc" @ONLY) -install(FILES "${CMAKE_CURRENT_BINARY_DIR}/soundtouch.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/soundtouch.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" COMPONENT SoundTouch) # CMake config include(CMakePackageConfigHelpers) @@ -167,6 +171,7 @@ FILE SoundTouchTargets.cmake NAMESPACE SoundTouch:: DESTINATION "${SOUNDTOUCH_INSTALL_CMAKEDIR}" + COMPONENT SoundTouch ) configure_package_config_file(SoundTouchConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/SoundTouchConfig.cmake" @@ -182,4 +187,5 @@ "${CMAKE_CURRENT_BINARY_DIR}/SoundTouchConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/SoundTouchConfigVersion.cmake" DESTINATION "${SOUNDTOUCH_INSTALL_CMAKEDIR}" + COMPONENT SoundTouch ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/README.html new/soundtouch/README.html --- old/soundtouch/README.html 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/README.html 2026-03-29 12:09:52.000000000 +0200 @@ -15,8 +15,8 @@ <body class="normal"> <hr> - <h1>SoundTouch audio processing library v2.3.3</h1> - <p class="normal">SoundTouch library Copyright © Olli Parviainen 2001-2024</p> + <h1>SoundTouch audio processing library v2.4.0</h1> + <p class="normal">SoundTouch library Copyright © Olli Parviainen 2001-2025</p> <hr> <h2>1. Introduction </h2> <p>SoundTouch is an open-source audio processing library that allows @@ -81,8 +81,8 @@ <p>The SoundTouch library compiles in practically any platform supporting GNU compiler (GCC) tools. <h4>2.2.1 Compiling with autotools</h4> - <p>To install build prerequisites for 'autotools' tool chain:</p> - <pre> sudo apt-get install automake autoconf libtool build-essential</pre> + <p>To install build prerequisites for 'autotools' tool chain (for Ubuntu/Debian. Use dnf/yum/etc in other distros):</p> + <pre> sudo apt install -y automake autoconf libtool build-essential</pre> <p>To build and install the binaries, run the following commands in /soundtouch directory:</p> <table border="0" cellpadding="0" cellspacing="4"> @@ -140,8 +140,8 @@ <h4><b>2.2.2 Compiling with cmake</b></h4> <p>'cmake' build scripts are provided as an alternative to the autotools toolchain.</p> - <p>To install cmake build prerequisites:</p> - <pre> sudo apt-get install libtool build-essential cmake</pre> + <p>To install cmake build prerequisites (for Ubuntu/Debian. Use dnf/yum/etc in other distros):</p> + <pre> sudo apt install -y libtool build-essential cmake</pre> <p>To build:</p> <pre> cmake . @@ -205,7 +205,7 @@ separate mono channels, this isn't recommended because processing the channels separately would result in losing the phase coherency between the channels, which consequently would ruin the stereo effect.</p> - <p>Sample rates between 8000-48000H are supported.</p> + <p>Sample rates between 8000-48000Hz are supported.</p> <h3>3.2. Processing latency</h3> <p>The processing and latency constraints of the SoundTouch library are:</p> <ul> @@ -606,10 +606,21 @@ <pre>soundstretch original.wav output.wav -pitch=-0.318</pre> </blockquote> <hr> - <h2>5. Change History</h2> + <a name="changehistory"><h2>5. Change History</h2></a> <h3>5.1. SoundTouch library Change History </h3> - <p><b>2.3.3:</b></p> + <p><b>2.4.1:</b></p> <ul class="current"> + <li>Resolve buffer overflow in FIR filter when processing more than 16 channels</li> + </ul> + <p><b>2.4.0:</b></p> + <ul> + <li>Set CMake minimum version to 3.5 to avoid deprecation warning</li> + <li>Increase max nr. of channels from 16 to 32</li> + <li>Don't use `pow()` when using integer precision samples</li> + <li>Replace `-Ofast` that's being deprecated in some compilers, by `-O3 -ffast-math`</li> + </ul> + <p><b>2.3.3:</b></p> + <ul> <li>Fixing compiler warnings, maintenance fixes to make/build files for various systems </li> </ul> @@ -881,9 +892,14 @@ <ul> <li> Initial release</li> </ul> + <br><br> <h3>5.2. SoundStretch application Change History </h3> - <p><b>2.3.3:</b></p> + <p><b>2.4.0:</b></p> <ul class="current_soundstretch"> + <li>parse command-line argument values with double float precision.</li> + </ul> + <p><b>2.3.3:</b></p> + <ul> <li>Added support for Asian / non-latin filenames in Windows. Gnu platform has supported them already earlier.</li> </ul> <p><b>1.9:</b></p> @@ -996,6 +1012,7 @@ <li> Rémi Verschelde</li> <li> Katja Vetter</li> <li> Wu Q.</li> + <li> Olivier Laflamme</li> </ul> <p>Moral greetings to all other contributors and users also!</p> <hr> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/configure.ac new/soundtouch/configure.ac --- old/soundtouch/configure.ac 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/configure.ac 2026-03-29 12:09:52.000000000 +0200 @@ -15,7 +15,7 @@ dnl Place - Suite 330, Boston, MA 02111-1307, USA # Process this file with autoconf to produce a configure script. -AC_INIT([SoundTouch],[2.3.2],[http://www.surina.net/soundtouch]) +AC_INIT([SoundTouch],[2.4.0],[http://www.surina.net/soundtouch]) dnl Default to libSoundTouch.so.$LIB_SONAME.0.0 LIB_SONAME=1 AC_SUBST(LIB_SONAME) @@ -31,9 +31,8 @@ AC_LANG(C++) -# Compiler flags. Apply -Ofast (implies -O3 -ffast-math) to allow gcc autovectorization -# generate effective SIMD code. -CXXFLAGS="${CXXFLAGS} -Ofast -Wall -Wextra -Wzero-as-null-pointer-constant -Wno-unknown-pragmas" +# Compiler flags. Apply -ffast-math to allow compiler autovectorization generate effective SIMD code for arm compilation +CXXFLAGS="${CXXFLAGS} -O3 -ffast-math -Wall -Wextra -Wzero-as-null-pointer-constant -Wno-unknown-pragmas" # Set AR_FLAGS to avoid build warning "ar: `u' modifier ignored since `D' is the default (see `U')" AR_FLAGS='cr' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/include/STTypes.h new/soundtouch/include/STTypes.h --- old/soundtouch/include/STTypes.h 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/include/STTypes.h 2026-03-29 12:09:52.000000000 +0200 @@ -56,8 +56,9 @@ namespace soundtouch { - /// Max allowed number of channels - #define SOUNDTOUCH_MAX_CHANNELS 16 + /// Max allowed number of channels. This is not a hard limit but to have some + /// maximum value for argument sanity checks -- can be increased if necessary + #define SOUNDTOUCH_MAX_CHANNELS 32 /// Activate these undef's to overrule the possible sampletype /// setting inherited from some other header file: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/include/SoundTouch.h new/soundtouch/include/SoundTouch.h --- old/soundtouch/include/SoundTouch.h 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/include/SoundTouch.h 2026-03-29 12:09:52.000000000 +0200 @@ -72,10 +72,10 @@ { /// Soundtouch library version string -#define SOUNDTOUCH_VERSION "2.3.3" +#define SOUNDTOUCH_VERSION "2.4.1" /// SoundTouch library version id -#define SOUNDTOUCH_VERSION_ID (20303) +#define SOUNDTOUCH_VERSION_ID (20401) // // Available setting IDs for the 'setSetting' & 'get_setting' functions: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/readme.md new/soundtouch/readme.md --- old/soundtouch/readme.md 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/readme.md 2026-03-29 12:09:52.000000000 +0200 @@ -11,7 +11,13 @@ Visit [SoundTouch website](https://www.surina.net/soundtouch) and see the [README file](https://www.surina.net/soundtouch/readme.html) for more information and audio examples. -### The latest stable release is 2.3.3 +## Version + +**The latest stable release in Git is 2.4.1** + +See the [README file for change history](https://soundtouch.surina.net/README.html#changehistory) + +[](https://repology.org/project/soundtouch/versions) ## Example @@ -21,7 +27,7 @@ soundstretch my_original_file.wav output_file.wav -tempo=+15 -pitch=-3 ``` -See the [README file](http://soundtouch.surina.net/README.html) for more usage examples and instructions how to build SoundTouch + SoundStretch. +See the [README file](https://soundtouch.surina.net/README.html) for more usage examples and instructions how to build the software. Ready [SoundStretch application executables](https://www.surina.net/soundtouch/download.html) are available for download for Windows and Mac OS. @@ -40,6 +46,8 @@ ## Tarballs Source code release tarballs: +* https://www.surina.net/soundtouch/soundtouch-2.4.1.tar.gz +* https://www.surina.net/soundtouch/soundtouch-2.4.0.tar.gz * https://www.surina.net/soundtouch/soundtouch-2.3.3.tar.gz * https://www.surina.net/soundtouch/soundtouch-2.3.2.tar.gz * https://www.surina.net/soundtouch/soundtouch-2.3.1.tar.gz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundStretch/RunParameters.cpp new/soundtouch/source/SoundStretch/RunParameters.cpp --- old/soundtouch/source/SoundStretch/RunParameters.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundStretch/RunParameters.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -199,7 +199,7 @@ ST_THROW_RT_ERROR(licenseText); } -float RunParameters::parseSwitchValue(const STRING& str) const +double RunParameters::parseSwitchValue(const STRING& str) const { int pos; @@ -211,7 +211,7 @@ } // Read numerical parameter value after '=' - return (float)stof(str.substr(pos + 1).c_str()); + return stof(str.substr(pos + 1).c_str()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundStretch/RunParameters.h new/soundtouch/source/SoundStretch/RunParameters.h --- old/soundtouch/source/SoundStretch/RunParameters.h 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundStretch/RunParameters.h 2026-03-29 12:09:52.000000000 +0200 @@ -48,17 +48,17 @@ void throwLicense() const; void parseSwitchParam(const STRING& str); void checkLimits(); - float parseSwitchValue(const STRING& tr) const; + double parseSwitchValue(const STRING& tr) const; public: STRING inFileName; STRING outFileName; - float tempoDelta{ 0 }; - float pitchDelta{ 0 }; - float rateDelta{ 0 }; + double tempoDelta{ 0 }; + double pitchDelta{ 0 }; + double rateDelta{ 0 }; int quick{ 0 }; int noAntiAlias{ 0 }; - float goalBPM{ 0 }; + double goalBPM{ 0 }; bool detectBPM{ false }; bool speech{ false }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundStretch/WavFile.cpp new/soundtouch/source/SoundStretch/WavFile.cpp --- old/soundtouch/source/SoundStretch/WavFile.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundStretch/WavFile.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -220,7 +220,7 @@ } // sanity check for format parameters - if ((header.format.channel_number < 1) || (header.format.channel_number > 9) || + if ((header.format.channel_number < 1) || (header.format.channel_number > 32) || (header.format.sample_rate < 4000) || (header.format.sample_rate > 192000) || (header.format.byte_per_sample < 1) || (header.format.byte_per_sample > 320) || (header.format.bits_per_sample < 8) || (header.format.bits_per_sample > 32)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundStretch/main.cpp new/soundtouch/source/SoundStretch/main.cpp --- old/soundtouch/source/SoundStretch/main.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundStretch/main.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -145,9 +145,9 @@ #endif // print processing information only if outFileName given i.e. some processing will happen fprintf(stderr, "Processing the file with the following changes:\n"); - fprintf(stderr, " tempo change = %+g %%\n", params.tempoDelta); - fprintf(stderr, " pitch change = %+g semitones\n", params.pitchDelta); - fprintf(stderr, " rate change = %+g %%\n\n", params.rateDelta); + fprintf(stderr, " tempo change = %+lg %%\n", params.tempoDelta); + fprintf(stderr, " pitch change = %+lg semitones\n", params.pitchDelta); + fprintf(stderr, " rate change = %+lg %%\n\n", params.rateDelta); fprintf(stderr, "Working..."); } else @@ -240,7 +240,7 @@ if (bpmValue > 0) { - fprintf(stderr, "Detected BPM rate %.1f\n\n", bpmValue); + fprintf(stderr, "Detected BPM rate %.1lf\n\n", bpmValue); } else { @@ -252,7 +252,7 @@ { // adjust tempo to given bpm params.tempoDelta = (params.goalBPM / bpmValue - 1.0f) * 100.0f; - fprintf(stderr, "The file will be converted to %.1f BPM\n\n", params.goalBPM); + fprintf(stderr, "The file will be converted to %.1lf BPM\n\n", params.goalBPM); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundStretch/soundstretch.vcxproj new/soundtouch/source/SoundStretch/soundstretch.vcxproj --- old/soundtouch/source/SoundStretch/soundstretch.vcxproj 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundStretch/soundstretch.vcxproj 2026-03-29 12:09:52.000000000 +0200 @@ -26,25 +26,25 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> @@ -213,6 +213,7 @@ <EnableEnhancedInstructionSet> </EnableEnhancedInstructionSet> <MultiProcessorCompilation>true</MultiProcessorCompilation> + <LanguageStandard>stdcpp17</LanguageStandard> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> @@ -263,6 +264,7 @@ <EnableEnhancedInstructionSet> </EnableEnhancedInstructionSet> <MultiProcessorCompilation>true</MultiProcessorCompilation> + <LanguageStandard>stdcpp17</LanguageStandard> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouch/BPMDetect.cpp new/soundtouch/source/SoundTouch/BPMDetect.cpp --- old/soundtouch/source/SoundTouch/BPMDetect.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouch/BPMDetect.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -301,7 +301,7 @@ pBuffer = buffer->ptrBegin(); // calculate decay factor for xcorr filtering - float xcorr_decay = (float)pow(0.5, 1.0 / (XCORR_DECAY_TIME_CONSTANT * TARGET_SRATE / process_samples)); + float xcorr_decay = (float)pow(0.5, process_samples / (XCORR_DECAY_TIME_CONSTANT * TARGET_SRATE)); // prescale pbuffer float tmp[XCORR_UPDATE_SEQUENCE]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouch/FIRFilter.cpp new/soundtouch/source/SoundTouch/FIRFilter.cpp --- old/soundtouch/source/SoundTouch/FIRFilter.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouch/FIRFilter.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -56,7 +56,6 @@ FIRFilter::FIRFilter() { resultDivFactor = 0; - resultDivider = 0; length = 0; lengthDiv8 = 0; filterCoeffs = nullptr; @@ -79,7 +78,7 @@ uint ilength = length & -8; assert((length != 0) && (length == ilength) && (src != nullptr) && (dest != nullptr) && (filterCoeffs != nullptr)); - assert(numSamples > ilength); + assert(numSamples >= ilength); end = 2 * (numSamples - ilength); @@ -155,7 +154,7 @@ assert(src != nullptr); assert(dest != nullptr); assert(filterCoeffs != nullptr); - assert(numChannels < 16); + assert(numChannels <= SOUNDTOUCH_MAX_CHANNELS); // hint compiler autovectorization that loop length is divisible by 8 int ilength = length & -8; @@ -166,7 +165,7 @@ for (j = 0; j < end; j += numChannels) { const SAMPLETYPE *ptr; - LONG_SAMPLETYPE sums[16]; + LONG_SAMPLETYPE sums[SOUNDTOUCH_MAX_CHANNELS]; uint c; int i; @@ -207,24 +206,24 @@ assert(newLength > 0); if (newLength % 8) ST_THROW_RT_ERROR("FIR filter length not divisible by 8"); - #ifdef SOUNDTOUCH_FLOAT_SAMPLES - // scale coefficients already here if using floating samples - double scale = 1.0 / resultDivider; - #else - short scale = 1; - #endif - lengthDiv8 = newLength / 8; length = lengthDiv8 * 8; assert(length == newLength); resultDivFactor = uResultDivFactor; - resultDivider = (SAMPLETYPE)::pow(2.0, (int)resultDivFactor); delete[] filterCoeffs; filterCoeffs = new SAMPLETYPE[length]; delete[] filterCoeffsStereo; filterCoeffsStereo = new SAMPLETYPE[length*2]; + +#ifdef SOUNDTOUCH_FLOAT_SAMPLES + // scale coefficients already here if using floating samples + const double scale = ::pow(0.5, (int)resultDivFactor);; +#else + const short scale = 1; +#endif + for (uint i = 0; i < length; i ++) { filterCoeffs[i] = (SAMPLETYPE)(coeffs[i] * scale); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouch/FIRFilter.h new/soundtouch/source/SoundTouch/FIRFilter.h --- old/soundtouch/source/SoundTouch/FIRFilter.h 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouch/FIRFilter.h 2026-03-29 12:09:52.000000000 +0200 @@ -52,9 +52,6 @@ // Result divider factor in 2^k format uint resultDivFactor; - // Result divider value. - SAMPLETYPE resultDivider; - // Memory for filter coefficients SAMPLETYPE *filterCoeffs; SAMPLETYPE *filterCoeffsStereo; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouch/PeakFinder.cpp new/soundtouch/source/SoundTouch/PeakFinder.cpp --- old/soundtouch/source/SoundTouch/PeakFinder.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouch/PeakFinder.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -136,10 +136,9 @@ // proceeds to direction defined in 'direction' int PeakFinder::findCrossingLevel(const float *data, float level, int peakpos, int direction) const { - float peaklevel; int pos; - peaklevel = data[peakpos]; + [[maybe_unused]] float peaklevel = data[peakpos]; assert(peaklevel >= level); pos = peakpos; while ((pos >= minPos) && (pos + direction < maxPos)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouch/SoundTouch.vcxproj new/soundtouch/source/SoundTouch/SoundTouch.vcxproj --- old/soundtouch/source/SoundTouch/SoundTouch.vcxproj 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouch/SoundTouch.vcxproj 2026-03-29 12:09:52.000000000 +0200 @@ -25,25 +25,25 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <UseOfMfc>false</UseOfMfc> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> @@ -155,6 +155,7 @@ <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName> <BrowseInformationFile>$(IntDir)</BrowseInformationFile> <MultiProcessorCompilation>true</MultiProcessorCompilation> + <LanguageStandard>stdcpp17</LanguageStandard> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> @@ -231,6 +232,7 @@ <XMLDocumentationFileName>$(IntDir)</XMLDocumentationFileName> <BrowseInformationFile>$(IntDir)</BrowseInformationFile> <MultiProcessorCompilation>true</MultiProcessorCompilation> + <LanguageStandard>stdcpp17</LanguageStandard> </ClCompile> <ResourceCompile> <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouch/sse_optimized.cpp new/soundtouch/source/SoundTouch/sse_optimized.cpp --- old/soundtouch/source/SoundTouch/sse_optimized.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouch/sse_optimized.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -211,9 +211,6 @@ // (overloaded) Calculates filter coefficients for SSE routine void FIRFilterSSE::setCoefficients(const float *coeffs, uint newLength, uint uResultDivFactor) { - uint i; - float fDivider; - FIRFilter::setCoefficients(coeffs, newLength, uResultDivFactor); // Scale the filter coefficients so that it won't be necessary to scale the filtering result @@ -223,13 +220,13 @@ filterCoeffsUnalign = new float[2 * newLength + 4]; filterCoeffsAlign = (float *)SOUNDTOUCH_ALIGN_POINTER_16(filterCoeffsUnalign); - fDivider = (float)resultDivider; + const float scale = static_cast<float>(::pow(0.5, (int)resultDivFactor)); - // rearrange the filter coefficients for mmx routines - for (i = 0; i < newLength; i ++) + // rearrange the filter coefficients for sse routines + for (auto i = 0U; i < newLength; i ++) { filterCoeffsAlign[2 * i + 0] = - filterCoeffsAlign[2 * i + 1] = coeffs[i + 0] / fDivider; + filterCoeffsAlign[2 * i + 1] = coeffs[i] * scale; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouchDLL/DllTest/DllTest.vcxproj new/soundtouch/source/SoundTouchDLL/DllTest/DllTest.vcxproj --- old/soundtouch/source/SoundTouchDLL/DllTest/DllTest.vcxproj 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouchDLL/DllTest/DllTest.vcxproj 2026-03-29 12:09:52.000000000 +0200 @@ -28,26 +28,26 @@ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> @@ -116,6 +116,8 @@ <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>../../../include</AdditionalIncludeDirectories> <DisableSpecificWarnings>4996</DisableSpecificWarnings> + <LanguageStandard>stdcpp17</LanguageStandard> + <MultiProcessorCompilation>true</MultiProcessorCompilation> </ClCompile> <Link> <SubSystem>Console</SubSystem> @@ -154,6 +156,8 @@ <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>../../../include</AdditionalIncludeDirectories> <DisableSpecificWarnings>4996</DisableSpecificWarnings> + <LanguageStandard>stdcpp17</LanguageStandard> + <MultiProcessorCompilation>true</MultiProcessorCompilation> </ClCompile> <Link> <SubSystem>Console</SubSystem> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouchDLL/SoundTouchDLL.cpp new/soundtouch/source/SoundTouchDLL/SoundTouchDLL.cpp --- old/soundtouch/source/SoundTouchDLL/SoundTouchDLL.cpp 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouchDLL/SoundTouchDLL.cpp 2026-03-29 12:09:52.000000000 +0200 @@ -35,9 +35,9 @@ #include <windows.h> // DLL main in Windows compilation - BOOL APIENTRY DllMain( HANDLE hModule, + BOOL APIENTRY DllMain([[maybe_unused]] HANDLE hModule, DWORD ul_reason_for_call, - LPVOID lpReserved + [[maybe_unused]] LPVOID lpReserved ) { switch (ul_reason_for_call) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouchDLL/SoundTouchDLL.rc new/soundtouch/source/SoundTouchDLL/SoundTouchDLL.rc --- old/soundtouch/source/SoundTouchDLL/SoundTouchDLL.rc 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouchDLL/SoundTouchDLL.rc 2026-03-29 12:09:52.000000000 +0200 @@ -7,7 +7,7 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#include "afxres.h" +#include "windows.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS @@ -25,18 +25,18 @@ // TEXTINCLUDE // -1 TEXTINCLUDE +1 TEXTINCLUDE BEGIN "resource.h\0" END -2 TEXTINCLUDE +2 TEXTINCLUDE BEGIN "#include ""afxres.h""\r\n" "\0" END -3 TEXTINCLUDE +3 TEXTINCLUDE BEGIN "\r\n" "\0" @@ -51,8 +51,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,3,2,0 - PRODUCTVERSION 2,3,2,0 + FILEVERSION 2,4,0,0 + PRODUCTVERSION 2,4,0,0 FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L @@ -69,12 +69,12 @@ BEGIN VALUE "Comments", "SoundTouch Library licensed for 3rd party applications subject to LGPL license v2.1. Visit http://www.surina.net/soundtouch for more information about the SoundTouch library." VALUE "FileDescription", "SoundTouch Dynamic Link Library" - VALUE "FileVersion", "2.3.3.0" + VALUE "FileVersion", "2.4.1.0" VALUE "InternalName", "SoundTouch" - VALUE "LegalCopyright", "Copyright (C) Olli Parviainen 2024" + VALUE "LegalCopyright", "Copyright (C) Olli Parviainen" VALUE "OriginalFilename", "SoundTouch.dll" VALUE "ProductName", " SoundTouch Dynamic Link Library" - VALUE "ProductVersion", "2.3.3.0" + VALUE "ProductVersion", "2.4.1.0" END END BLOCK "VarFileInfo" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/soundtouch/source/SoundTouchDLL/SoundTouchDLL.vcxproj new/soundtouch/source/SoundTouchDLL/SoundTouchDLL.vcxproj --- old/soundtouch/source/SoundTouchDLL/SoundTouchDLL.vcxproj 2024-03-29 19:49:53.000000000 +0100 +++ new/soundtouch/source/SoundTouchDLL/SoundTouchDLL.vcxproj 2026-03-29 12:09:52.000000000 +0200 @@ -26,22 +26,22 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <ConfigurationType>DynamicLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> + <PlatformToolset>v143</PlatformToolset> <CharacterSet>Unicode</CharacterSet> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> @@ -148,6 +148,8 @@ <ObjectFileName>$(OutDir)</ObjectFileName> <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> <FloatingPointModel>Fast</FloatingPointModel> + <LanguageStandard>stdcpp17</LanguageStandard> + <MultiProcessorCompilation>true</MultiProcessorCompilation> </ClCompile> <Link> <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> @@ -231,6 +233,8 @@ <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName> <MinimalRebuild /> <FloatingPointModel>Fast</FloatingPointModel> + <LanguageStandard>stdcpp17</LanguageStandard> + <MultiProcessorCompilation>true</MultiProcessorCompilation> </ClCompile> <Link> <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> ++++++ disable-ffast-math.patch ++++++ --- /var/tmp/diff_new_pack.CIfvFr/_old 2026-07-06 12:28:49.848099867 +0200 +++ /var/tmp/diff_new_pack.CIfvFr/_new 2026-07-06 12:28:49.852100007 +0200 @@ -8,7 +8,7 @@ =================================================================== --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -9,12 +9,7 @@ set(COMPILE_OPTIONS) +@@ -9,13 +9,7 @@ set(COMPILE_OPTIONS) if(MSVC) set(COMPILE_DEFINITIONS /O2 /fp:fast) else() @@ -16,7 +16,8 @@ - if(EMSCRIPTEN) - list(APPEND COMPILE_OPTIONS -O3) - else() -- list(APPEND COMPILE_OPTIONS -Ofast) +- # Apply -ffast-math to allow compiler autovectorization generate effective SIMD code for arm compilation +- list(APPEND COMPILE_OPTIONS -O3 -ffast-math) - endif() + list(APPEND COMPILE_OPTIONS -Wall -Wextra -Wzero-as-null-pointer-constant -Wno-unknown-pragmas -O2) endif() @@ -26,11 +27,11 @@ =================================================================== --- a/configure.ac +++ b/configure.ac -@@ -33,7 +33,7 @@ AC_LANG(C++) +@@ -32,7 +32,7 @@ AC_DISABLE_STATIC dnl This makes libtool + AC_LANG(C++) - # Compiler flags. Apply -Ofast (implies -O3 -ffast-math) to allow gcc autovectorization - # generate effective SIMD code. --CXXFLAGS="${CXXFLAGS} -Ofast -Wall -Wextra -Wzero-as-null-pointer-constant -Wno-unknown-pragmas" + # Compiler flags. Apply -ffast-math to allow compiler autovectorization generate effective SIMD code for arm compilation +-CXXFLAGS="${CXXFLAGS} -O3 -ffast-math -Wall -Wextra -Wzero-as-null-pointer-constant -Wno-unknown-pragmas" +CXXFLAGS="${CXXFLAGS} -O2 -Wall -Wextra -Wzero-as-null-pointer-constant -Wno-unknown-pragmas" # Set AR_FLAGS to avoid build warning "ar: `u' modifier ignored since `D' is the default (see `U')"
