Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libopenmpt for openSUSE:Factory 
checked in at 2025-09-15 19:50:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libopenmpt (Old)
 and      /work/SRC/openSUSE:Factory/.libopenmpt.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libopenmpt"

Mon Sep 15 19:50:21 2025 rev:56 rq:1304594 version:0.8.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/libopenmpt/libopenmpt.changes    2025-07-22 
12:54:05.708543905 +0200
+++ /work/SRC/openSUSE:Factory/.libopenmpt.new.1977/libopenmpt.changes  
2025-09-15 19:54:21.602768067 +0200
@@ -1,0 +2,12 @@
+Sun Sep 14 00:00:56 UTC 2025 - Mia Herkt <[email protected]>
+
+- Update to 0.8.3:
+  * [Bug] libopenmpt is now compatible with most non-standard
+    builds of libmpg123 which do not by default output signed
+    16bit PCM.
+  * [Bug] openmpt123: Pausing playback using the space key did
+    not work since 0.8.0.
+  * IT: Even when the filter cutoff envelope is stopped before its
+    first tick is applied, the filter should still be activated.
+
+-------------------------------------------------------------------

Old:
----
  libopenmpt-0.8.2+release.autotools.tar.gz

New:
----
  libopenmpt-0.8.3+release.autotools.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libopenmpt.spec ++++++
--- /var/tmp/diff_new_pack.mJmnyX/_old  2025-09-15 19:54:22.058787187 +0200
+++ /var/tmp/diff_new_pack.mJmnyX/_new  2025-09-15 19:54:22.058787187 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libopenmpt
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2025 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
@@ -21,7 +21,7 @@
 %define libopenmpt_modplug_version 0.8.9.0
 
 Name:           libopenmpt
-Version:        0.8.2
+Version:        0.8.3
 Release:        0
 Summary:        C++ and C library to decode tracker music files
 License:        BSD-3-Clause

++++++ libopenmpt-0.8.2+release.autotools.tar.gz -> 
libopenmpt-0.8.3+release.autotools.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/common/versionNumber.h 
new/libopenmpt-0.8.3+release.autotools/common/versionNumber.h
--- old/libopenmpt-0.8.2+release.autotools/common/versionNumber.h       
2025-07-19 12:36:55.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/common/versionNumber.h       
2025-09-06 15:30:03.000000000 +0200
@@ -15,5 +15,5 @@
 // Version definitions. The only thing that needs to be changed when changing 
version number.
 #define VER_MAJORMAJOR  1
 #define VER_MAJOR      32
-#define VER_MINOR      03
+#define VER_MINOR      04
 #define VER_MINORMINOR 00
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libopenmpt-0.8.2+release.autotools/configure 
new/libopenmpt-0.8.3+release.autotools/configure
--- old/libopenmpt-0.8.2+release.autotools/configure    2025-07-19 
15:11:22.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/configure    2025-09-06 
17:39:02.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for libopenmpt 0.8.2+release.autotools.
+# Generated by GNU Autoconf 2.71 for libopenmpt 0.8.3+release.autotools.
 #
 # Report bugs to <https://bugs.openmpt.org/>.
 #
@@ -621,8 +621,8 @@
 # Identity of this package.
 PACKAGE_NAME='libopenmpt'
 PACKAGE_TARNAME='libopenmpt'
-PACKAGE_VERSION='0.8.2+release.autotools'
-PACKAGE_STRING='libopenmpt 0.8.2+release.autotools'
+PACKAGE_VERSION='0.8.3+release.autotools'
+PACKAGE_STRING='libopenmpt 0.8.3+release.autotools'
 PACKAGE_BUGREPORT='https://bugs.openmpt.org/'
 PACKAGE_URL='https://lib.openmpt.org/'
 
@@ -1514,7 +1514,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libopenmpt 0.8.2+release.autotools to adapt to many 
kinds of systems.
+\`configure' configures libopenmpt 0.8.3+release.autotools to adapt to many 
kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1585,7 +1585,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libopenmpt 
0.8.2+release.autotools:";;
+     short | recursive ) echo "Configuration of libopenmpt 
0.8.3+release.autotools:";;
    esac
   cat <<\_ACEOF
 
@@ -1772,7 +1772,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libopenmpt configure 0.8.2+release.autotools
+libopenmpt configure 0.8.3+release.autotools
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2152,7 +2152,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libopenmpt $as_me 0.8.2+release.autotools, which was
+It was created by libopenmpt $as_me 0.8.3+release.autotools, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3648,7 +3648,7 @@
 
 # Define the identity of the package.
  PACKAGE='libopenmpt'
- VERSION='0.8.2+release.autotools'
+ VERSION='0.8.3+release.autotools'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -23188,13 +23188,13 @@
 
 
 
-printf "%s\n" "#define MPT_SVNURL 
\"https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.2\""; >>confdefs.h
+printf "%s\n" "#define MPT_SVNURL 
\"https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.3\""; >>confdefs.h
 
 
-printf "%s\n" "#define MPT_SVNVERSION \"23826\"" >>confdefs.h
+printf "%s\n" "#define MPT_SVNVERSION \"24141\"" >>confdefs.h
 
 
-printf "%s\n" "#define MPT_SVNDATE \"2025-07-19T10:45:24.126020Z\"" 
>>confdefs.h
+printf "%s\n" "#define MPT_SVNDATE \"2025-09-06T13:42:08.986313Z\"" 
>>confdefs.h
 
 
 printf "%s\n" "#define MPT_PACKAGE true" >>confdefs.h
@@ -27166,7 +27166,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libopenmpt $as_me 0.8.2+release.autotools, which was
+This file was extended by libopenmpt $as_me 0.8.3+release.autotools, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27226,7 +27226,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-libopenmpt config.status 0.8.2+release.autotools
+libopenmpt config.status 0.8.3+release.autotools
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libopenmpt-0.8.2+release.autotools/configure.ac 
new/libopenmpt-0.8.3+release.autotools/configure.ac
--- old/libopenmpt-0.8.2+release.autotools/configure.ac 2025-07-19 
15:10:54.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/configure.ac 2025-09-06 
17:38:36.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([libopenmpt], [0.8.2+release.autotools], [https://bugs.openmpt.org/], 
[libopenmpt], [https://lib.openmpt.org/])
+AC_INIT([libopenmpt], [0.8.3+release.autotools], [https://bugs.openmpt.org/], 
[libopenmpt], [https://lib.openmpt.org/])
 AC_PREREQ([2.69])
 # we do want 2.70, but distributions are not ready yet
 #AC_PREREQ([2.70])
@@ -88,9 +88,9 @@
 AC_SUBST([LIBOPENMPT_LTVER_REVISION])
 AC_SUBST([LIBOPENMPT_LTVER_AGE])
 
-AC_DEFINE([MPT_SVNURL], 
["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.2";], [svn version])
-AC_DEFINE([MPT_SVNVERSION], ["23826"], [svn version])
-AC_DEFINE([MPT_SVNDATE], ["2025-07-19T10:45:24.126020Z"], [svn date])
+AC_DEFINE([MPT_SVNURL], 
["https://source.openmpt.org/svn/openmpt/tags/libopenmpt-0.8.3";], [svn version])
+AC_DEFINE([MPT_SVNVERSION], ["24141"], [svn version])
+AC_DEFINE([MPT_SVNDATE], ["2025-09-06T13:42:08.986313Z"], [svn date])
 AC_DEFINE([MPT_PACKAGE], [true], [is package])
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/doc/libopenmpt/changelog.md 
new/libopenmpt-0.8.3+release.autotools/doc/libopenmpt/changelog.md
--- old/libopenmpt-0.8.2+release.autotools/doc/libopenmpt/changelog.md  
2025-07-19 12:45:16.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/doc/libopenmpt/changelog.md  
2025-09-06 15:42:06.000000000 +0200
@@ -5,6 +5,27 @@
 For fully detailed change log, please see the source repository directly. This
 is just a high-level summary.
 
+### libopenmpt 0.8.3 (2025-09-06)
+
+ *  [**Bug**] libopenmpt is now compatible with most non-standard builds of
+    libmpg123 which do not by default output signed 16bit PCM.
+ *  [**Bug**] openmpt123: Pausing playback using the space key did not work
+    since 0.8.0.
+ *  [**Bug**] Windows 10 binaries wrongly targeted Windows 11 22H2. They now
+    target Windows 10 2004.
+ *  [**Bug**] in_openmpt: in_openmpt for Windows XP or later did not ever work
+    in Winamp 2.x. We now provide a build specifically for Winamp 2.x in the
+    `Winamp2/` folder inside the `retro.winxp` package. The `retro.win98` build
+    was not affected.
+
+ *  [**Change**] in_openmpt: Modern and legacy builds of in_openmpt now
+    officially only support Winamp 5.x.
+
+ *  IT: Even when the filter cutoff envelope is stopped before its first tick 
is
+    applied, the filter should still be activated.
+
+ *  mpg123: Update to v1.33.2 (2025-08-05).
+
 ### libopenmpt 0.8.2 (2025-07-19)
 
  *  [**Sec**] Possible out-of-bounds sample data read in a specific combination
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/libopenmpt/libopenmpt_version.h 
new/libopenmpt-0.8.3+release.autotools/libopenmpt/libopenmpt_version.h
--- old/libopenmpt-0.8.2+release.autotools/libopenmpt/libopenmpt_version.h      
2025-07-19 12:45:16.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/libopenmpt/libopenmpt_version.h      
2025-09-06 15:42:06.000000000 +0200
@@ -21,7 +21,7 @@
 /*! \brief libopenmpt minor version number */
 #define OPENMPT_API_VERSION_MINOR 8
 /*! \brief libopenmpt patch version number */
-#define OPENMPT_API_VERSION_PATCH 2
+#define OPENMPT_API_VERSION_PATCH 3
 /*! \brief libopenmpt pre-release tag */
 #define OPENMPT_API_VERSION_PREREL ""
 /*! \brief libopenmpt pre-release flag */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/libopenmpt/libopenmpt_version.mk 
new/libopenmpt-0.8.3+release.autotools/libopenmpt/libopenmpt_version.mk
--- old/libopenmpt-0.8.2+release.autotools/libopenmpt/libopenmpt_version.mk     
2025-07-19 12:45:16.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/libopenmpt/libopenmpt_version.mk     
2025-09-06 15:42:06.000000000 +0200
@@ -1,8 +1,8 @@
 LIBOPENMPT_VERSION_MAJOR=0
 LIBOPENMPT_VERSION_MINOR=8
-LIBOPENMPT_VERSION_PATCH=2
+LIBOPENMPT_VERSION_PATCH=3
 LIBOPENMPT_VERSION_PREREL=
 
 LIBOPENMPT_LTVER_CURRENT=5
-LIBOPENMPT_LTVER_REVISION=2
+LIBOPENMPT_LTVER_REVISION=3
 LIBOPENMPT_LTVER_AGE=5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libopenmpt-0.8.2+release.autotools/man/openmpt123.1 
new/libopenmpt-0.8.3+release.autotools/man/openmpt123.1
--- old/libopenmpt-0.8.2+release.autotools/man/openmpt123.1     2025-07-19 
15:10:52.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/man/openmpt123.1     2025-09-06 
17:38:35.000000000 +0200
@@ -1,12 +1,12 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.49.3.
-.TH OPENMPT123 "1" "July 2025" "openmpt123 v0.8.2" "User Commands"
+.TH OPENMPT123 "1" "September 2025" "openmpt123 v0.8.3" "User Commands"
 .SH NAME
 openmpt123 - command line module music player based on libopenmpt
 .SH SYNOPSIS
 .B openmpt123
 [\fI\,options\/\fR] [\fI\,--\/\fR] \fI\,file1 \/\fR[\fI\,file2\/\fR] ...
 .SH DESCRIPTION
-openmpt123 v0.8.2, libopenmpt 0.8.2+r23826 (OpenMPT 1.32.03.00 
https://source.openmpt.org/svn/openmpt/tags/libopenmpt\-0.8.2@23826 
(2025\-07\-19T10:45:24.126020Z) clean)
+openmpt123 v0.8.3, libopenmpt 0.8.3+r24141 (OpenMPT 1.32.04.00 
https://source.openmpt.org/svn/openmpt/tags/libopenmpt\-0.8.3@24141 
(2025\-09\-06T13:42:08.986313Z) clean)
 Copyright \(co 2013\-2025 OpenMPT Project Developers and Contributors 
<https://lib.openmpt.org/>
 .PP
 openmpt123 plays module music files.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/openmpt123/openmpt123.cpp 
new/libopenmpt-0.8.3+release.autotools/openmpt123/openmpt123.cpp
--- old/libopenmpt-0.8.2+release.autotools/openmpt123/openmpt123.cpp    
2025-07-11 10:23:12.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/openmpt123/openmpt123.cpp    
2025-08-11 13:53:15.000000000 +0200
@@ -343,6 +343,9 @@
        void write( const std::vector<std::int16_t*> buffers, std::size_t 
frames ) override {
                impl->write( buffers, frames );
        }
+       bool pause() override {
+               return impl->pause();
+       }
        bool unpause() override {
                return impl->unpause();
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/SampleFormatMP3.cpp 
new/libopenmpt-0.8.3+release.autotools/soundlib/SampleFormatMP3.cpp
--- old/libopenmpt-0.8.2+release.autotools/soundlib/SampleFormatMP3.cpp 
2025-06-07 20:02:11.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/SampleFormatMP3.cpp 
2025-08-03 09:14:03.000000000 +0200
@@ -388,7 +388,7 @@
                        {
                                return false;
                        }
-                       if((channels != 1 && channels != 2) || (encoding & 
(MPG123_ENC_16 | MPG123_ENC_SIGNED)) != (MPG123_ENC_16 | MPG123_ENC_SIGNED))
+                       if((channels != 1) && (channels != 2))
                        {
                                return false;
                        }
@@ -485,7 +485,7 @@
                        {
                                return false;
                        }
-                       if((channels != 1 && channels != 2) || (encoding & 
(MPG123_ENC_16 | MPG123_ENC_SIGNED)) != (MPG123_ENC_16 | MPG123_ENC_SIGNED))
+                       if((channels != 1) && (channels != 2))
                        {
                                return false;
                        }
@@ -553,6 +553,88 @@
        {
                return false;
        }
+#if (MPG123_API_VERSION >= 45)
+       if(mpg123_param(mh, MPG123_REMOVE_FLAGS, MPG123_FLOAT_FALLBACK, 0.0)) 
// allow float
+       {
+               return false;
+       }
+#endif
+#if (MPG123_API_VERSION >= 45)
+       if(mpg123_format_none(mh))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_UNSIGNED_8))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_SIGNED_8))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_SIGNED_16))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_SIGNED_24))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_SIGNED_32))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_FLOAT_32))
+       {
+               return false;
+       }
+       if(mpg123_format2(mh, 0, MPG123_MONO | MPG123_STEREO, 
MPG123_ENC_FLOAT_64))
+       {
+               return false;
+       }
+#else
+       const long *rates = nullptr;
+       size_t num_rates = 0;
+       mpg123_rates(&rates, &num_rates);
+       if(rates && (num_rates > 0))
+       {
+               if(mpg123_format_none(mh))
+               {
+                       return false;
+               }
+               for(std::size_t i = 0; i < num_rates; ++i)
+               {
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_UNSIGNED_8))
+                       {
+                               return false;
+                       }
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_SIGNED_8))
+                       {
+                               return false;
+                       }
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_SIGNED_16))
+                       {
+                               return false;
+                       }
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_SIGNED_24))
+                       {
+                               return false;
+                       }
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_SIGNED_32))
+                       {
+                               return false;
+                       }
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_FLOAT_32))
+                       {
+                               return false;
+                       }
+                       if(mpg123_format(mh, rates[i], MPG123_MONO | 
MPG123_STEREO, MPG123_ENC_FLOAT_64))
+                       {
+                               return false;
+                       }
+               }
+       }
+#endif
 #if (MPG123_API_VERSION >= 48) && MPT_USE_MPG123_PORTABLE_API
        if(mpg123_reader64(mh, ComponentMPG123::FileReaderRead, 
ComponentMPG123::FileReaderSeek, 0))
        {
@@ -586,10 +668,41 @@
        {
                return false;
        }
-       if((channels != 1 && channels != 2) || (encoding & (MPG123_ENC_16 | 
MPG123_ENC_SIGNED)) != (MPG123_ENC_16 | MPG123_ENC_SIGNED))
+       int samplesize = mpg123_encsize(encoding);
+       if((channels != 1) && (channels != 2))
        {
                return false;
        }
+       if(encoding == 0)
+       {
+               MPT_ASSERT(false);
+               return false;
+       } else if(encoding == MPG123_ENC_UNSIGNED_8)
+       {
+               MPT_ASSERT(samplesize == sizeof(uint8));
+       } else if(encoding == MPG123_ENC_SIGNED_8)
+       {
+               MPT_ASSERT(samplesize == sizeof(int8));
+       } else if(encoding == MPG123_ENC_SIGNED_16)
+       {
+               MPT_ASSERT(samplesize == sizeof(int16));
+       } else if(encoding == MPG123_ENC_SIGNED_24)
+       {
+               MPT_ASSERT(samplesize == sizeof(int24));
+       } else if(encoding == MPG123_ENC_SIGNED_32)
+       {
+               MPT_ASSERT(samplesize == sizeof(int32));
+       } else if(encoding == MPG123_ENC_FLOAT_32)
+       {
+               MPT_ASSERT(samplesize == sizeof(somefloat32));
+       } else if(encoding == MPG123_ENC_FLOAT_64)
+       {
+               MPT_ASSERT(samplesize == sizeof(somefloat64));
+       } else
+       {
+               MPT_ASSERT(false);
+               return false;
+       }
        mpg123_frameinfo frameinfo;
        MemsetZero(frameinfo);
        if(mpg123_info(mh, &frameinfo))
@@ -635,30 +748,69 @@
        }
 
        std::vector<std::byte> buf_bytes;
+       std::vector<uint8> buf_samples_u8;
+       std::vector<int8> buf_samples_s8;
+       std::vector<int16> buf_samples_s16;
+       std::vector<int24> buf_samples_s24;
+       std::vector<int32> buf_samples_s32;
+       std::vector<somefloat32> buf_samples_f32;
+       std::vector<somefloat64> buf_samples_f64;
        std::vector<int16> buf_samples;
        bool decode_error = false;
        bool decode_done = false;
        while(!decode_error && !decode_done)
        {
                buf_bytes.resize(mpg123_outblock(mh));
-               buf_samples.resize(buf_bytes.size() / sizeof(int16));
 #if (MPG123_API_VERSION >= 48) && MPT_USE_MPG123_PORTABLE_API
                size_t buf_bytes_decoded = 0;
 #else
                mpg123_size_t buf_bytes_decoded = 0;
 #endif
                int mpg123_read_result = mpg123_read(mh, 
mpt::byte_cast<unsigned char*>(buf_bytes.data()), buf_bytes.size(), 
&buf_bytes_decoded);
-               std::memcpy(buf_samples.data(), buf_bytes.data(), 
buf_bytes_decoded);
-               mpt::append(data, buf_samples.data(), buf_samples.data() + 
buf_bytes_decoded / sizeof(int16));
-               if((data.size() / channels) > MAX_SAMPLE_LENGTH)
-               {
-                       break;
-               }
                if(mpg123_read_result == MPG123_OK)
                {
                        // continue
                } else if(mpg123_read_result == MPG123_NEW_FORMAT)
                {
+                       if(mpg123_getformat(mh, &rate, &channels, &encoding))
+                       {
+                               decode_error = true;
+                       }
+                       samplesize = mpg123_encsize(encoding);
+                       if((channels != 1) && (channels != 2))
+                       {
+                               decode_error = true;
+                       }
+                       if(encoding == 0)
+                       {
+                               MPT_ASSERT(false);
+                               decode_error = true;
+                       } else if(encoding == MPG123_ENC_UNSIGNED_8)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(uint8));
+                       } else if(encoding == MPG123_ENC_SIGNED_8)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(int8));
+                       } else if(encoding == MPG123_ENC_SIGNED_16)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(int16));
+                       } else if(encoding == MPG123_ENC_SIGNED_24)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(int24));
+                       } else if(encoding == MPG123_ENC_SIGNED_32)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(int32));
+                       } else if(encoding == MPG123_ENC_FLOAT_32)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(somefloat32));
+                       } else if(encoding == MPG123_ENC_FLOAT_64)
+                       {
+                               MPT_ASSERT(samplesize == sizeof(somefloat64));
+                       } else
+                       {
+                               MPT_ASSERT(false);
+                               decode_error = true;
+                       }
                        // continue
                } else if(mpg123_read_result == MPG123_DONE)
                {
@@ -667,6 +819,66 @@
                {
                        decode_error = true;
                }
+               if(decode_error)
+               {
+                       break;
+               }
+               const std::size_t num_frames = buf_bytes_decoded / (samplesize 
* channels);
+               buf_samples.resize(num_frames * channels);
+               if(encoding == 0)
+               {
+                       MPT_ASSERT(false);
+               } else if(encoding == MPG123_ENC_UNSIGNED_8)
+               {
+                       MPT_ASSERT(samplesize == sizeof(uint8));
+                       buf_samples_u8.resize(num_frames * channels);
+                       std::memcpy(buf_samples_u8.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<uint8>(buf_samples_u8.data(), 
channels, num_frames));
+               } else if(encoding == MPG123_ENC_SIGNED_8)
+               {
+                       MPT_ASSERT(samplesize == sizeof(int8));
+                       buf_samples_s8.resize(num_frames * channels);
+                       std::memcpy(buf_samples_s8.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<int8>(buf_samples_s8.data(), channels, 
num_frames));
+               } else if(encoding == MPG123_ENC_SIGNED_16)
+               {
+                       MPT_ASSERT(samplesize == sizeof(int16));
+                       buf_samples_s16.resize(num_frames * channels);
+                       std::memcpy(buf_samples_s16.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<int16>(buf_samples_s16.data(), 
channels, num_frames));
+               } else if(encoding == MPG123_ENC_SIGNED_24)
+               {
+                       MPT_ASSERT(samplesize == sizeof(int24));
+                       buf_samples_s24.resize(num_frames * channels);
+                       std::memcpy(buf_samples_s24.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<int24>(buf_samples_s24.data(), 
channels, num_frames));
+               } else if(encoding == MPG123_ENC_SIGNED_32)
+               {
+                       MPT_ASSERT(samplesize == sizeof(int32));
+                       buf_samples_s32.resize(num_frames * channels);
+                       std::memcpy(buf_samples_s32.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<int32>(buf_samples_s32.data(), 
channels, num_frames));
+               } else if(encoding == MPG123_ENC_FLOAT_32)
+               {
+                       MPT_ASSERT(samplesize == sizeof(somefloat32));
+                       buf_samples_f32.resize(num_frames * channels);
+                       std::memcpy(buf_samples_f32.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<somefloat32>(buf_samples_f32.data(), 
channels, num_frames));
+               } else if(encoding == MPG123_ENC_FLOAT_64)
+               {
+                       MPT_ASSERT(samplesize == sizeof(somefloat64));
+                       buf_samples_f64.resize(num_frames * channels);
+                       std::memcpy(buf_samples_f64.data(), buf_bytes.data(), 
num_frames * channels * samplesize);
+                       
CopyAudio(mpt::audio_span_interleaved<int16>(buf_samples.data(), channels, 
num_frames), mpt::audio_span_interleaved<somefloat64>(buf_samples_f64.data(), 
channels, num_frames));
+               } else
+               {
+                       MPT_ASSERT(false);
+               }
+               mpt::append(data, buf_samples.data(), buf_samples.data() + 
(num_frames * channels));
+               if((data.size() / channels) > MAX_SAMPLE_LENGTH)
+               {
+                       break;
+               }
        }
 
        if((data.size() / channels) > MAX_SAMPLE_LENGTH)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/Snd_defs.h 
new/libopenmpt-0.8.3+release.autotools/soundlib/Snd_defs.h
--- old/libopenmpt-0.8.2+release.autotools/soundlib/Snd_defs.h  2025-07-12 
23:07:46.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/Snd_defs.h  2025-08-31 
17:10:41.000000000 +0200
@@ -619,6 +619,7 @@
        kFT2OffsetMemoryRequiresNote,   // Offset memory is only updated when 
offset command is next to a note
        kITNoteCutWithPorta,            // Note Cut (SCx) resets note frequency 
and interacts with tone portamento with row delay
        kITVolColNoSlidePropagation,    // Don't propagate volume command c/d 
parameter to regular command D memory
+       kITStoppedFilterEnvAtStart,     // Stopped filter envelope is still 
applied even when its first tick has not been processed yet
 
        // Add new play behaviours here.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/Sndfile.cpp 
new/libopenmpt-0.8.3+release.autotools/soundlib/Sndfile.cpp
--- old/libopenmpt-0.8.2+release.autotools/soundlib/Sndfile.cpp 2025-07-12 
23:07:46.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/Sndfile.cpp 2025-08-31 
17:10:41.000000000 +0200
@@ -1229,6 +1229,7 @@
                playBehaviour.set(kITCarryAfterNoteOff);
                playBehaviour.set(kITNoteCutWithPorta);
                playBehaviour.set(kITVolColNoSlidePropagation);
+               playBehaviour.set(kITStoppedFilterEnvAtStart);
                break;
 
        case MOD_TYPE_XM:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/Sndmix.cpp 
new/libopenmpt-0.8.3+release.autotools/soundlib/Sndmix.cpp
--- old/libopenmpt-0.8.2+release.autotools/soundlib/Sndmix.cpp  2025-01-19 
23:08:35.000000000 +0100
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/Sndmix.cpp  2025-09-01 
20:04:53.000000000 +0200
@@ -1176,7 +1176,12 @@
                if(m_playBehaviour[kITEnvelopePositionHandling] && 
chn.PitchEnv.nEnvPosition == 0)
                {
                        // If the envelope is disabled at the very same moment 
as it is triggered, we do not process anything.
-                       return -1;
+                       // However, Impulse Tracker still applies the filter 
settings as if the envelope was at its midway.
+                       // Test case: S7B_StillAppliesFilter.it
+                       if(m_playBehaviour[kITStoppedFilterEnvAtStart] && 
chn.PitchEnv.flags[ENV_FILTER])
+                               return SetupChannelFilter(chn, 
!chn.dwFlags[CHN_FILTER], 0);
+                       else
+                               return -1;
                }
 
                const int envpos = chn.PitchEnv.nEnvPosition - 
(m_playBehaviour[kITEnvelopePositionHandling] ? 1 : 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/UpgradeModule.cpp 
new/libopenmpt-0.8.3+release.autotools/soundlib/UpgradeModule.cpp
--- old/libopenmpt-0.8.2+release.autotools/soundlib/UpgradeModule.cpp   
2025-07-12 23:07:46.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/UpgradeModule.cpp   
2025-08-31 17:10:41.000000000 +0200
@@ -605,6 +605,7 @@
                        { kITCarryAfterNoteOff,           MPT_V("1.32.00.40") },
                        { kITNoteCutWithPorta,            MPT_V("1.32.01.02") },
                        { kITVolColNoSlidePropagation,    MPT_V("1.32.02.03") },
+                       { kITStoppedFilterEnvAtStart,     MPT_V("1.32.03.04") },
                };
 
                for(const auto &b : behaviours)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/pattern.cpp 
new/libopenmpt-0.8.3+release.autotools/soundlib/pattern.cpp
--- old/libopenmpt-0.8.2+release.autotools/soundlib/pattern.cpp 2025-05-04 
20:45:19.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/pattern.cpp 2025-08-29 
22:31:11.000000000 +0200
@@ -655,6 +655,8 @@
                        mpt::IO::ReadIntLE<uint8>(iStrm, size);
                        iStrm.ignore(size);
                }
+               if(!m.IsPcNote())
+                       m.Clear();
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/soundlib/plugins/PluginManager.cpp 
new/libopenmpt-0.8.3+release.autotools/soundlib/plugins/PluginManager.cpp
--- old/libopenmpt-0.8.2+release.autotools/soundlib/plugins/PluginManager.cpp   
2025-03-10 11:58:03.000000000 +0100
+++ new/libopenmpt-0.8.3+release.autotools/soundlib/plugins/PluginManager.cpp   
2025-07-20 18:31:16.000000000 +0200
@@ -397,7 +397,7 @@
                                                DWORD datatype = REG_SZ;
                                                DWORD datasize = sizeof(name);
 
-                                               if(ERROR_SUCCESS == 
RegQueryValueEx(hksub, nullptr, 0, &datatype, (LPBYTE)name, &datasize))
+                                               if(ERROR_SUCCESS == 
RegQueryValueEx(hksub, nullptr, 0, &datatype, reinterpret_cast<LPBYTE>(name), 
&datasize))
                                                {
                                                        auto &plug = 
pluginList.emplace_back(std::make_unique<VSTPluginLib>(DMOPlugin::Create, true, 
mpt::PathString::FromNative(mpt::GUIDToString(clsid)), 
mpt::PathString::FromNative(ParseMaybeNullTerminatedStringFromBufferWithSizeInBytes<mpt::winstring>(name,
 datasize))));
                                                        plug->pluginId1 = 
kDmoMagic;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/src/mpt/base/detect_os.hpp 
new/libopenmpt-0.8.3+release.autotools/src/mpt/base/detect_os.hpp
--- old/libopenmpt-0.8.2+release.autotools/src/mpt/base/detect_os.hpp   
2025-01-03 16:57:34.000000000 +0100
+++ new/libopenmpt-0.8.3+release.autotools/src/mpt/base/detect_os.hpp   
2025-08-14 15:32:54.000000000 +0200
@@ -41,25 +41,48 @@
 #define MPT_WIN_8        MPT_WIN_MAKE_VERSION(0x06, 0x02, 0x00, 0x00)
 #define MPT_WIN_81       MPT_WIN_MAKE_VERSION(0x06, 0x03, 0x00, 0x00)
 
-#define MPT_WIN_10_PRE   MPT_WIN_MAKE_VERSION(0x06, 0x04, 0x00, 0x00)
-#define MPT_WIN_10       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x00) // 
NTDDI_WIN10      1507
-#define MPT_WIN_10_1511  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x01) // 
NTDDI_WIN10_TH2  1511
-#define MPT_WIN_10_1607  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x02) // 
NTDDI_WIN10_RS1  1607
-#define MPT_WIN_10_1703  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x03) // 
NTDDI_WIN10_RS2  1703
-#define MPT_WIN_10_1709  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x04) // 
NTDDI_WIN10_RS3  1709
-#define MPT_WIN_10_1803  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x05) // 
NTDDI_WIN10_RS4  1803
-#define MPT_WIN_10_1809  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x06) // 
NTDDI_WIN10_RS5  1809
-#define MPT_WIN_10_1903  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x07) // 
NTDDI_WIN10_19H1 1903/19H1
-#define MPT_WIN_10_1909  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x08) // 
NTDDI_WIN10_VB   1909/19H2
-#define MPT_WIN_10_2004  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x09) // 
NTDDI_WIN10_MN   2004/20H1
-#define MPT_WIN_10_20H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0a) // 
NTDDI_WIN10_FE   20H2
-#define MPT_WIN_10_21H1  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0b) // 
NTDDI_WIN10_CO   21H1
-#define MPT_WIN_10_21H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) // 
NTDDI_WIN10_NI   21H2
-#define MPT_WIN_10_22H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0d) // 
NTDDI_WIN10_CU   22H2
-
-#define MPT_WIN_11       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0e) // 
NTDDI_WIN11_ZN   21H2
-#define MPT_WIN_11_22H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0f) // 
NTDDI_WIN11_GA   22H2
-#define MPT_WIN_11_23H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x10) // 
NTDDI_WIN11_GE   23H2
+// Now, this is some very elaborate serious clusterfuck with basically no 
documentation.
+
+// 
https://blog.yuo.be/2025/02/12/what-do-all-the-recent-ntddi-version-values-mean/
+// 
https://learn.microsoft.com/en-gb/windows/win32/winprog/using-the-windows-headers#macros-for-conditional-declarations
+// https://en.wikipedia.org/wiki/Windows_10_version_history
+// https://en.wikipedia.org/wiki/Windows_11_version_history
+// 
https://www.windowslatest.com/2021/09/03/windows-11-build-22449-is-now-available-with-new-loading-animation/
+
+//      Release          NTDDI-version                                   
NTDDI-constant  Release     Build.Sub  Codename      Semester     Semester 
Semester Marketing-Name    min-SDK-Version WDK_NTDDI_VERSION
+//                                                                             
               .Version                                     Codename  Date
+
+#define MPT_WIN_10_PRE   MPT_WIN_MAKE_VERSION(0x06, 0x04, 0x00, 0x00) //       
                                                                              
Threshold            -            -
+#define MPT_WIN_10       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x00) // 
NTDDI_WIN10      Win10.1507 10240      Threshold                            
1507    -                    10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1511  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x01) // 
NTDDI_WIN10_TH2  Win10.1511 10586      Threshold 2                          
1511    November Update      10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1607  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x02) // 
NTDDI_WIN10_RS1  Win10.1607 14393      Redstone                             
1607    Anniversary Update   10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1703  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x03) // 
NTDDI_WIN10_RS2  Win10.1703 15063      Redstone 2                           
1703    Creators Update      10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1709  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x04) // 
NTDDI_WIN10_RS3  Win10.1709 16299      Redstone 3                           
1709    Fall Creators Update 10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1803  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x05) // 
NTDDI_WIN10_RS4  Win10.1803 17134      Redstone 4                           
1803    April 2018 Update    10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1809  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x06) // 
NTDDI_WIN10_RS5  Win10.1809 17763      Redstone 5                           
1809    October 2018 Update  10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_1903  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x07) // 
NTDDI_WIN10_19H1 Win10.1903 18362      Titanium R1                Titanium  
19H1    May 2019 Update      10.0.19041.0 NTDDI_WIN10_VB
+//      MPT_WIN_10_1909  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x07) //       
           Win10.1909 18363      Titanium R2                Vanadium  19H2    
November 2019 Update 10.0.19041.0 NTDDI_WIN10_VB
+#define MPT_WIN_10_2004  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x08) // 
NTDDI_WIN10_VB   Win10.2004 19041      Vibranium R1               Vibranium 
20H1    May 2020 Update      10.0.19041.0 NTDDI_WIN10_VB
+//      MPT_WIN_10_20H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x08) //       
           Win10.20H2 19042      Vibranium R2               Manganese 20H2    
October 2020 Update  10.0.19041.0 NTDDI_WIN10_VB
+//      MPT_WIN_10_21H1  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x08) //       
           Win10.21H1 19043      Vibranium R3               Iron      21H1    
May 2021 Update      10.0.19041.0 NTDDI_WIN10_VB
+//      MPT_WIN_10_21H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x08) //       
           Win10.21H2 19044      Vibranium R4               Cobalt    21H2    
November 2021 Update 10.0.19041.0 NTDDI_WIN10_VB
+//      MPT_WIN_10_22H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x08) //       
           Win10.22H2 19045      Vibranium R5               Nickel    22H2    
2022 Update          10.0.19041.0 NTDDI_WIN10_VB
+
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x09) // 
NTDDI_WIN10_MN         20H2                                       Manganese 
20H2                         10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0a) // 
NTDDI_WIN10_FE         21H1                                       Iron      
21H1                         10.0.22621.? NTDDI_WIN10_NI
+#define MPT_WIN_11       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0b) // 
NTDDI_WIN10_CO   Win11.21H2 22000      Sun Valley    Cobalt       Cobalt    
21H2    -                    10.0.22621.? NTDDI_WIN10_NI
+#define MPT_WIN_11_22H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) // 
NTDDI_WIN10_NI   Win11.22H2 22621      Sun Valley 2  Nickel R1    Nickel    
22H2    2022 Update          10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.22H2 22621.675  Sun Valley 2  Nickel R1    Nickel    22H2    
2022 Update Moment 1 10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.22H2 22621.1344 Sun Valley 2  Nickel R1    Nickel    22H2    
2022 Update Moment 2 10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.22H2 22621.1778 Sun Valley 2  Nickel R1    Nickel    22H2    
2022 Update Moment 3 10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.22H2 22621.2361 Sun Valley 2  Nickel R1    Nickel    22H2    
2022 Update Moment 4 10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.22H2 22621.3235 Sun Valley 2  Nickel R1    Nickel    22H2    
2022 Update Moment 5 10.0.22621.? NTDDI_WIN10_NI
+//      MPT_WIN_11_23H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.23H2 22631      Sun Valley 3  Nickel R2    Zinc      23H2    
2023 Update          10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0c) //       
           Win11.23H2 22631.3235 Sun Valley 3  Nickel R2    Zinc      23H2    
2023 Update Moment 5 10.0.22621.? NTDDI_WIN10_NI
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0d) // 
NTDDI_WIN10_CU         23H1                                       Copper    
23H1                         10.0.26100.? NTDDI_WIN11_GE
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0e) // 
NTDDI_WIN11_ZN         23H2                                       Zinc      
23H2                         10.0.26100.? NTDDI_WIN11_GE
+//                       MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x0f) // 
NTDDI_WIN11_GA         24H1                                       Gallium   
24H1                         10.0.26100.? NTDDI_WIN11_GE
+#define MPT_WIN_11_24H2  MPT_WIN_MAKE_VERSION(0x0a, 0x00, 0x00, 0x10) // 
NTDDI_WIN11_GE   Win11.24H2 26100      Hudson Valley Germanium R1 Germanium 
24H2    2024 Update          10.0.26100.? NTDDI_WIN11_GE
 
 // MPT_WIN_API_DESKTOP     : Windows 8/10 Desktop Application (Win32)
 // MPT_WIN_API_UNIVERSAL   : Windows 10 Store App / Universal App
@@ -225,32 +248,50 @@
 #ifdef NTDDI_WIN10_19H1
 static_assert(NTDDI_WIN10_19H1 == MPT_WIN_10_1903);
 #endif
+//#ifdef NTDDI_WIN10_19H1
+//static_assert(NTDDI_WIN10_19H1 == MPT_WIN_10_1909);
+//#endif
 #ifdef NTDDI_WIN10_VB
-static_assert(NTDDI_WIN10_VB == MPT_WIN_10_1909);
-#endif
-#ifdef NTDDI_WIN10_MN
-static_assert(NTDDI_WIN10_MN == MPT_WIN_10_2004);
-#endif
-#ifdef NTDDI_WIN10_FE
-static_assert(NTDDI_WIN10_FE == MPT_WIN_10_20H2);
+static_assert(NTDDI_WIN10_VB == MPT_WIN_10_2004);
 #endif
+//#ifdef NTDDI_WIN10_VB
+//static_assert(NTDDI_WIN10_VB == MPT_WIN_10_20H2);
+//#endif
+//#ifdef NTDDI_WIN10_VB
+//static_assert(NTDDI_WIN10_VB == MPT_WIN_10_21H1);
+//#endif
+//#ifdef NTDDI_WIN10_VB
+//static_assert(NTDDI_WIN10_VB == MPT_WIN_10_21H2);
+//#endif
+//#ifdef NTDDI_WIN10_VB
+//static_assert(NTDDI_WIN10_VB == MPT_WIN_10_22H2);
+//#endif
+//#ifdef NTDDI_WIN10_MN
+//static_assert(NTDDI_WIN10_MN == ???);
+//#endif
+//#ifdef NTDDI_WIN10_FE
+//static_assert(NTDDI_WIN10_FE == ???);
+//#endif
 #ifdef NTDDI_WIN10_CO
-static_assert(NTDDI_WIN10_CO == MPT_WIN_10_21H1);
+static_assert(NTDDI_WIN10_CO == MPT_WIN_11);
 #endif
 #ifdef NTDDI_WIN10_NI
-static_assert(NTDDI_WIN10_NI == MPT_WIN_10_21H2);
-#endif
-#ifdef NTDDI_WIN10_CU
-static_assert(NTDDI_WIN10_CU == MPT_WIN_10_22H2);
-#endif
-#ifdef NTDDI_WIN11_ZN
-static_assert(NTDDI_WIN11_ZN == MPT_WIN_11);
-#endif
-#ifdef NTDDI_WIN11_GA
-static_assert(NTDDI_WIN11_GA == MPT_WIN_11_22H2);
+static_assert(NTDDI_WIN10_NI == MPT_WIN_11_22H2);
 #endif
+//#ifdef NTDDI_WIN10_NI
+//static_assert(NTDDI_WIN10_NI == MPT_WIN_11_23H2);
+//#endif
+//#ifdef NTDDI_WIN10_CU
+//static_assert(NTDDI_WIN10_CU == ???);
+//#endif
+//#ifdef NTDDI_WIN10_ZN
+//static_assert(NTDDI_WIN10_ZN == ???);
+//#endif
+//#ifdef NTDDI_WIN11_GA
+//static_assert(NTDDI_WIN11_GA == ???);
+//#endif
 #ifdef NTDDI_WIN11_GE
-static_assert(NTDDI_WIN11_GE == MPT_WIN_11_23H2);
+static_assert(NTDDI_WIN11_GE == MPT_WIN_11_24H2);
 #endif
 #endif
 #if defined(WINAPI_FAMILY)
@@ -321,6 +362,9 @@
 #define MPT_WIN_AT_LEAST(v) 0
 #define MPT_WIN_BEFORE(v)   1
 #endif
+#if (MPT_OS_WINDOWS_WINNT || MPT_OS_WINDOWS_WINRT) && 
defined(WDK_NTDDI_VERSION)
+static_assert(WDK_NTDDI_VERSION >= MPT_WIN_VERSION);
+#endif
 
 
 #elif defined(__APPLE__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libopenmpt-0.8.2+release.autotools/src/mpt/osinfo/windows_version.hpp 
new/libopenmpt-0.8.3+release.autotools/src/mpt/osinfo/windows_version.hpp
--- old/libopenmpt-0.8.2+release.autotools/src/mpt/osinfo/windows_version.hpp   
2024-08-15 20:45:56.000000000 +0200
+++ new/libopenmpt-0.8.3+release.autotools/src/mpt/osinfo/windows_version.hpp   
2025-08-14 15:32:23.000000000 +0200
@@ -131,24 +131,26 @@
 
        static mpt::osinfo::windows::Version FromSDK() noexcept {
                // Initialize to used SDK version
-#if MPT_WINNT_AT_LEAST(MPT_WIN_11_23H2)
-               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 22631, 0);
+#if MPT_WINNT_AT_LEAST(MPT_WIN_11_24H2)
+               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 26100, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_11_23H2)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 22631, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_11_22H2)
                return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 22621, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_11) // 21H2
                return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 22000, 0);
-#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_22H2)
-               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19045, 0);
-#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_21H2)
-               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19044, 0);
-#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_21H1)
-               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19043, 0);
-#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_20H2)
-               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19042, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_22H2)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19045, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_21H2)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19044, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_21H1)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19043, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_20H2)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19042, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_10_2004)
                return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 19041, 0);
-#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_1909)
-               return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 18363, 0);
+//#elif MPT_WINNT_AT_LEAST(MPT_WIN_10_1909)
+//             return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 18363, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_10_1903)
                return 
mpt::osinfo::windows::Version(mpt::osinfo::windows::Version::Win10, 
mpt::osinfo::windows::Version::ServicePack(0, 0), 18362, 0);
 #elif MPT_WINNT_AT_LEAST(MPT_WIN_10_1809)

Reply via email to