You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(213) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-10-26 09:41:45
|
Author: manx Date: Sat Oct 26 11:41:33 2024 New Revision: 21918 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21918 Log: [Doc] libopenmpt: Update changelog. Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Modified: branches/OpenMPT-1.31/doc/libopenmpt/changelog.md ============================================================================== --- branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sat Oct 26 11:38:52 2024 (r21917) +++ branches/OpenMPT-1.31/doc/libopenmpt/changelog.md Sat Oct 26 11:41:33 2024 (r21918) @@ -7,6 +7,10 @@ ### libopenmpt 0.7.11-pre + * [**Bug**] The Autotools build system did use `CPPFLAGS`, `CFLAGS`, and + `CPPFLAGS` directly. This caused build settings to get lost when the user + overwrote these flags. + ### libopenmpt 0.7.10 (2024-09-22) * [**Change**] FST was added to the list of supported file extension. AMP uses |
From: <sv...@op...> - 2024-10-26 09:38:59
|
Author: manx Date: Sat Oct 26 11:38:52 2024 New Revision: 21917 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21917 Log: Merged revision(s) 21916 from trunk/OpenMPT: [Fix] build: Autotools: Do not clobber user CFLAGS. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/build/autotools/Makefile.am branches/OpenMPT-1.31/build/autotools/configure.ac Modified: branches/OpenMPT-1.31/build/autotools/Makefile.am ============================================================================== --- branches/OpenMPT-1.31/build/autotools/Makefile.am Sat Oct 26 10:36:42 2024 (r21916) +++ branches/OpenMPT-1.31/build/autotools/Makefile.am Sat Oct 26 11:38:52 2024 (r21917) @@ -89,16 +89,16 @@ libopenmpt_example_cxx_CPPFLAGS = $(WIN32_CPPFLAGS) $(PORTAUDIOCPP_CFLAGS) endif -libopenmpt_example_c_pipe_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_probe_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_stdout_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_pipe_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_probe_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_stdout_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) if HAVE_PORTAUDIO -libopenmpt_example_c_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_mem_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_unsafe_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_mem_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_unsafe_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) endif if HAVE_PORTAUDIOCPP -libopenmpt_example_cxx_CXXFLAGS = $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) +libopenmpt_example_cxx_CXXFLAGS = $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) endif libopenmpt_example_c_pipe_LDADD = $(lib_LTLIBRARIES) @@ -561,11 +561,11 @@ includelibopenmpt_HEADERS += libopenmpt/libopenmpt_ext.h includelibopenmpt_HEADERS += libopenmpt/libopenmpt_ext.hpp libopenmpt_la_CPPFLAGS = -libopenmpt_la_CPPFLAGS += $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CPPFLAGS += $(GLOBAL_CPPFLAGS) $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_CXXFLAGS = -libopenmpt_la_CXXFLAGS += $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CXXFLAGS += $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_CFLAGS = -libopenmpt_la_CFLAGS += $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CFLAGS += $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_LIBADD = libopenmpt_la_LIBADD += $(ZLIB_LIBS) $(MPG123_LIBS) $(OGG_LIBS) $(VORBIS_LIBS) $(VORBISFILE_LIBS) $(LIBOPENMPT_WIN32_LIBS) libopenmpt_la_SOURCES = @@ -600,11 +600,11 @@ if ENABLE_TESTS check_PROGRAMS += libopenmpttest libopenmpttest_CPPFLAGS = -libopenmpttest_CPPFLAGS += $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -DLIBOPENMPT_BUILD_TEST -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpttest_CPPFLAGS += $(GLOBAL_CPPFLAGS) $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -DLIBOPENMPT_BUILD_TEST -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpttest_CXXFLAGS = -libopenmpttest_CXXFLAGS += $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CXXFLAGS) +libopenmpttest_CXXFLAGS += $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CXXFLAGS) libopenmpttest_CFLAGS = -libopenmpttest_CFLAGS += $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpttest_CFLAGS += $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CFLAGS) libopenmpttest_LDADD = libopenmpttest_LDADD += $(ZLIB_LIBS) $(MPG123_LIBS) $(OGG_LIBS) $(VORBIS_LIBS) $(VORBISFILE_LIBS) $(LIBOPENMPT_WIN32_LIBS) $(LIBOPENMPTTEST_WIN32_LIBS) libopenmpttest_SOURCES = @@ -661,9 +661,9 @@ bin_PROGRAMS += bin/openmpt123 bin_openmpt123_CPPFLAGS = -bin_openmpt123_CPPFLAGS += $(WIN32_CPPFLAGS) -I$(srcdir)/src $(PORTAUDIO_CFLAGS) $(PULSEAUDIO_CFLAGS) $(SDL2_CFLAGS) $(SNDFILE_CFLAGS) $(FLAC_CFLAGS) +bin_openmpt123_CPPFLAGS += $(GLOBAL_CPPFLAGS) $(WIN32_CPPFLAGS) -I$(srcdir)/src $(PORTAUDIO_CFLAGS) $(PULSEAUDIO_CFLAGS) $(SDL2_CFLAGS) $(SNDFILE_CFLAGS) $(FLAC_CFLAGS) bin_openmpt123_CXXFLAGS = -bin_openmpt123_CXXFLAGS += $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) +bin_openmpt123_CXXFLAGS += $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) bin_openmpt123_LDADD = libopenmpt.la $(PORTAUDIO_LIBS) $(PULSEAUDIO_LIBS) $(SDL2_LIBS) $(SNDFILE_LIBS) $(FLAC_LIBS) $(OPENMPT123_WIN32_LIBS) bin_openmpt123_SOURCES = bin_openmpt123_SOURCES += $(MPT_FILES_SRC_MPT) Modified: branches/OpenMPT-1.31/build/autotools/configure.ac ============================================================================== --- branches/OpenMPT-1.31/build/autotools/configure.ac Sat Oct 26 10:36:42 2024 (r21916) +++ branches/OpenMPT-1.31/build/autotools/configure.ac Sat Oct 26 11:38:52 2024 (r21917) @@ -31,13 +31,17 @@ ],[] ) +GLOBAL_CPPFLAGS= +GLOBAL_CFLAGS= +GLOBAL_CXXFLAGS= + AC_LANG_PUSH([C]) -AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CFLAGS="$CFLAGS -fvisibility=hidden"]) +AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [GLOBAL_CFLAGS="$GLOBAL_CFLAGS -fvisibility=hidden"]) AX_CFLAGS_WARN_ALL AC_LANG_POP([C]) AC_LANG_PUSH([C++]) -AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CXXFLAGS="$CXXFLAGS -fvisibility=hidden"]) +AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [GLOBAL_CXXFLAGS="$GLOBAL_CXXFLAGS -fvisibility=hidden"]) AX_CXXFLAGS_WARN_ALL AC_LANG_POP([C++]) @@ -46,8 +50,8 @@ AX_PTHREAD([ LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" + GLOBAL_CFLAGS="$GLOBAL_CFLAGS $PTHREAD_CFLAGS" + GLOBAL_CXXFLAGS="$GLOBAL_CXXFLAGS $PTHREAD_CFLAGS" #CC="$PTHREAD_CC" #CXX="$PTHREAD_CXX" ], @@ -58,15 +62,20 @@ # This is somewhat pessimistic, but necessary for GCC 8 or earlier, # which we still support and where we cannot use #pragma GCC optimize. AC_LANG_PUSH([C]) -AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [CFLAGS="$CFLAGS -fno-ipa-ra"]) +AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [GLOBAL_CFLAGS="$GLOBAL_CFLAGS -fno-ipa-ra"]) AX_CFLAGS_WARN_ALL AC_LANG_POP([C]) AC_LANG_PUSH([C++]) -AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [CXXFLAGS="$CXXFLAGS -fno-ipa-ra"]) +AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [GLOBAL_CXXFLAGS="$GLOBAL_CXXFLAGS -fno-ipa-ra"]) AX_CXXFLAGS_WARN_ALL AC_LANG_POP([C++]) +AC_SUBST([GLOBAL_CPPFLAGS]) +AC_SUBST([GLOBAL_CFLAGS]) +AC_SUBST([GLOBAL_CXXFLAGS]) + + LIBOPENMPT_LTVER_CURRENT=!!MPT_LIBOPENMPT_LTVER_CURRENT!! LIBOPENMPT_LTVER_REVISION=!!MPT_LIBOPENMPT_LTVER_REVISION!! LIBOPENMPT_LTVER_AGE=!!MPT_LIBOPENMPT_LTVER_AGE!! |
From: <sv...@op...> - 2024-10-26 08:36:54
|
Author: manx Date: Sat Oct 26 10:36:42 2024 New Revision: 21916 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21916 Log: [Fix] build: Autotools: Do not clobber user CFLAGS. Modified: trunk/OpenMPT/build/autotools/Makefile.am trunk/OpenMPT/build/autotools/configure.ac Modified: trunk/OpenMPT/build/autotools/Makefile.am ============================================================================== --- trunk/OpenMPT/build/autotools/Makefile.am Sat Oct 26 10:04:18 2024 (r21915) +++ trunk/OpenMPT/build/autotools/Makefile.am Sat Oct 26 10:36:42 2024 (r21916) @@ -89,16 +89,16 @@ libopenmpt_example_cxx_CPPFLAGS = $(WIN32_CPPFLAGS) $(PORTAUDIOCPP_CFLAGS) endif -libopenmpt_example_c_pipe_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_probe_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_stdout_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_pipe_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_probe_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_stdout_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) if HAVE_PORTAUDIO -libopenmpt_example_c_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_mem_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) -libopenmpt_example_c_unsafe_CFLAGS = $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_mem_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpt_example_c_unsafe_CFLAGS = $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(WIN32_CONSOLE_CFLAGS) endif if HAVE_PORTAUDIOCPP -libopenmpt_example_cxx_CXXFLAGS = $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) +libopenmpt_example_cxx_CXXFLAGS = $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) endif libopenmpt_example_c_pipe_LDADD = $(lib_LTLIBRARIES) @@ -594,11 +594,11 @@ includelibopenmpt_HEADERS += libopenmpt/libopenmpt_ext.h includelibopenmpt_HEADERS += libopenmpt/libopenmpt_ext.hpp libopenmpt_la_CPPFLAGS = -libopenmpt_la_CPPFLAGS += $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CPPFLAGS += $(GLOBAL_CPPFLAGS) $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_CXXFLAGS = -libopenmpt_la_CXXFLAGS += $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CXXFLAGS += $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_CFLAGS = -libopenmpt_la_CFLAGS += $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpt_la_CFLAGS += $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpt_la_LIBADD = libopenmpt_la_LIBADD += $(ZLIB_LIBS) $(MPG123_LIBS) $(OGG_LIBS) $(VORBIS_LIBS) $(VORBISFILE_LIBS) $(LIBOPENMPT_WIN32_LIBS) libopenmpt_la_SOURCES = @@ -633,11 +633,11 @@ if ENABLE_TESTS check_PROGRAMS += libopenmpttest libopenmpttest_CPPFLAGS = -libopenmpttest_CPPFLAGS += $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -DLIBOPENMPT_BUILD_TEST -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) +libopenmpttest_CPPFLAGS += $(GLOBAL_CPPFLAGS) $(WIN32_CPPFLAGS) -DLIBOPENMPT_BUILD -DLIBOPENMPT_BUILD_TEST -I$(srcdir)/ -I$(srcdir)/src -I$(srcdir)/common $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) libopenmpttest_CXXFLAGS = -libopenmpttest_CXXFLAGS += $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CXXFLAGS) +libopenmpttest_CXXFLAGS += $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CXXFLAGS) libopenmpttest_CFLAGS = -libopenmpttest_CFLAGS += $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CFLAGS) +libopenmpttest_CFLAGS += $(GLOBAL_CFLAGS) $(WIN32_CFLAGS) $(ZLIB_CFLAGS) $(MPG123_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS) $(VORBISFILE_CFLAGS) $(WIN32_CONSOLE_CFLAGS) libopenmpttest_LDADD = libopenmpttest_LDADD += $(ZLIB_LIBS) $(MPG123_LIBS) $(OGG_LIBS) $(VORBIS_LIBS) $(VORBISFILE_LIBS) $(LIBOPENMPT_WIN32_LIBS) $(LIBOPENMPTTEST_WIN32_LIBS) libopenmpttest_SOURCES = @@ -695,9 +695,9 @@ bin_PROGRAMS += bin/openmpt123 bin_openmpt123_CPPFLAGS = -bin_openmpt123_CPPFLAGS += $(WIN32_CPPFLAGS) -I$(srcdir)/src $(PORTAUDIO_CFLAGS) $(PULSEAUDIO_CFLAGS) $(SDL2_CFLAGS) $(SNDFILE_CFLAGS) $(FLAC_CFLAGS) +bin_openmpt123_CPPFLAGS += $(GLOBAL_CPPFLAGS) $(WIN32_CPPFLAGS) -I$(srcdir)/src $(PORTAUDIO_CFLAGS) $(PULSEAUDIO_CFLAGS) $(SDL2_CFLAGS) $(SNDFILE_CFLAGS) $(FLAC_CFLAGS) bin_openmpt123_CXXFLAGS = -bin_openmpt123_CXXFLAGS += $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) +bin_openmpt123_CXXFLAGS += $(GLOBAL_CXXFLAGS) $(WIN32_CXXFLAGS) $(WIN32_CONSOLE_CXXFLAGS) bin_openmpt123_LDADD = libopenmpt.la $(PORTAUDIO_LIBS) $(PULSEAUDIO_LIBS) $(SDL2_LIBS) $(SNDFILE_LIBS) $(FLAC_LIBS) $(OPENMPT123_WIN32_LIBS) bin_openmpt123_SOURCES = bin_openmpt123_SOURCES += $(MPT_FILES_SRC_MPT) Modified: trunk/OpenMPT/build/autotools/configure.ac ============================================================================== --- trunk/OpenMPT/build/autotools/configure.ac Sat Oct 26 10:04:18 2024 (r21915) +++ trunk/OpenMPT/build/autotools/configure.ac Sat Oct 26 10:36:42 2024 (r21916) @@ -36,13 +36,17 @@ ],[] ) +GLOBAL_CPPFLAGS= +GLOBAL_CFLAGS= +GLOBAL_CXXFLAGS= + AC_LANG_PUSH([C]) -AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CFLAGS="$CFLAGS -fvisibility=hidden"]) +AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [GLOBAL_CFLAGS="$GLOBAL_CFLAGS -fvisibility=hidden"]) AX_CFLAGS_WARN_ALL AC_LANG_POP([C]) AC_LANG_PUSH([C++]) -AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CXXFLAGS="$CXXFLAGS -fvisibility=hidden"]) +AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [GLOBAL_CXXFLAGS="$GLOBAL_CXXFLAGS -fvisibility=hidden"]) AX_CXXFLAGS_WARN_ALL AC_LANG_POP([C++]) @@ -51,8 +55,8 @@ AX_PTHREAD([ LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" + GLOBAL_CFLAGS="$GLOBAL_CFLAGS $PTHREAD_CFLAGS" + GLOBAL_CXXFLAGS="$GLOBAL_CXXFLAGS $PTHREAD_CFLAGS" #CC="$PTHREAD_CC" #CXX="$PTHREAD_CXX" ], @@ -63,15 +67,20 @@ # This is somewhat pessimistic, but necessary for GCC 8 or earlier, # which we still support and where we cannot use #pragma GCC optimize. AC_LANG_PUSH([C]) -AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [CFLAGS="$CFLAGS -fno-ipa-ra"]) +AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [GLOBAL_CFLAGS="$GLOBAL_CFLAGS -fno-ipa-ra"]) AX_CFLAGS_WARN_ALL AC_LANG_POP([C]) AC_LANG_PUSH([C++]) -AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [CXXFLAGS="$CXXFLAGS -fno-ipa-ra"]) +AX_CHECK_COMPILE_FLAG([-fno-ipa-ra], [GLOBAL_CXXFLAGS="$GLOBAL_CXXFLAGS -fno-ipa-ra"]) AX_CXXFLAGS_WARN_ALL AC_LANG_POP([C++]) +AC_SUBST([GLOBAL_CPPFLAGS]) +AC_SUBST([GLOBAL_CFLAGS]) +AC_SUBST([GLOBAL_CXXFLAGS]) + + LIBOPENMPT_LTVER_CURRENT=!!MPT_LIBOPENMPT_LTVER_CURRENT!! LIBOPENMPT_LTVER_REVISION=!!MPT_LIBOPENMPT_LTVER_REVISION!! LIBOPENMPT_LTVER_AGE=!!MPT_LIBOPENMPT_LTVER_AGE!! |
From: <sv...@op...> - 2024-10-26 08:04:31
|
Author: manx Date: Sat Oct 26 10:04:18 2024 New Revision: 21915 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21915 Log: [Fix] build: Autotools: Fix copy-paste error in r21843 which caused always C++17 mode if the compiler supported C++20. Modified: trunk/OpenMPT/build/autotools/configure.ac Modified: trunk/OpenMPT/build/autotools/configure.ac ============================================================================== --- trunk/OpenMPT/build/autotools/configure.ac Thu Oct 24 14:43:05 2024 (r21914) +++ trunk/OpenMPT/build/autotools/configure.ac Sat Oct 26 10:04:18 2024 (r21915) @@ -33,7 +33,6 @@ AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) ],[] ) - AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) ],[] ) |
From: <sv...@op...> - 2024-10-24 12:43:19
|
Author: manx Date: Thu Oct 24 14:43:05 2024 New Revision: 21914 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21914 Log: [Var] mpg123: Update to 1.32.8-dev+r5433 (2024-10-24). Added: trunk/OpenMPT/include/mpg123/src/libmpg123/aarch64_defs.h (contents, props changed) Modified: trunk/OpenMPT/include/mpg123/AUTHORS trunk/OpenMPT/include/mpg123/OpenMPT.txt trunk/OpenMPT/include/mpg123/src/libmpg123/check_neon.S trunk/OpenMPT/include/mpg123/src/libmpg123/dct36_neon64.S trunk/OpenMPT/include/mpg123/src/libmpg123/dct64_neon64_float.S trunk/OpenMPT/include/mpg123/src/libmpg123/frame.c trunk/OpenMPT/include/mpg123/src/libmpg123/frame.h trunk/OpenMPT/include/mpg123/src/libmpg123/layer1.c trunk/OpenMPT/include/mpg123/src/libmpg123/layer2.c trunk/OpenMPT/include/mpg123/src/libmpg123/layer3.c trunk/OpenMPT/include/mpg123/src/libmpg123/libmpg123.c trunk/OpenMPT/include/mpg123/src/libmpg123/parse.c trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_accurate.S trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_float.S trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_s32.S trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_accurate.S trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_float.S trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_s32.S trunk/OpenMPT/include/mpg123/src/version.h Modified: trunk/OpenMPT/include/mpg123/AUTHORS ============================================================================== --- trunk/OpenMPT/include/mpg123/AUTHORS Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/AUTHORS Thu Oct 24 14:43:05 2024 (r21914) @@ -30,6 +30,7 @@ Contributions/ideas Thomas Orgis era (includes backports from mhipp trunk): +Bill Roberts <bil...@ar...>: PAC/BTI for aarch64 Dave Yeo <dav...@gm...>: continued OS/2 fixing madebr and manx: github mirror and CI Vitaly Kirsanov <kro...@gm...>: ports/cmake (optional CMake build) Modified: trunk/OpenMPT/include/mpg123/OpenMPT.txt ============================================================================== --- trunk/OpenMPT/include/mpg123/OpenMPT.txt Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/OpenMPT.txt Thu Oct 24 14:43:05 2024 (r21914) @@ -1,4 +1,4 @@ -libmpg123 library version 1.32.7 (2024-08-07). +libmpg123 library version 1.32.8-dev+r5433 (2024-10-24). The following changes have been made: * `ports/makefile/config.h` has been added for plain `Makefile` builds. * `ports/MSVC++/config.h` has been added for MSVC builds. Added: trunk/OpenMPT/include/mpg123/src/libmpg123/aarch64_defs.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/aarch64_defs.h Thu Oct 24 14:43:05 2024 (r21914) @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: LGPL-2.1 + * + * aarch64_defs.h: Support macros for the aarch64 architectural features + */ + +#ifndef SRC_LIBMPG123_AARCH64_DEFS_H_ +#define SRC_LIBMPG123_AARCH64_DEFS_H_ + +/* + * Guard this header so arm assembly files can just include it without the need + * to if-def each instance. + */ +#ifdef __aarch64__ + +/* + * References: + * - https://developer.arm.com/documentation/101028/0012/5--Feature-test-macros + * - https://github.com/ARM-software/abi-aa/blob/main/aaelf64/aaelf64.rst + */ + +#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 + #define GNU_PROPERTY_AARCH64_BTI 1 /* bit 0 GNU Notes is for BTI support */ +#else + #define GNU_PROPERTY_AARCH64_BTI 0 +#endif + +#if defined(__ARM_FEATURE_PAC_DEFAULT) + #define GNU_PROPERTY_AARCH64_POINTER_AUTH 2 /* bit 1 GNU Notes is for PAC support */ +#else + #define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 +#endif + +/* Add the BTI support to GNU Notes section */ +#if defined(__ASSEMBLER__) && defined(__ELF__) +#if GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 + .pushsection .note.gnu.property, "a"; /* Start a new allocatable section */ + .balign 8; /* align it on a byte boundry */ + .long 4; /* size of "GNU\0" */ + .long 0x10; /* size of descriptor */ + .long 0x5; /* NT_GNU_PROPERTY_TYPE_0 */ + .asciz "GNU"; + .long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ + .long 4; /* Four bytes of data */ + .long (GNU_PROPERTY_AARCH64_BTI|GNU_PROPERTY_AARCH64_POINTER_AUTH); /* BTI or PAC is enabled */ + .long 0; /* padding for 8 byte alignment */ + .popsection; /* end the section */ +#endif /* GNU Notes additions */ +#endif /* if __ASSEMBLER__ and __ELF__ */ + +#endif /* __arch64__ */ + +#endif /* SRC_LIBMPG123_AARCH64_DEFS_H_ */ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/check_neon.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/check_neon.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/check_neon.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Momma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __aarch64__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/dct36_neon64.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/dct36_neon64.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/dct36_neon64.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/dct64_neon64_float.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/dct64_neon64_float.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/dct64_neon64_float.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/frame.c ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/frame.c Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/frame.c Thu Oct 24 14:43:05 2024 (r21914) @@ -511,6 +511,7 @@ { frame_icy_reset(fr); INT123_open_bad(fr); + memset(&(fr->hdr), 0, sizeof(fr->hdr)); fr->to_decode = FALSE; fr->to_ignore = FALSE; fr->metaflags = 0; @@ -524,15 +525,12 @@ fr->clip = 0; fr->oldhead = 0; fr->firsthead = 0; - fr->lay = 0; fr->vbr = MPG123_CBR; fr->abr_rate = 0; fr->track_frames = 0; fr->track_samples = -1; - fr->framesize=0; fr->mean_frames = 0; fr->mean_framesize = 0; - fr->freesize = 0; fr->lastscale = -1; fr->rva.level[0] = -1; fr->rva.level[1] = -1; @@ -567,8 +565,7 @@ fr->icy.next = 0; #endif fr->halfphase = 0; /* here or indeed only on first-time init? */ - fr->error_protection = 0; - fr->freeformat_framesize = fr->p.freeformat_framesize; + fr->hdr.freeformat_framesize = fr->p.freeformat_framesize; fr->enc_delay = -1; fr->enc_padding = -1; memset(fr->id3buf, 0, sizeof(fr->id3buf)); @@ -627,7 +624,7 @@ if(header != NULL) *header = mh->oldhead; if(bodydata != NULL) *bodydata = mh->bsbuf; - if(bodybytes != NULL) *bodybytes = mh->framesize; + if(bodybytes != NULL) *bodybytes = mh->hdr.framesize; return MPG123_OK; } @@ -900,9 +897,9 @@ { int64_t preshift = fr->p.preframes; /* Layer 3 _really_ needs at least one frame before. */ - if(fr->lay==3 && preshift < 1) preshift = 1; + if(fr->hdr.lay==3 && preshift < 1) preshift = 1; /* Layer 1 & 2 reall do not need more than 2. */ - if(fr->lay!=3 && preshift > 2) preshift = 2; + if(fr->hdr.lay!=3 && preshift > 2) preshift = 2; return fr->firstframe - preshift; } @@ -949,7 +946,7 @@ void INT123_frame_skip(mpg123_handle *fr) { #ifndef NO_LAYER3 - if(fr->lay == 3) INT123_set_pointer(fr, 1, 512); + if(fr->hdr.lay == 3) INT123_set_pointer(fr, 1, 512); #endif } Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/frame.h ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/frame.h Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/frame.h Thu Oct 24 14:43:05 2024 (r21914) @@ -96,6 +96,33 @@ ,FRAME_DECODER_LIVE = 0x8 /**< 1000 Decoder can be used. */ }; +// separate frame header structure for safe decoding of headers without +// modifying the main frame struct before we are sure that we can read a +// frame into it +struct frame_header +{ + int lay; + // lots of flags that could share storage, should reform that + int lsf; /* 0: MPEG 1.0; 1: MPEG 2.0/2.5 -- both used as bool and array index! */ + int mpeg25; + int error_protection; + int bitrate_index; + int sampling_frequency; + int padding; + int extension; + int mode; + int mode_ext; + int copyright; + int original; + int emphasis; + // Even 16 bit int is enough for MAXFRAMESIZE + int framesize; /* computed framesize */ + int freeformat; + int freeformat_framesize; + // Derived from header and checked against the above. + int ssize; +}; + /* There is a lot to condense here... many ints can be merged as flags; though the main space is still consumed by buffers. */ struct mpg123_handle_struct { @@ -197,26 +224,12 @@ int single; int II_sblimit; int down_sample_sblimit; - int lsf; /* 0: MPEG 1.0; 1: MPEG 2.0/2.5 -- both used as bool and array index! */ /* Many flags in disguise as integers... wasting bytes. */ - int mpeg25; int down_sample; int header_change; - int lay; + struct frame_header hdr; long spf; /* cached count of samples per frame */ int (*do_layer)(mpg123_handle *); - int error_protection; - int bitrate_index; - int sampling_frequency; - int padding; - int extension; - int mode; - int mode_ext; - int copyright; - int original; - int emphasis; - int framesize; /* computed framesize */ - int freesize; /* free format frame size */ enum mpg123_vbr vbr; /* 1 if variable bitrate was detected */ int64_t num; /* frame offset ... */ int64_t input_offset; /* byte offset of this frame in input stream */ @@ -225,8 +238,6 @@ int state_flags; char silent_resync; /* Do not complain for the next n resyncs. */ unsigned char* xing_toc; /* The seek TOC from Xing header. */ - int freeformat; - long freeformat_framesize; /* bitstream info; bsi */ int bitindex; @@ -253,7 +264,6 @@ double mean_framesize; int64_t mean_frames; int fsizeold; - int ssize; unsigned int bitreservoir; unsigned char bsspace[2][MAXFRAMESIZE+512+4]; /* MAXFRAMESIZE */ unsigned char *bsbuf; Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/layer1.c ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/layer1.c Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/layer1.c Thu Oct 24 14:43:05 2024 (r21914) @@ -217,7 +217,7 @@ real (*fraction)[SBLIMIT] = fr->layer1.fraction; /* fraction[2][SBLIMIT] */ int single = fr->single; - fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32; + fr->jsbound = (fr->hdr.mode == MPG_MD_JOINT_STEREO) ? (fr->hdr.mode_ext<<2)+4 : 32; if(stereo == 1 || single == SINGLE_MIX) /* I don't see mixing handled here */ single = SINGLE_LEFT; Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/layer2.c ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/layer2.c Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/layer2.c Thu Oct 24 14:43:05 2024 (r21914) @@ -313,10 +313,10 @@ const struct al_table *tables[5] = { alloc_0, alloc_1, alloc_2, alloc_3 , alloc_4 }; const int sblims[5] = { 27 , 30 , 8, 12 , 30 }; - if(fr->sampling_frequency >= 3) /* Or equivalent: (fr->lsf == 1) */ + if(fr->hdr.sampling_frequency >= 3) /* Or equivalent: (fr->lsf == 1) */ table = 4; else - table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; + table = translate[fr->hdr.sampling_frequency][2-fr->stereo][fr->hdr.bitrate_index]; sblim = sblims[table]; fr->alloc = tables[table]; @@ -337,7 +337,7 @@ int single = fr->single; II_select_table(fr); - fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : fr->II_sblimit; + fr->jsbound = (fr->hdr.mode == MPG_MD_JOINT_STEREO) ? (fr->hdr.mode_ext<<2)+4 : fr->II_sblimit; if(fr->jsbound > fr->II_sblimit) { Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/layer3.c ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/layer3.c Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/layer3.c Thu Oct 24 14:43:05 2024 (r21914) @@ -135,16 +135,16 @@ int powdiff = (single == SINGLE_MIX) ? 4 : 0; const int tabs[2][5] = { { 2,9,5,3,4 } , { 1,8,1,2,9 } }; - const int *tab = tabs[fr->lsf]; + const int *tab = tabs[fr->hdr.lsf]; { /* First ensure we got enough bits available. */ unsigned int needbits = 0; needbits += tab[1]; /* main_data_begin */ needbits += stereo == 1 ? tab[2] : tab[3]; /* private */ - if(!fr->lsf) + if(!fr->hdr.lsf) needbits += stereo*4; /* scfsi */ /* For each granule for each channel ... */ - needbits += tab[0]*stereo*(29+tab[4]+1+22+(!fr->lsf?1:0)+2); + needbits += tab[0]*stereo*(29+tab[4]+1+22+(!fr->hdr.lsf?1:0)+2); if(fr->bits_avail < needbits) \ { if(NOQUIET) @@ -162,7 +162,7 @@ /* overwrite main_data_begin for the really available bit reservoir */ backbits(fr, tab[1]); - if(fr->lsf == 0) + if(fr->hdr.lsf == 0) { fr->wordpointer[0] = (unsigned char) (fr->bitreservoir >> 1); fr->wordpointer[1] = (unsigned char) ((fr->bitreservoir & 1) << 7); @@ -171,7 +171,7 @@ /* zero "side-info" data for a silence-frame without touching audio data used as bit reservoir for following frame */ - memset(fr->wordpointer+2, 0, fr->ssize-2); + memset(fr->wordpointer+2, 0, fr->hdr.ssize-2); /* reread the new bit reservoir offset */ si->main_data_begin = getbits(fr, tab[1]); @@ -179,11 +179,11 @@ /* Keep track of the available data bytes for the bit reservoir. CRC is included in ssize already. */ - fr->bitreservoir = fr->bitreservoir + fr->framesize - fr->ssize; + fr->bitreservoir = fr->bitreservoir + fr->hdr.framesize - fr->hdr.ssize; /* Limit the reservoir to the max for MPEG 1.0 or 2.x . */ - if(fr->bitreservoir > (unsigned int) (fr->lsf == 0 ? 511 : 255)) - fr->bitreservoir = (fr->lsf == 0 ? 511 : 255); + if(fr->bitreservoir > (unsigned int) (fr->hdr.lsf == 0 ? 511 : 255)) + fr->bitreservoir = (fr->hdr.lsf == 0 ? 511 : 255); /* Now back into less commented territory. It's code. It works. */ @@ -192,7 +192,7 @@ else si->private_bits = getbits(fr, tab[3]); - if(!fr->lsf) for(ch=0; ch<stereo; ch++) + if(!fr->hdr.lsf) for(ch=0; ch<stereo; ch++) { si->ch[ch].gr[0].scfsi = -1; si->ch[ch].gr[1].scfsi = getbits(fr, 4); @@ -257,14 +257,14 @@ } /* region_count/start parameters are implicit in this case. */ - if( (!fr->lsf || (gr_info->block_type == 2)) && !fr->mpeg25) + if( (!fr->hdr.lsf || (gr_info->block_type == 2)) && !fr->hdr.mpeg25) { gr_info->region1start = 36>>1; gr_info->region2start = 576>>1; } else { - if(fr->mpeg25) + if(fr->hdr.mpeg25) { int r0c,r1c; if((gr_info->block_type == 2) && (!gr_info->mixed_block_flag) ) r0c = 5; @@ -299,7 +299,7 @@ gr_info->block_type = 0; gr_info->mixed_block_flag = 0; } - if(!fr->lsf) gr_info->preflag = get1bit(fr); + if(!fr->hdr.lsf) gr_info->preflag = get1bit(fr); gr_info->scalefac_scale = get1bit(fr); gr_info->count1table_select = get1bit(fr); @@ -1824,7 +1824,7 @@ int stereo = fr->stereo; int single = fr->single; int ms_stereo,i_stereo; - int sfreq = fr->sampling_frequency; + int sfreq = fr->hdr.sampling_frequency; int stereo1,granules; if(stereo == 1) @@ -1837,14 +1837,14 @@ else stereo1 = 2; - if(fr->mode == MPG_MD_JOINT_STEREO) + if(fr->hdr.mode == MPG_MD_JOINT_STEREO) { - ms_stereo = (fr->mode_ext & 0x2)>>1; - i_stereo = fr->mode_ext & 0x1; + ms_stereo = (fr->hdr.mode_ext & 0x2)>>1; + i_stereo = fr->hdr.mode_ext & 0x1; } else ms_stereo = i_stereo = 0; - granules = fr->lsf ? 1 : 2; + granules = fr->hdr.lsf ? 1 : 2; /* quick hack to keep the music playing */ /* after having seen this nasty test file... */ @@ -1859,7 +1859,7 @@ if(fr->pinfo) { fr->pinfo->maindata = sideinfo.main_data_begin; - fr->pinfo->padding = fr->padding; + fr->pinfo->padding = fr->hdr.padding; } #endif for(gr=0;gr<granules;gr++) @@ -1880,7 +1880,7 @@ , gr_info->part2_3_length, fr->bits_avail ); return clip; } - if(fr->lsf) + if(fr->hdr.lsf) part2bits = III_get_scale_factors_2(fr, scalefacs[0],gr_info,0); else part2bits = III_get_scale_factors_1(fr, scalefacs[0],gr_info,0,gr); @@ -1920,7 +1920,7 @@ { struct gr_info_s *gr_info = &(sideinfo.ch[1].gr[gr]); long part2bits; - if(fr->lsf) + if(fr->hdr.lsf) part2bits = III_get_scale_factors_2(fr, scalefacs[1],gr_info,i_stereo); else part2bits = III_get_scale_factors_1(fr, scalefacs[1],gr_info,1,gr); @@ -1970,7 +1970,7 @@ } } - if(i_stereo) III_i_stereo(hybridIn,scalefacs[1],gr_info,sfreq,ms_stereo,fr->lsf); + if(i_stereo) III_i_stereo(hybridIn,scalefacs[1],gr_info,sfreq,ms_stereo,fr->hdr.lsf); if(ms_stereo || i_stereo || (single == SINGLE_MIX) ) { Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/libmpg123.c ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/libmpg123.c Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/libmpg123.c Thu Oct 24 14:43:05 2024 (r21914) @@ -457,7 +457,7 @@ theval = mh->enc_padding; break; case MPG123_DEC_DELAY: - theval = mh->lay == 3 ? GAPLESS_DELAY : -1; + theval = mh->hdr.lay == 3 ? GAPLESS_DELAY : -1; break; default: mh->err = MPG123_BAD_KEY; @@ -1241,10 +1241,10 @@ b = init_track(mh); \ if(b < 0) return b; \ \ - mi->version = mh->mpeg25 ? MPG123_2_5 : (mh->lsf ? MPG123_2_0 : MPG123_1_0); \ - mi->layer = mh->lay; \ + mi->version = mh->hdr.mpeg25 ? MPG123_2_5 : (mh->hdr.lsf ? MPG123_2_0 : MPG123_1_0); \ + mi->layer = mh->hdr.lay; \ mi->rate = INT123_frame_freq(mh); \ - switch(mh->mode) \ + switch(mh->hdr.mode) \ { \ case 0: mi->mode = MPG123_M_STEREO; break; \ case 1: mi->mode = MPG123_M_JOINT; break; \ @@ -1252,14 +1252,14 @@ case 3: mi->mode = MPG123_M_MONO; break; \ default: mi->mode = 0; /* Nothing good to do here. */ \ } \ - mi->mode_ext = mh->mode_ext; \ - mi->framesize = mh->framesize+4; /* Include header. */ \ + mi->mode_ext = mh->hdr.mode_ext; \ + mi->framesize = mh->hdr.framesize+4; /* Include header. */ \ mi->flags = 0; \ - if(mh->error_protection) mi->flags |= MPG123_CRC; \ - if(mh->copyright) mi->flags |= MPG123_COPYRIGHT; \ - if(mh->extension) mi->flags |= MPG123_PRIVATE; \ - if(mh->original) mi->flags |= MPG123_ORIGINAL; \ - mi->emphasis = mh->emphasis; \ + if(mh->hdr.error_protection) mi->flags |= MPG123_CRC; \ + if(mh->hdr.copyright) mi->flags |= MPG123_COPYRIGHT; \ + if(mh->hdr.extension) mi->flags |= MPG123_PRIVATE; \ + if(mh->hdr.original) mi->flags |= MPG123_ORIGINAL; \ + mi->emphasis = mh->hdr.emphasis; \ mi->bitrate = INT123_frame_bitrate(mh); \ mi->abr_rate = mh->abr_rate; \ mi->vbr = mh->vbr; \ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/parse.c ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/parse.c Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/parse.c Thu Oct 24 14:43:05 2024 (r21914) @@ -63,9 +63,10 @@ static const long freqs[9] = { 44100, 48000, 32000, 22050, 24000, 16000 , 11025 , 12000 , 8000 }; -static int decode_header(mpg123_handle *fr,unsigned long newhead, int *freeformat_count); -static int skip_junk(mpg123_handle *fr, unsigned long *newheadp, long *headcount); -static int do_readahead(mpg123_handle *fr, unsigned long newhead); +static int decode_header(mpg123_handle *fr, struct frame_header *hdr, unsigned long newhead, int *freeformat_count); +static void apply_header(mpg123_handle *fr, struct frame_header *hdr); +static int skip_junk(mpg123_handle *fr, unsigned long *newheadp, long *headcount, struct frame_header *nhdr); +static int do_readahead(mpg123_handle *fr, struct frame_header *nhdr, unsigned long newhead); static int wetwork(mpg123_handle *fr, unsigned long *newheadp); /* These two are to be replaced by one function that gives all the frame parameters (for outsiders).*/ @@ -73,12 +74,12 @@ int INT123_frame_bitrate(mpg123_handle *fr) { - return tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]; + return tabsel_123[fr->hdr.lsf][fr->hdr.lay-1][fr->hdr.bitrate_index]; } long INT123_frame_freq(mpg123_handle *fr) { - return freqs[fr->sampling_frequency]; + return freqs[fr->hdr.sampling_frequency]; } /* compiler is smart enought to inline this one or should I really do it as macro...? */ @@ -141,8 +142,8 @@ Mono 17 9 */ int lame_offset = (fr->stereo == 2) - ? (fr->lsf ? 17 : 32) - : (fr->lsf ? 9 : 17); + ? (fr->hdr.lsf ? 17 : 32) + : (fr->hdr.lsf ? 9 : 17); if(fr->p.flags & MPG123_IGNORE_INFOFRAME) goto check_lame_tag_no; @@ -154,7 +155,7 @@ for the actual data, have to check if each byte of information is present. But: 4 B Info/Xing + 4 B flags is bare minimum. */ - if(fr->framesize < lame_offset+8) goto check_lame_tag_no; + if(fr->hdr.framesize < lame_offset+8) goto check_lame_tag_no; /* only search for tag when all zero before it (apart from checksum) */ for(i=2; i < lame_offset; ++i) if(fr->bsbuf[i] != 0) goto check_lame_tag_no; @@ -190,7 +191,7 @@ /* From now on, I have to carefully check if the announced data is actually there! I'm always returning 'yes', though. */ - #define check_bytes_left(n) if(fr->framesize < lame_offset+n) \ + #define check_bytes_left(n) if(fr->hdr.framesize < lame_offset+n) \ goto check_lame_tag_yes if(xing_flags & 1) /* total bitstream frames */ { @@ -443,10 +444,10 @@ static void halfspeed_prepare(mpg123_handle *fr) { /* save for repetition */ - if(fr->p.halfspeed && fr->lay == 3) + if(fr->p.halfspeed && fr->hdr.lay == 3) { debug("halfspeed - reusing old bsbuf "); - memcpy (fr->ssave, fr->bsbuf, fr->ssize); + memcpy (fr->ssave, fr->bsbuf, fr->hdr.ssize); } } @@ -462,8 +463,8 @@ fr->to_decode = fr->to_ignore = TRUE; --fr->halfphase; INT123_set_pointer(fr, 0, 0); - if(fr->lay == 3) memcpy (fr->bsbuf, fr->ssave, fr->ssize); - if(fr->error_protection) fr->crc = getbits(fr, 16); /* skip crc */ + if(fr->hdr.lay == 3) memcpy (fr->bsbuf, fr->ssave, fr->hdr.ssize); + if(fr->hdr.error_protection) fr->crc = getbits(fr, 16); /* skip crc */ return 1; } else @@ -496,10 +497,11 @@ /* TODO: rework this thing */ int freeformat_count = 0; unsigned long newhead; + // Start with current frame header state as copy for roll-back ability. + struct frame_header nhdr = fr->hdr; int64_t framepos; int ret; /* stuff that needs resetting if complete frame reading fails */ - int oldsize = fr->framesize; int oldphase = fr->halfphase; /* The counter for the search-first-header loop. @@ -507,11 +509,12 @@ when repeatedly headers are found that do not have valid followup headers. */ long headcount = 0; - fr->fsizeold=fr->framesize; /* for Layer3 */ + fr->fsizeold=fr->hdr.framesize; /* for Layer3 */ if(halfspeed_do(fr) == 1) return 1; /* From now on, old frame data is tainted by parsing attempts. */ + // Handling premature effects of decode_header now, more decoupling would be welcome. fr->to_decode = fr->to_ignore = FALSE; if( fr->p.flags & MPG123_NO_FRANKENSTEIN && @@ -540,13 +543,13 @@ #ifdef SKIP_JUNK if(!fr->firsthead && !head_check(newhead)) { - ret = skip_junk(fr, &newhead, &headcount); + ret = skip_junk(fr, &newhead, &headcount, &nhdr); JUMP_CONCLUSION(ret); } #endif ret = head_check(newhead); - if(ret) ret = decode_header(fr, newhead, &freeformat_count); + if(ret) ret = decode_header(fr, &nhdr, newhead, &freeformat_count); JUMP_CONCLUSION(ret); /* That only continues for ret == PARSE_BAD or PARSE_GOOD. */ if(ret == PARSE_BAD) @@ -561,7 +564,7 @@ { ret = fr->p.flags & MPG123_NO_READAHEAD ? PARSE_GOOD - : do_readahead(fr, newhead); + : do_readahead(fr, &nhdr, newhead); /* readahead can fail mit NEED_MORE, in which case we must also make the just read header available again for next go */ if(ret < 0) fr->rd->back_bytes(fr, 4); JUMP_CONCLUSION(ret); @@ -585,8 +588,8 @@ { unsigned char *newbuf = fr->bsspace[fr->bsnum]+512; /* read main data into memory */ - debug2("read frame body of %i at %"PRIi64, fr->framesize, framepos+4); - if((ret=fr->rd->read_frame_body(fr,newbuf,fr->framesize))<0) + debug2("read frame body of %i at %"PRIi64, nhdr.framesize, framepos+4); + if((ret=fr->rd->read_frame_body(fr,newbuf,nhdr.framesize))<0) { /* if failed: flip back */ debug1("%s", ret == MPG123_NEED_MORE ? "need more" : "read error"); @@ -597,6 +600,10 @@ } fr->bsnum = (fr->bsnum + 1) & 1; + // We read the frame body, time to apply the matching header. + // Even if erroring out later, the header state needs to match the body. + apply_header(fr, &nhdr); + if(!fr->firsthead) { fr->firsthead = newhead; /* _now_ it's time to store it... the first real header */ @@ -608,7 +615,7 @@ fr->audio_start = framepos; /* Only check for LAME tag at beginning of whole stream ... when there indeed is one in between, it's the user's problem. */ - if(fr->lay == 3 && check_lame_tag(fr) == 1) + if(fr->hdr.lay == 3 && check_lame_tag(fr) == 1) { /* ...in practice, Xing/LAME tags are layer 3 only. */ if(fr->rd->forget != NULL) fr->rd->forget(fr); @@ -624,6 +631,8 @@ INT123_set_pointer(fr, 0, 0); + // No use of nhdr from here on. It is fr->hdr now! + /* Question: How bad does the floating point value get with repeated recomputation? Also, considering that we can play the file or parts of many times. */ if(++fr->mean_frames != 0) @@ -631,7 +640,7 @@ fr->mean_framesize = ((fr->mean_frames-1)*fr->mean_framesize+INT123_compute_bpf(fr)) / fr->mean_frames ; } ++fr->num; /* 0 for first frame! */ - debug4("Frame %"PRIi64" %08lx %i, next filepos=%"PRIi64, fr->num, newhead, fr->framesize, fr->rd->tell(fr)); + debug4("Frame %"PRIi64" %08lx %i, next filepos=%"PRIi64, fr->num, newhead, fr->hdr.framesize, fr->rd->tell(fr)); if(!(fr->state_flags & FRAME_FRANKENSTEIN) && ( (fr->track_frames > 0 && fr->num >= fr->track_frames) #ifdef GAPLESS @@ -665,7 +674,7 @@ if(fr->rd->forget != NULL) fr->rd->forget(fr); fr->to_decode = fr->to_ignore = TRUE; - if(fr->error_protection) fr->crc = getbits(fr, 16); /* skip crc */ + if(fr->hdr.error_protection) fr->crc = getbits(fr, 16); /* skip crc */ /* Let's check for header change after deciding that the new one is good @@ -712,7 +721,6 @@ fr->silent_resync = 0; if(fr->err == MPG123_OK) fr->err = MPG123_ERR_READER; - fr->framesize = oldsize; fr->halfphase = oldphase; /* That return code might be inherited from some feeder action, or reader error. */ return ret; @@ -726,9 +734,9 @@ * <0: error codes, possibly from feeder buffer (NEED_MORE) * PARSE_BAD: cannot get the framesize for some reason and shall silentry try the next possible header (if this is no free format stream after all...) */ -static int guess_freeformat_framesize(mpg123_handle *fr, unsigned long oldhead) +static int guess_freeformat_framesize(mpg123_handle *fr, unsigned long oldhead, int *framesize) { - long i; + int i; int ret; unsigned long head; if(!(fr->rdat.flags & (READER_SEEKABLE|READER_BUFFERED))) @@ -749,7 +757,7 @@ if((head & HDR_SAMEMASK) == (oldhead & HDR_SAMEMASK)) { fr->rd->back_bytes(fr,i+1); - fr->framesize = i-3; + *framesize = i-3; return PARSE_GOOD; /* Success! */ } } @@ -766,8 +774,13 @@ * 0: no valid header * <0: some error * You are required to do a head_check() before calling! + * + * This now only operates on a frame header struct, not the full frame structure. + * The scope is limited to parsing header information and determining the size of + * the frame body to read. Everything else belongs into a later stage of applying + * header information to the main decoder frame structure. */ -static int decode_header(mpg123_handle *fr,unsigned long newhead, int *freeformat_count) +static int decode_header(mpg123_handle *fr, struct frame_header *fh, unsigned long newhead, int *freeformat_count) { #ifdef DEBUG /* Do not waste cycles checking the header twice all the time. */ if(!head_check(newhead)) @@ -778,43 +791,42 @@ /* For some reason, the layer and sampling freq settings used to be wrapped in a weird conditional including MPG123_NO_RESYNC. What was I thinking? This information has to be consistent. */ - fr->lay = 4 - HDR_LAYER_VAL(newhead); + fh->lay = 4 - HDR_LAYER_VAL(newhead); if(HDR_VERSION_VAL(newhead) & 0x2) { - fr->lsf = (HDR_VERSION_VAL(newhead) & 0x1) ? 0 : 1; - fr->mpeg25 = 0; - fr->sampling_frequency = HDR_SAMPLERATE_VAL(newhead) + (fr->lsf*3); + fh->lsf = (HDR_VERSION_VAL(newhead) & 0x1) ? 0 : 1; + fh->mpeg25 = 0; + fh->sampling_frequency = HDR_SAMPLERATE_VAL(newhead) + (fh->lsf*3); } else { - fr->lsf = 1; - fr->mpeg25 = 1; - fr->sampling_frequency = 6 + HDR_SAMPLERATE_VAL(newhead); + fh->lsf = 1; + fh->mpeg25 = 1; + fh->sampling_frequency = 6 + HDR_SAMPLERATE_VAL(newhead); } #ifdef DEBUG /* seen a file where this varies (old lame tag without crc, track with crc) */ - if((HDR_CRC_VAL(newhead)^0x1) != fr->error_protection) debug("changed crc bit!"); + if((HDR_CRC_VAL(newhead)^0x1) != fh->error_protection) debug("changed crc bit!"); #endif - fr->error_protection = HDR_CRC_VAL(newhead)^0x1; - fr->bitrate_index = HDR_BITRATE_VAL(newhead); - fr->padding = HDR_PADDING_VAL(newhead); - fr->extension = HDR_PRIVATE_VAL(newhead); - fr->mode = HDR_CHANNEL_VAL(newhead); - fr->mode_ext = HDR_CHANEX_VAL(newhead); - fr->copyright = HDR_COPYRIGHT_VAL(newhead); - fr->original = HDR_ORIGINAL_VAL(newhead); - fr->emphasis = HDR_EMPHASIS_VAL(newhead); - fr->freeformat = !(newhead & HDR_BITRATE); + fh->error_protection = HDR_CRC_VAL(newhead)^0x1; + fh->bitrate_index = HDR_BITRATE_VAL(newhead); + fh->padding = HDR_PADDING_VAL(newhead); + fh->extension = HDR_PRIVATE_VAL(newhead); + fh->mode = HDR_CHANNEL_VAL(newhead); + fh->mode_ext = HDR_CHANEX_VAL(newhead); + fh->copyright = HDR_COPYRIGHT_VAL(newhead); + fh->original = HDR_ORIGINAL_VAL(newhead); + fh->emphasis = HDR_EMPHASIS_VAL(newhead); + fh->freeformat = !(newhead & HDR_BITRATE); - fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2; /* we can't use tabsel_123 for freeformat, so trying to guess framesize... */ - if(fr->freeformat) + if(fh->freeformat) { /* when we first encounter the frame with freeformat, guess framesize */ - if(fr->freeformat_framesize < 0) + if(fh->freeformat_framesize < 0) { int ret; if(fr->p.flags & MPG123_NO_READAHEAD) @@ -829,12 +841,12 @@ if(VERBOSE3) error("You fooled me too often. Refusing to guess free format frame size _again_."); return PARSE_BAD; } - ret = guess_freeformat_framesize(fr, newhead); + ret = guess_freeformat_framesize(fr, newhead, &(fh->framesize)); if(ret == PARSE_GOOD) { - fr->freeformat_framesize = fr->framesize - fr->padding; + fh->freeformat_framesize = fh->framesize - fh->padding; if(VERBOSE2) - fprintf(stderr, "Note: free format frame size %li\n", fr->freeformat_framesize); + fprintf(stderr, "Note: free format frame size %i\n", fh->freeformat_framesize); } else { @@ -849,112 +861,140 @@ /* freeformat should be CBR, so the same framesize can be used at the 2nd reading or later */ else { - fr->framesize = fr->freeformat_framesize + fr->padding; + fh->framesize = fh->freeformat_framesize + fh->padding; } } - - switch(fr->lay) + switch(fh->lay) { #ifndef NO_LAYER1 case 1: - fr->spf = 384; - fr->do_layer = INT123_do_layer1; - if(!fr->freeformat) + if(!fh->freeformat) { - long fs = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000; - fs /= freqs[fr->sampling_frequency]; - fs = ((fs+fr->padding)<<2)-4; - fr->framesize = (int)fs; + long fs = (long) tabsel_123[fh->lsf][0][fh->bitrate_index] * 12000; + fs /= freqs[fh->sampling_frequency]; + fs = ((fs+fh->padding)<<2)-4; + fh->framesize = (int)fs; } break; #endif #ifndef NO_LAYER2 case 2: - fr->spf = 1152; - fr->do_layer = INT123_do_layer2; - if(!fr->freeformat) + if(!fh->freeformat) { - debug2("bitrate index: %i (%i)", fr->bitrate_index, tabsel_123[fr->lsf][1][fr->bitrate_index] ); - long fs = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000; - fs /= freqs[fr->sampling_frequency]; - fs += fr->padding - 4; - fr->framesize = (int)fs; + debug2("bitrate index: %i (%i)", fh->bitrate_index, tabsel_123[fh->lsf][1][fh->bitrate_index] ); + long fs = (long) tabsel_123[fh->lsf][1][fh->bitrate_index] * 144000; + fs /= freqs[fh->sampling_frequency]; + fs += fh->padding - 4; + fh->framesize = (int)fs; } break; #endif #ifndef NO_LAYER3 case 3: - fr->spf = fr->lsf ? 576 : 1152; /* MPEG 2.5 implies LSF.*/ - fr->do_layer = INT123_do_layer3; - if(fr->lsf) - fr->ssize = (fr->stereo == 1) ? 9 : 17; + if(fh->lsf) + fh->ssize = (fh->mode == MPG_MD_MONO) ? 9 : 17; else - fr->ssize = (fr->stereo == 1) ? 17 : 32; + fh->ssize = (fh->mode == MPG_MD_MONO) ? 17 : 32; - if(fr->error_protection) - fr->ssize += 2; + if(fh->error_protection) + fh->ssize += 2; - if(!fr->freeformat) + if(!fh->freeformat) { - long fs = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000; - fs /= freqs[fr->sampling_frequency]<<(fr->lsf); - fs += fr->padding - 4; - fr->framesize = fs; + long fs = (long) tabsel_123[fh->lsf][2][fh->bitrate_index] * 144000; + fs /= freqs[fh->sampling_frequency]<<(fh->lsf); + fs += fh->padding - 4; + fh->framesize = fs; } - if(fr->framesize < fr->ssize) + if(fh->framesize < fh->ssize) { if(NOQUIET) error2( "Frame smaller than mandatory side info (%i < %i)!" - , fr->framesize, fr->ssize ); + , fh->framesize, fh->ssize ); return PARSE_BAD; } break; #endif default: - if(NOQUIET) error1("Layer type %i not supported in this build!", fr->lay); + if(NOQUIET) error1("Layer type %i not supported in this build!", fh->lay); return PARSE_BAD; } - if (fr->framesize > MAXFRAMESIZE) + if (fh->framesize > MAXFRAMESIZE) { - if(NOQUIET) error1("Frame size too big: %d", fr->framesize+4-fr->padding); + if(NOQUIET) error1("Frame size too big: %d", fh->framesize+4-fh->padding); return PARSE_BAD; } return PARSE_GOOD; } +// Apply decoded header structure to frame struct, including +// main decoder function pointer. +static void apply_header(mpg123_handle *fr, struct frame_header *hdr) +{ + // copy the whole struct, do some postprocessing + fr->hdr = *hdr; + fr->stereo = (fr->hdr.mode == MPG_MD_MONO) ? 1 : 2; + switch(fr->hdr.lay) + { +#ifndef NO_LAYER1 + case 1: + fr->spf = 384; + fr->do_layer = INT123_do_layer1; + break; +#endif +#ifndef NO_LAYER2 + case 2: + fr->spf = 1152; + fr->do_layer = INT123_do_layer2; + break; +#endif +#ifndef NO_LAYER3 + case 3: + fr->spf = fr->hdr.lsf ? 576 : 1152; /* MPEG 2.5 implies LSF.*/ + fr->do_layer = INT123_do_layer3; +#endif + break; + default: + // No error checking/message here, been done in decode_header(). + fr->spf = 0; + fr->do_layer = NULL; + } +} + + /* Prepare for bit reading. Two stages: 0. Layers 1 and 2, side info for layer 3 1. Second call for possible bit reservoir for layer 3 part 2,3. This overwrites side info needed for stage 0. Continuing to read bits after layer 3 side info shall fail unless - INT123_set_pointer() is called to refresh things. + INT123_set_pointer() is called to refresh things. */ void INT123_set_pointer(mpg123_handle *fr, int part2, long backstep) { fr->bitindex = 0; - if(fr->lay == 3) + if(fr->hdr.lay == 3) { if(part2) { - fr->wordpointer = fr->bsbuf + fr->ssize - backstep; + fr->wordpointer = fr->bsbuf + fr->hdr.ssize - backstep; if(backstep) memcpy( fr->wordpointer, fr->bsbufold+fr->fsizeold-backstep , backstep ); - fr->bits_avail = (long)(fr->framesize - fr->ssize + backstep)*8; + fr->bits_avail = (long)(fr->hdr.framesize - fr->hdr.ssize + backstep)*8; } else { fr->wordpointer = fr->bsbuf; - fr->bits_avail = fr->ssize*8; + fr->bits_avail = fr->hdr.ssize*8; } } else { fr->wordpointer = fr->bsbuf; - fr->bits_avail = fr->framesize*8; + fr->bits_avail = fr->hdr.framesize*8; } } @@ -962,7 +1002,7 @@ double INT123_compute_bpf(mpg123_handle *fr) { - return (fr->framesize > 0) ? fr->framesize + 4.0 : 1.0; + return (fr->hdr.framesize > 0) ? fr->hdr.framesize + 4.0 : 1.0; } int attribute_align_arg mpg123_spf(mpg123_handle *mh) @@ -978,8 +1018,8 @@ double tpf; if(fr == NULL || !fr->firsthead) return MPG123_ERR; - tpf = (double) bs[fr->lay]; - tpf /= freqs[fr->sampling_frequency] << (fr->lsf); + tpf = (double) bs[fr->hdr.lay]; + tpf /= freqs[fr->hdr.sampling_frequency] << (fr->hdr.lsf); return tpf; } @@ -1046,7 +1086,7 @@ } /* first attempt of read ahead check to find the real first header; cannot believe what junk is out there! */ -static int do_readahead(mpg123_handle *fr, unsigned long newhead) +static int do_readahead(mpg123_handle *fr, struct frame_header *nhdr, unsigned long newhead) { unsigned long nexthead = 0; int hd = 0; @@ -1058,9 +1098,9 @@ start = fr->rd->tell(fr); - debug2("doing ahead check with BPF %d at %"PRIi64, fr->framesize+4, start); + debug2("doing ahead check with BPF %d at %"PRIi64, nhdr->framesize+4, start); /* step framesize bytes forward and read next possible header*/ - if((oret=fr->rd->skip_bytes(fr, fr->framesize))<0) + if((oret=fr->rd->skip_bytes(fr, nhdr->framesize))<0) { if(oret==READER_ERROR && NOQUIET) error("cannot seek!"); @@ -1195,7 +1235,7 @@ } /* watch out for junk/tags on beginning of stream by invalid header */ -static int skip_junk(mpg123_handle *fr, unsigned long *newheadp, long *headcount) +static int skip_junk(mpg123_handle *fr, unsigned long *newheadp, long *headcount, struct frame_header *nhdr) { int ret; int freeformat_count = 0; @@ -1251,7 +1291,7 @@ if(++forgetcount > FORGET_INTERVAL) forgetcount = 0; if((ret=forget_head_shift(fr, &newhead, !forgetcount))<=0) return ret; - if(head_check(newhead) && (ret=decode_header(fr, newhead, &freeformat_count))) break; + if(head_check(newhead) && (ret=decode_header(fr, nhdr, newhead, &freeformat_count))) break; } while(1); if(ret<0) return ret; Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_accurate.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_accurate.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_accurate.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_float.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_float.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_float.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_s32.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_s32.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/synth_neon64_s32.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_accurate.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_accurate.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_accurate.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_float.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_float.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_float.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_s32.S ============================================================================== --- trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_s32.S Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/libmpg123/synth_stereo_neon64_s32.S Thu Oct 24 14:43:05 2024 (r21914) @@ -6,6 +6,7 @@ initially written by Taihei Monma */ +#include "aarch64_defs.h" #include "mangle.h" #ifndef __APPLE__ Modified: trunk/OpenMPT/include/mpg123/src/version.h ============================================================================== --- trunk/OpenMPT/include/mpg123/src/version.h Wed Oct 23 22:51:19 2024 (r21913) +++ trunk/OpenMPT/include/mpg123/src/version.h Thu Oct 24 14:43:05 2024 (r21914) @@ -16,10 +16,10 @@ // only single spaces as separator to ease parsing by build scripts #define MPG123_MAJOR 1 #define MPG123_MINOR 32 -#define MPG123_PATCH 7 +#define MPG123_PATCH 8 // Don't get too wild with that to avoid confusing m4. No brackets. // Also, it should fit well into a sane file name for the tarball. -#define MPG123_SUFFIX "" +#define MPG123_SUFFIX "-dev" #define MPG123_VERSION_CAT_REALLY(a, b, c) #a "." #b "." #c #define MPG123_VERSION_CAT(a, b, c) MPG123_VERSION_CAT_REALLY(a, b, c) |
From: <sv...@op...> - 2024-10-23 20:51:31
|
Author: sagamusix Date: Wed Oct 23 22:51:19 2024 New Revision: 21913 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21913 Log: [Ref] Small cleanup. Modified: trunk/OpenMPT/soundlib/Load_dbm.cpp trunk/OpenMPT/soundlib/Load_psm.cpp Modified: trunk/OpenMPT/soundlib/Load_dbm.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_dbm.cpp Wed Oct 23 22:50:05 2024 (r21912) +++ trunk/OpenMPT/soundlib/Load_dbm.cpp Wed Oct 23 22:51:19 2024 (r21913) @@ -380,7 +380,7 @@ return false; } - InitializeGlobals(MOD_TYPE_DBM, Clamp<uint16, uint16>(infoData.channels, 1, MAX_BASECHANNELS)); // Note: MAX_BASECHANNELS is currently 127, but DBPro 2 supports up to 128 channels, DBPro 3 apparently up to 254. + InitializeGlobals(MOD_TYPE_DBM, Clamp<uint16, uint16>(infoData.channels, 1, MAX_BASECHANNELS)); // Note: MAX_BASECHANNELS is currently 192, but DBPro 3 apparently supports up to 254 channels. m_SongFlags = SONG_ITCOMPATGXX | SONG_ITOLDEFFECTS; m_nInstruments = std::min(static_cast<INSTRUMENTINDEX>(infoData.instruments), static_cast<INSTRUMENTINDEX>(MAX_INSTRUMENTS - 1)); m_nSamples = std::min(static_cast<SAMPLEINDEX>(infoData.samples), static_cast<SAMPLEINDEX>(MAX_SAMPLES - 1)); Modified: trunk/OpenMPT/soundlib/Load_psm.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_psm.cpp Wed Oct 23 22:50:05 2024 (r21912) +++ trunk/OpenMPT/soundlib/Load_psm.cpp Wed Oct 23 22:51:19 2024 (r21913) @@ -217,7 +217,8 @@ { char patternID[5]; uint8 offset = 1; - file.ReadString<mpt::String::spacePadded>(patternID, 4); + if(!file.ReadString<mpt::String::spacePadded>(patternID, 4)) + return 0; if(!memcmp(patternID, "PATT", 4)) { file.ReadString<mpt::String::spacePadded>(patternID, 4); @@ -708,36 +709,29 @@ // Portamento case 0x0B: // fine portamento up - m.command = CMD_PORTAMENTOUP; - m.param = 0xF0 | ConvertPSMPorta(m.param, sinariaFormat); + m.SetEffectCommand(CMD_PORTAMENTOUP, 0xF0 | ConvertPSMPorta(m.param, sinariaFormat)); break; case 0x0C: // portamento up - m.command = CMD_PORTAMENTOUP; - m.param = ConvertPSMPorta(m.param, sinariaFormat); + m.SetEffectCommand(CMD_PORTAMENTOUP, ConvertPSMPorta(m.param, sinariaFormat)); break; case 0x0D: // fine portamento down - m.command = CMD_PORTAMENTODOWN; - m.param = 0xF0 | ConvertPSMPorta(m.param, sinariaFormat); + m.SetEffectCommand(CMD_PORTAMENTODOWN, 0xF0 | ConvertPSMPorta(m.param, sinariaFormat)); break; case 0x0E: // portamento down - m.command = CMD_PORTAMENTODOWN; - m.param = ConvertPSMPorta(m.param, sinariaFormat); + m.SetEffectCommand(CMD_PORTAMENTODOWN, ConvertPSMPorta(m.param, sinariaFormat)); break; case 0x0F: // tone portamento m.command = CMD_TONEPORTAMENTO; if(!sinariaFormat) m.param >>= 2; break; case 0x11: // glissando control - m.command = CMD_S3MCMDEX; - m.param = 0x10 | (m.param & 0x01); + m.SetEffectCommand(CMD_S3MCMDEX, 0x10 | (m.param & 0x01)); break; case 0x10: // tone portamento + volslide up - m.command = CMD_TONEPORTAVOL; - m.param = m.param & 0xF0; + m.SetEffectCommand(CMD_TONEPORTAVOL, m.param & 0xF0); break; case 0x12: // tone portamento + volslide down - m.command = CMD_TONEPORTAVOL; - m.param = (m.param >> 4) & 0x0F; + m.SetEffectCommand(CMD_TONEPORTAVOL, (m.param >> 4) & 0x0F); break; case 0x13: // ScreamTracker command S - actually hangs / crashes MASI @@ -749,12 +743,10 @@ m.command = CMD_VIBRATO; break; case 0x16: // vibrato waveform - m.command = CMD_S3MCMDEX; - m.param = 0x30 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0x30 | (m.param & 0x0F)); break; case 0x17: // vibrato + volslide up - m.command = CMD_VIBRATOVOL; - m.param = 0xF0 | m.param; + m.SetEffectCommand(CMD_VIBRATOVOL, 0xF0 | m.param); break; case 0x18: // vibrato + volslide down m.command = CMD_VIBRATOVOL; @@ -765,47 +757,40 @@ m.command = CMD_TREMOLO; break; case 0x20: // tremolo waveform - m.command = CMD_S3MCMDEX; - m.param = 0x40 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0x40 | (m.param & 0x0F)); break; // Sample commands case 0x29: // 3-byte offset - we only support the middle byte. - m.command = CMD_OFFSET; - m.param = rowChunk.ReadArray<uint8, 2>()[0]; + m.SetEffectCommand(CMD_OFFSET, rowChunk.ReadArray<uint8, 2>()[0]); break; case 0x2A: // retrigger m.command = CMD_RETRIG; break; case 0x2B: // note cut - m.command = CMD_S3MCMDEX; - m.param = 0xC0 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0xC0 | (m.param & 0x0F)); break; case 0x2C: // note delay - m.command = CMD_S3MCMDEX; - m.param = 0xD0 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0xD0 | (m.param & 0x0F)); break; // Position change case 0x33: // position jump - MASI seems to ignore this command, and CONVERT.EXE never writes it - m.command = CMD_POSITIONJUMP; - m.param /= 2u; // actually it is probably just an index into the order table + // Parameter actually is probably just an index into the order table + m.SetEffectCommand(CMD_POSITIONJUMP, m.param / 2u); rowChunk.Skip(1); break; case 0x34: // pattern break - m.command = CMD_PATTERNBREAK; // When converting from S3M, the parameter is double-BDC-encoded (wtf!) // When converting from MOD, it's in binary. // MASI ignores the parameter entirely, and so do we. - m.param = 0; + m.SetEffectCommand(CMD_PATTERNBREAK, 0); break; case 0x35: // loop pattern - m.command = CMD_S3MCMDEX; - m.param = 0xB0 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0xB0 | (m.param & 0x0F)); break; case 0x36: // pattern delay - m.command = CMD_S3MCMDEX; - m.param = 0xE0 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0xE0 | (m.param & 0x0F)); break; // speed change @@ -821,18 +806,15 @@ m.command = CMD_ARPEGGIO; break; case 0x48: // set finetune - m.command = CMD_S3MCMDEX; - m.param = 0x20 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0x20 | (m.param & 0x0F)); break; case 0x49: // set balance - m.command = CMD_S3MCMDEX; - m.param = 0x80 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0x80 | (m.param & 0x0F)); break; default: m.command = CMD_NONE; break; - } } } @@ -1180,33 +1162,27 @@ { // Volslides case 0x01: // fine volslide up - m.command = CMD_VOLUMESLIDE; - m.param = (m.param << 4) | 0x0F; + m.SetEffectCommand(CMD_VOLUMESLIDE, (m.param << 4) | 0x0F); break; case 0x02: // volslide up - m.command = CMD_VOLUMESLIDE; - m.param = (m.param << 4) & 0xF0; + m.SetEffectCommand(CMD_VOLUMESLIDE, (m.param << 4) & 0xF0); break; case 0x03: // fine voslide down - m.command = CMD_VOLUMESLIDE; - m.param = 0xF0 | m.param; + m.SetEffectCommand(CMD_VOLUMESLIDE, 0xF0 | m.param); break; case 0x04: // volslide down - m.command = CMD_VOLUMESLIDE; - m.param = m.param & 0x0F; + m.SetEffectCommand(CMD_VOLUMESLIDE, m.param & 0x0F); break; // Portamento case 0x0A: // fine portamento up - m.command = CMD_PORTAMENTOUP; - m.param |= 0xF0; + m.SetEffectCommand(CMD_PORTAMENTOUP, 0xF0 | m.param); break; case 0x0B: // portamento down m.command = CMD_PORTAMENTOUP; break; case 0x0C: // fine portamento down - m.command = CMD_PORTAMENTODOWN; - m.param |= 0xF0; + m.SetEffectCommand(CMD_PORTAMENTODOWN, m.param | 0xF0); break; case 0x0D: // portamento down m.command = CMD_PORTAMENTODOWN; @@ -1215,16 +1191,13 @@ m.command = CMD_TONEPORTAMENTO; break; case 0x0F: // glissando control (note: this can be found in the Odyssey music from Silverball but it seems like it was actually a literal translation from MOD effect F) - m.command = CMD_S3MCMDEX; - m.param |= 0x10; + m.SetEffectCommand(CMD_S3MCMDEX, 0x10 | (m.param & 0x0F)); break; case 0x10: // tone portamento + volslide up - m.command = CMD_TONEPORTAVOL; - m.param <<= 4; + m.SetEffectCommand(CMD_TONEPORTAVOL, m.param << 4); break; case 0x11: // tone portamento + volslide down - m.command = CMD_TONEPORTAVOL; - m.param &= 0x0F; + m.SetEffectCommand(CMD_TONEPORTAVOL, m.param & 0x0F); break; // Vibrato @@ -1232,16 +1205,13 @@ m.command = CMD_VIBRATO; break; case 0x15: // vibrato waveform - m.command = CMD_S3MCMDEX; - m.param |= 0x30; + m.SetEffectCommand(CMD_S3MCMDEX, 0x30 | (m.param & 0x0F)); break; case 0x16: // vibrato + volslide up - m.command = CMD_VIBRATOVOL; - m.param <<= 4; + m.SetEffectCommand(CMD_VIBRATOVOL, m.param << 4); break; case 0x17: // vibrato + volslide down - m.command = CMD_VIBRATOVOL; - m.param &= 0x0F; + m.SetEffectCommand(CMD_VIBRATOVOL, m.param & 0x0F); break; // Tremolo @@ -1249,18 +1219,15 @@ m.command = CMD_TREMOLO; break; case 0x1F: // tremolo waveform - m.command = CMD_S3MCMDEX; - m.param |= 0x40; + m.SetEffectCommand(CMD_S3MCMDEX, 0x40 | (m.param & 0x0F)); break; // Sample commands case 0x28: // 3-byte offset - we only support the middle byte. - m.command = CMD_OFFSET; - m.param = patternChunk.ReadArray<uint8, 2>()[0]; + m.SetEffectCommand(CMD_OFFSET, patternChunk.ReadArray<uint8, 2>()[0]); break; case 0x29: // retrigger - m.command = CMD_RETRIG; - m.param &= 0x0F; + m.SetEffectCommand(CMD_RETRIG, m.param & 0x0F); break; case 0x2A: // note cut m.command = CMD_S3MCMDEX; @@ -1280,8 +1247,7 @@ m.param |= 0xC0; break; case 0x2B: // note delay - m.command = CMD_S3MCMDEX; - m.param |= 0xD0; + m.SetEffectCommand(CMD_S3MCMDEX, 0xD0 | (m.param & 0x0F)); break; // Position change @@ -1292,12 +1258,10 @@ m.command = CMD_PATTERNBREAK; break; case 0x34: // loop pattern - m.command = CMD_S3MCMDEX; - m.param |= 0xB0; + m.SetEffectCommand(CMD_S3MCMDEX, 0xB0 | (m.param & 0x0F)); break; case 0x35: // pattern delay - m.command = CMD_S3MCMDEX; - m.param |= 0xE0; + m.SetEffectCommand(CMD_S3MCMDEX, 0xE0 | (m.param & 0x0F)); break; // speed change @@ -1313,12 +1277,10 @@ m.command = CMD_ARPEGGIO; break; case 0x47: // set finetune - m.command = CMD_S3MCMDEX; - m.param = 0x20 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0x20 | (m.param & 0x0F)); break; case 0x48: // set balance (panning?) - m.command = CMD_S3MCMDEX; - m.param = 0x80 | (m.param & 0x0F); + m.SetEffectCommand(CMD_S3MCMDEX, 0x80 | (m.param & 0x0F)); break; default: @@ -1327,11 +1289,6 @@ } } } - // Pattern break for short patterns (so saving the modules as S3M won't break it) - if(patternHeader.numRows != 64) - { - Patterns[pat].WriteEffect(EffectWriter(CMD_PATTERNBREAK, 0).Row(patternHeader.numRows - 1).RetryNextRow()); - } } } |
From: <sv...@op...> - 2024-10-23 20:50:18
|
Author: sagamusix Date: Wed Oct 23 22:50:05 2024 New Revision: 21912 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21912 Log: [Fix] Avoid crash with modules that have no time signature set (https://bugs.openmpt.org/view.php?id=1833). Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/soundlib/PlayState.cpp Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Mon Oct 21 23:15:24 2024 (r21911) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Wed Oct 23 22:50:05 2024 (r21912) @@ -411,6 +411,7 @@ sndFile.m_nDefaultRowsPerBeat = std::min(static_cast<ROWINDEX>(GetDlgItemInt(IDC_ROWSPERBEAT)), MAX_ROWS_PER_BEAT); sndFile.m_nDefaultRowsPerMeasure = std::min(static_cast<ROWINDEX>(GetDlgItemInt(IDC_ROWSPERMEASURE)), MAX_ROWS_PER_BEAT); + sndFile.m_PlayState.UpdateTimeSignature(sndFile); sel = m_TempoModeBox.GetCurSel(); if(sel >= 0) Modified: trunk/OpenMPT/soundlib/PlayState.cpp ============================================================================== --- trunk/OpenMPT/soundlib/PlayState.cpp Mon Oct 21 23:15:24 2024 (r21911) +++ trunk/OpenMPT/soundlib/PlayState.cpp Wed Oct 23 22:50:05 2024 (r21912) @@ -50,10 +50,12 @@ void PlayState::UpdatePPQ(bool patternTransition) noexcept { - if(m_lTotalSampleCount > 0 && (patternTransition || !(m_nRow % m_nCurrentRowsPerMeasure))) + ROWINDEX rpm = m_nCurrentRowsPerMeasure ? m_nCurrentRowsPerMeasure : 4; + ROWINDEX rpb = m_nCurrentRowsPerBeat ? m_nCurrentRowsPerBeat : 1; + if(m_lTotalSampleCount > 0 && (patternTransition || !(m_nRow % rpm))) { // Pattern end = end of measure, so round up PPQ to the next full measure - m_ppqPosBeat += (m_nCurrentRowsPerMeasure + (m_nCurrentRowsPerBeat - 1)) / m_nCurrentRowsPerBeat; + m_ppqPosBeat += (rpm + (rpb - 1)) / rpb; m_ppqPosFract = 0; } } |
From: <sv...@op...> - 2024-10-21 21:15:36
|
Author: sagamusix Date: Mon Oct 21 23:15:24 2024 New Revision: 21911 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21911 Log: [Ref] J2B: Small cleanup. Modified: trunk/OpenMPT/soundlib/load_j2b.cpp Modified: trunk/OpenMPT/soundlib/load_j2b.cpp ============================================================================== --- trunk/OpenMPT/soundlib/load_j2b.cpp Mon Oct 21 21:53:53 2024 (r21910) +++ trunk/OpenMPT/soundlib/load_j2b.cpp Mon Oct 21 23:15:24 2024 (r21911) @@ -6,7 +6,7 @@ * It seems like no other game used the AM(FF) format. * RIFF AM is the newer version of the format, generally following the RIFF "standard" closely. * Authors: Johannes Schultz (OpenMPT port, reverse engineering + loader implementation of the instrument format) - * kode54 (foo_dumb - this is almost a complete port of his code, thanks) + * Largely based on the J2B loader of kode54's DUMB fork * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ @@ -43,17 +43,18 @@ { // Magic Bytes // 32-Bit J2B header identifiers - enum : uint32 { + enum : uint32 + { magicDEADBEAF = 0xAFBEADDEu, magicDEADBABE = 0xBEBAADDEu }; - char signature[4]; // MUSE - uint32le deadbeaf; // 0xDEADBEAF (AM) or 0xDEADBABE (AMFF) - uint32le fileLength; // complete filesize - uint32le crc32; // checksum of the compressed data block - uint32le packedLength; // length of the compressed data block - uint32le unpackedLength; // length of the decompressed module + char signature[4]; // MUSE + uint32le deadbeaf; // 0xDEADBEAF (AM) or 0xDEADBABE (AMFF) + uint32le fileLength; // complete filesize + uint32le crc32; // checksum of the compressed data block + uint32le packedLength; // length of the compressed data block + uint32le unpackedLength; // length of the decompressed module }; MPT_BINARY_STRUCT(J2BFileHeader, 24) @@ -66,21 +67,21 @@ // 32-Bit chunk identifiers enum ChunkIdentifiers { - idRIFF = MagicLE("RIFF"), - idAMFF = MagicLE("AMFF"), - idAM__ = MagicLE("AM "), - idMAIN = MagicLE("MAIN"), - idINIT = MagicLE("INIT"), - idORDR = MagicLE("ORDR"), - idPATT = MagicLE("PATT"), - idINST = MagicLE("INST"), - idSAMP = MagicLE("SAMP"), - idAI__ = MagicLE("AI "), - idAS__ = MagicLE("AS "), + idRIFF = MagicLE("RIFF"), + idAMFF = MagicLE("AMFF"), + idAM__ = MagicLE("AM "), + idMAIN = MagicLE("MAIN"), + idINIT = MagicLE("INIT"), + idORDR = MagicLE("ORDR"), + idPATT = MagicLE("PATT"), + idINST = MagicLE("INST"), + idSAMP = MagicLE("SAMP"), + idAI__ = MagicLE("AI "), + idAS__ = MagicLE("AS "), }; - uint32le id; // See ChunkIdentifiers - uint32le length; // Chunk size without header + uint32le id; // See ChunkIdentifiers + uint32le length; // Chunk size without header size_t GetLength() const { @@ -110,8 +111,8 @@ uint8le channels; uint8le speed; uint8le tempo; - uint16le minPeriod; // 16x Amiga periods, but we should ignore them - otherwise some high notes in Medivo.j2b won't sound correct. - uint16le maxPeriod; // Ditto + uint16le minPeriod; // 16x Amiga periods, but we should ignore them - otherwise some high notes in Medivo.j2b won't sound correct. + uint16le maxPeriod; // Ditto uint8le globalvolume; }; @@ -132,14 +133,14 @@ struct EnvPoint { uint16le tick; - uint8le value; // 0...64 + uint8le value; // 0...64 }; - uint8le envFlags; // high nibble = pan env flags, low nibble = vol env flags (both nibbles work the same way) - uint8le envNumPoints; // high nibble = pan env length, low nibble = vol env length - uint8le envSustainPoints; // you guessed it... high nibble = pan env sustain point, low nibble = vol env sustain point - uint8le envLoopStarts; // I guess you know the pattern now. - uint8le envLoopEnds; // same here. + uint8le envFlags; // high nibble = pan env flags, low nibble = vol env flags (both nibbles work the same way) + uint8le envNumPoints; // high nibble = pan env length, low nibble = vol env length + uint8le envSustainPoints; // you guessed it... high nibble = pan env sustain point, low nibble = vol env sustain point + uint8le envLoopStarts; // I guess you know the pattern now. + uint8le envLoopEnds; // same here. EnvPoint volEnv[10]; EnvPoint panEnv[10]; @@ -191,8 +192,8 @@ // AMFF instrument header (old format) struct AMFFInstrumentHeader { - uint8le unknown; // 0x00 - uint8le index; // actual instrument number + uint8le unknown; // 0x00 + uint8le index; // actual instrument number char name[28]; uint8le numSamples; uint8le sampleMap[120]; @@ -229,16 +230,16 @@ // Sample flags (also used for RIFF AM) enum SampleFlags { - smp16Bit = 0x04, - smpLoop = 0x08, - smpPingPong = 0x10, - smpPanning = 0x20, - smpExists = 0x80, + smp16Bit = 0x04, + smpLoop = 0x08, + smpPingPong = 0x10, + smpPanning = 0x20, + smpExists = 0x80, // some flags are still missing... what is e.g. 0x8000? }; - uint32le id; // "SAMP" - uint32le chunkSize; // header + sample size + uint32le id; // "SAMP" + uint32le chunkSize; // header + sample size char name[28]; uint8le pan; uint8le volume; @@ -363,16 +364,15 @@ } }; -MPT_BINARY_STRUCT(AMEnvelope::EnvPoint, 4) MPT_BINARY_STRUCT(AMEnvelope, 48) // AM instrument header (new format) struct AMInstrumentHeader { - uint32le headSize; // Header size (i.e. the size of this struct) - uint8le unknown1; // 0x00 - uint8le index; // Actual instrument number + uint32le headSize; // Header size (i.e. the size of this struct) + uint8le unknown1; // 0x00 + uint8le index; // Actual instrument number char name[32]; uint8le sampleMap[128]; uint8le vibratoType; @@ -415,12 +415,12 @@ // AM sample header (new format) struct AMSampleHeader { - uint32le headSize; // Header size (i.e. the size of this struct), apparently not including headSize. + uint32le headSize; // Header size (i.e. the size of this struct), apparently not including headSize. char name[32]; uint16le pan; uint16le volume; uint16le flags; - uint16le unknown; // 0x0000 / 0x0080? + uint16le unknown; // 0x0000 / 0x0080? uint32le length; uint32le loopStart; uint32le loopEnd; @@ -490,30 +490,24 @@ enum { - rowDone = 0, // Advance to next row - channelMask = 0x1F, // Mask for retrieving channel information - volFlag = 0x20, // Volume effect present - noteFlag = 0x40, // Note + instr present - effectFlag = 0x80, // Effect information present - dataFlag = 0xE0, // Channel data present + rowDone = 0x00, // Advance to next row + channelMask = 0x1F, // Mask for retrieving channel information + volFlag = 0x20, // Volume effect present + noteFlag = 0x40, // Note + instr present + effectFlag = 0x80, // Effect information present + dataFlag = 0xE0, // Channel data present }; if(chunk.NoBytesLeft()) - { return false; - } - ROWINDEX numRows = Clamp(static_cast<ROWINDEX>(chunk.ReadUint8()) + 1, ROWINDEX(1), MAX_PATTERN_ROWS); + const ROWINDEX numRows = std::min(static_cast<ROWINDEX>(chunk.ReadUint8() + 1), MAX_PATTERN_ROWS); if(!sndFile.Patterns.Insert(pat, numRows)) return false; - const CHANNELINDEX channels = sndFile.GetNumChannels(); - if(channels == 0) - return false; - + const CHANNELINDEX lastChannel = sndFile.GetNumChannels() - 1; ROWINDEX row = 0; - while(row < numRows && chunk.CanRead(1)) { const uint8 flags = chunk.ReadUint8(); @@ -523,98 +517,95 @@ row++; continue; } + if(!(flags & dataFlag)) + continue; - ModCommand &m = *sndFile.Patterns[pat].GetpModCommand(row, std::min(static_cast<CHANNELINDEX>(flags & channelMask), static_cast<CHANNELINDEX>(channels - 1))); + ModCommand &m = *sndFile.Patterns[pat].GetpModCommand(row, std::min(static_cast<CHANNELINDEX>(flags & channelMask), lastChannel)); - if(flags & dataFlag) + if(flags & effectFlag) // effect { - if(flags & effectFlag) // effect + const auto [param, command] = chunk.ReadArray<uint8, 2>(); + if(command < std::size(amEffTrans)) + { + m.SetEffectCommand(amEffTrans[command], param); + } else { - m.param = chunk.ReadUint8(); - uint8 command = chunk.ReadUint8(); - - if(command < std::size(amEffTrans)) - { - // command translation - m.command = amEffTrans[command]; - } else - { #ifdef J2B_LOG - MPT_LOG_GLOBAL(LogDebug, "J2B", MPT_UFORMAT("J2B: Unknown command: 0x{}, param 0x{}")(mpt::ufmt::HEX0<2>(command), mpt::ufmt::HEX0<2>(m.param))); + MPT_LOG_GLOBAL(LogDebug, "J2B", MPT_UFORMAT("J2B: Unknown command: 0x{}, param 0x{}")(mpt::ufmt::HEX0<2>(command), mpt::ufmt::HEX0<2>(m.param))); #endif + m.command = CMD_NONE; + } + + // Handling special commands + switch(m.command) + { + case CMD_ARPEGGIO: + if(m.param == 0) m.command = CMD_NONE; + break; + case CMD_VOLUME: + if(m.volcmd == VOLCMD_NONE && !(flags & volFlag)) + { + m.SetVolumeCommand(VOLCMD_VOLUME, Clamp(m.param, uint8(0), uint8(64))); m.command = CMD_NONE; } - - // Handling special commands - switch(m.command) + break; + case CMD_TONEPORTAVOL: + case CMD_VIBRATOVOL: + case CMD_VOLUMESLIDE: + case CMD_GLOBALVOLSLIDE: + case CMD_PANNINGSLIDE: + if(m.param & 0xF0) + m.param &= 0xF0; + break; + case CMD_PANNING8: + if(m.param <= 0x80) + m.param = mpt::saturate_cast<ModCommand::PARAM>(m.param * 2); + else if(m.param == 0xA4) + m.SetEffectCommand(CMD_S3MCMDEX, 0x91u); + break; + case CMD_PATTERNBREAK: + m.param = static_cast<ModCommand::PARAM>(((m.param >> 4) * 10u) + (m.param & 0x0Fu)); + break; + case CMD_MODCMDEX: + m.ExtendedMODtoS3MEffect(); + break; + case CMD_TEMPO: + if(m.param <= 0x1F) + m.command = CMD_SPEED; + break; + case CMD_XFINEPORTAUPDOWN: + switch(m.param & 0xF0) { - case CMD_ARPEGGIO: - if(m.param == 0) m.command = CMD_NONE; - break; - case CMD_VOLUME: - if(m.volcmd == VOLCMD_NONE) - { - m.volcmd = VOLCMD_VOLUME; - m.vol = Clamp(m.param, uint8(0), uint8(64)); - m.command = CMD_NONE; - m.param = 0; - } + case 0x10: + m.command = CMD_PORTAMENTOUP; break; - case CMD_TONEPORTAVOL: - case CMD_VIBRATOVOL: - case CMD_VOLUMESLIDE: - case CMD_GLOBALVOLSLIDE: - case CMD_PANNINGSLIDE: - if (m.param & 0xF0) m.param &= 0xF0; - break; - case CMD_PANNING8: - if(m.param <= 0x80) m.param = mpt::saturate_cast<ModCommand::PARAM>(m.param * 2); - else if(m.param == 0xA4) m.SetEffectCommand(CMD_S3MCMDEX, 0x91u); - break; - case CMD_PATTERNBREAK: - m.param = static_cast<ModCommand::PARAM>(((m.param >> 4) * 10u) + (m.param & 0x0Fu)); - break; - case CMD_MODCMDEX: - m.ExtendedMODtoS3MEffect(); - break; - case CMD_TEMPO: - if(m.param <= 0x1F) m.command = CMD_SPEED; - break; - case CMD_XFINEPORTAUPDOWN: - switch(m.param & 0xF0) - { - case 0x10: - m.command = CMD_PORTAMENTOUP; - break; - case 0x20: - m.command = CMD_PORTAMENTODOWN; - break; - } - m.param = (m.param & 0x0F) | 0xE0; - break; - default: + case 0x20: + m.command = CMD_PORTAMENTODOWN; break; } + m.param = (m.param & 0x0F) | 0xE0; + break; + default: + break; } + } - if (flags & noteFlag) // note + ins - { - const auto [instr, note] = chunk.ReadArray<uint8, 2>(); - m.instr = instr; - m.note = note; - if(m.note == 0x80) m.note = NOTE_KEYOFF; - else if(m.note > 0x80) m.note = NOTE_FADE; // I guess the support for IT "note fade" notes was not intended in mod2j2b, but hey, it works! :-D - } + if(flags & noteFlag) // note + ins + { + const auto [instr, note] = chunk.ReadArray<uint8, 2>(); + m.instr = instr; + m.note = note; + if(m.note == 0x80) + m.note = NOTE_KEYOFF; + else if(m.note > 0x80) + m.note = NOTE_FADE; // I guess the support for IT "note fade" notes was not intended in mod2j2b, but hey, it works! :-D + } - if (flags & volFlag) // volume - { - m.volcmd = VOLCMD_VOLUME; - m.vol = chunk.ReadUint8(); - if(isAM) - { - m.vol = static_cast<ModCommand::VOL>(m.vol * 64u / 127u); - } - } + if(flags & volFlag) // volume + { + m.SetVolumeCommand(VOLCMD_VOLUME, chunk.ReadUint8()); + if(isAM) + m.vol = static_cast<ModCommand::VOL>(m.vol * 64u / 127u); } } @@ -727,7 +718,7 @@ FileReader chunkMain(chunks.GetChunk(mainChunkID)); AMFFMainChunk mainChunk; - if(!chunkMain.IsValid() + if(!chunkMain.IsValid() || !chunkMain.ReadStruct(mainChunk) || mainChunk.channels < 1 || !chunkMain.CanRead(mainChunk.channels)) |
From: <sv...@op...> - 2024-10-21 19:54:05
|
Author: sagamusix Date: Mon Oct 21 21:53:53 2024 New Revision: 21910 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21910 Log: [Ref] More GetNumSamples(), less m_nSamples. Modified: trunk/OpenMPT/mptrack/CleanupSong.cpp trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/SampleGenerator.cpp trunk/OpenMPT/mptrack/mod2midi.cpp Modified: trunk/OpenMPT/mptrack/CleanupSong.cpp ============================================================================== --- trunk/OpenMPT/mptrack/CleanupSong.cpp Mon Oct 21 20:16:04 2024 (r21909) +++ trunk/OpenMPT/mptrack/CleanupSong.cpp Mon Oct 21 21:53:53 2024 (r21910) @@ -784,7 +784,7 @@ return false; } - for(SAMPLEINDEX smp = 1; smp <= sndFile.m_nSamples; smp++) + for(SAMPLEINDEX smp = 1; smp <= sndFile.GetNumSamples(); smp++) { ModSample &sample = sndFile.GetSample(smp); Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp Mon Oct 21 20:16:04 2024 (r21909) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp Mon Oct 21 21:53:53 2024 (r21910) @@ -676,11 +676,11 @@ if (c != ' ') { n = (10 * pIns->Keyboard[m_nNote] + (c - '0')) % 10000; - if ((n >= MAX_SAMPLES) || ((sndFile.m_nSamples < 1000) && (n >= 1000))) + if ((n >= MAX_SAMPLES) || ((sndFile.GetNumSamples() < 1000) && (n >= 1000))) n = (n % 1000); - if ((n >= MAX_SAMPLES) || ((sndFile.m_nSamples < 100) && (n >= 100))) + if ((n >= MAX_SAMPLES) || ((sndFile.GetNumSamples() < 100) && (n >= 100))) n = (n % 100); - else if ((n > 31) && (sndFile.m_nSamples < 32) && (n % 10)) + else if ((n > 31) && (sndFile.GetNumSamples() < 32) && (n % 10)) n = (n % 10); } Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp Mon Oct 21 20:16:04 2024 (r21909) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp Mon Oct 21 21:53:53 2024 (r21910) @@ -706,7 +706,7 @@ if(n >= 0) { n = static_cast<int>(m_CbnInstrument.GetItemData(n)); - int nmax = (m_sndFile.m_nInstruments) ? m_sndFile.m_nInstruments : m_sndFile.m_nSamples; + int nmax = m_sndFile.GetNumInstruments() ? m_sndFile.GetNumInstruments() : m_sndFile.GetNumSamples(); if((n >= 0) && (n <= nmax) && (n != (int)m_nInstrument)) { m_nInstrument = static_cast<INSTRUMENTINDEX>(n); Modified: trunk/OpenMPT/mptrack/SampleGenerator.cpp ============================================================================== --- trunk/OpenMPT/mptrack/SampleGenerator.cpp Mon Oct 21 20:16:04 2024 (r21909) +++ trunk/OpenMPT/mptrack/SampleGenerator.cpp Mon Oct 21 21:53:53 2024 (r21910) @@ -110,7 +110,7 @@ // Actual render loop. bool CSampleGenerator::RenderSample(CSoundFile *pSndFile, SAMPLEINDEX nSample) { - if(!CanRenderSample() || !TestExpression() || (pSndFile == nullptr) || (nSample < 1) || (nSample > pSndFile->m_nSamples)) return false; + if(!CanRenderSample() || !TestExpression() || (pSndFile == nullptr) || (nSample < 1) || (nSample > pSndFile->GetNumSamples())) return false; // allocate a new buffer sample_buffer = (mu::value_type *)malloc(sample_length * sizeof(mu::value_type)); Modified: trunk/OpenMPT/mptrack/mod2midi.cpp ============================================================================== --- trunk/OpenMPT/mptrack/mod2midi.cpp Mon Oct 21 20:16:04 2024 (r21909) +++ trunk/OpenMPT/mptrack/mod2midi.cpp Mon Oct 21 21:53:53 2024 (r21910) @@ -454,7 +454,7 @@ } if(!m_wasInstrumentMode) { - m_sndFile.m_nInstruments = std::min<INSTRUMENTINDEX>(m_sndFile.m_nSamples, MAX_INSTRUMENTS - 1u); + m_sndFile.m_nInstruments = std::min<INSTRUMENTINDEX>(m_sndFile.GetNumSamples(), MAX_INSTRUMENTS - 1u); } m_tracks.reserve(m_sndFile.GetNumInstruments() + 1); |
From: <sv...@op...> - 2024-10-21 18:16:16
|
Author: sagamusix Date: Mon Oct 21 20:16:04 2024 New Revision: 21909 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21909 Log: Merged revision(s) 21908 from trunk/OpenMPT: [Mod] Find MPT Hacks: Warn about pattern lengths less than 32 rows. Under some circumstances they can actually crash Impulse Tracker (see https://github.com/OpenMPT/openmpt/pull/27). [Imp] IT: When saving in compatibility export, restrict pattern sizes to 32-200 rows. If the original pattern was shorter than 32 rows, pattern break commands are inserted when required. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/soundlib/Load_it.cpp branches/OpenMPT-1.31/soundlib/mod_specifications.cpp Modified: branches/OpenMPT-1.31/soundlib/Load_it.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/Load_it.cpp Mon Oct 21 20:14:00 2024 (r21908) +++ branches/OpenMPT-1.31/soundlib/Load_it.cpp Mon Oct 21 20:16:04 2024 (r21909) @@ -1749,6 +1749,10 @@ // Write pattern header ROWINDEX writeRows = mpt::saturate_cast<uint16>(Patterns[pat].GetNumRows()); + if(compatibilityExport) + writeRows = std::clamp(writeRows, ROWINDEX(32), ROWINDEX(200)); + if(writeRows != Patterns[pat].GetNumRows()) + AddToLog(LogWarning, MPT_UFORMAT("Warning: Pattern {} was resized from {} to {} rows.")(pat, Patterns[pat].GetNumRows(), writeRows)); uint16 writeSize = 0; uint16le patinfo[4]; patinfo[0] = 0; @@ -1765,11 +1769,12 @@ // Maximum 7 bytes per cell, plus end of row marker, so this buffer is always large enough to cover one row. std::vector<uint8> buf(7 * maxChannels + 1); - for(ROWINDEX row = 0; row < writeRows; row++) + const ROWINDEX readRows = std::min(writeRows, Patterns[pat].GetNumRows()); + for(ROWINDEX row = 0; row < readRows; row++) { uint32 len = 0; const ModCommand *m = Patterns[pat].GetpModCommand(row, 0); - + bool writePatternBreak = (readRows < writeRows && row + 1 == readRows && !Patterns[pat].RowHasJump(row)); for(CHANNELINDEX ch = 0; ch < maxChannels; ch++, m++) { // Skip mptm-specific notes. @@ -1823,6 +1828,12 @@ S3MSaveConvert(*m, command, param, true, compatibilityExport); if (command) b |= 8; } + if(writePatternBreak && !(b & 8)) + { + b |= 8; + command = 'C' ^ 0x40; + writePatternBreak = false; + } // Packing information if (b) { @@ -1905,11 +1916,25 @@ break; } else { - dwPos += len; - writeSize += (uint16)len; + writeSize += static_cast<uint16>(len); mpt::IO::WriteRaw(f, buf.data(), len); } + if(writePatternBreak) + { + // Didn't manage to put a pattern break, so put it on the next row instead. + const uint8 patternBreak[] = {1 | IT_bitmask_patternChanEnabled_c, 8, 'C' ^ 0x40, 0}; + mpt::IO::Write(f, patternBreak); + writeSize += sizeof(patternBreak); + } + } + if(readRows < writeRows) + { + // Invent empty rows at end (if we end up here, the pattern is very short and we don't have to care about writeSize overflowing the 16-bit limit) + writeSize += static_cast<uint16>(writeRows - readRows); + buf.assign(writeRows - readRows, 0); + mpt::IO::Write(f, buf); } + dwPos += writeSize; mpt::IO::SeekAbsolute(f, dwPatPos); patinfo[0] = writeSize; Modified: branches/OpenMPT-1.31/soundlib/mod_specifications.cpp ============================================================================== --- branches/OpenMPT-1.31/soundlib/mod_specifications.cpp Mon Oct 21 20:14:00 2024 (r21908) +++ branches/OpenMPT-1.31/soundlib/mod_specifications.cpp Mon Oct 21 20:16:04 2024 (r21909) @@ -327,7 +327,7 @@ 255, // Max tempo 1, // Min Speed 255, // Max Speed - 1, // Min pattern rows + 32, // Min pattern rows 200, // Max pattern rows 25, // Max mod name length 25, // Max sample name length |
From: <sv...@op...> - 2024-10-21 18:14:12
|
Author: sagamusix Date: Mon Oct 21 20:14:00 2024 New Revision: 21908 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21908 Log: [Mod] Find MPT Hacks: Warn about pattern lengths less than 32 rows. Under some circumstances they can actually crash Impulse Tracker (see https://github.com/OpenMPT/openmpt/pull/27). [Imp] IT: When saving in compatibility export, restrict pattern sizes to 32-200 rows. If the original pattern was shorter than 32 rows, pattern break commands are inserted when required. Modified: trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/mod_specifications.cpp Modified: trunk/OpenMPT/soundlib/Load_it.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp Mon Oct 21 18:57:00 2024 (r21907) +++ trunk/OpenMPT/soundlib/Load_it.cpp Mon Oct 21 20:14:00 2024 (r21908) @@ -1733,6 +1733,10 @@ // Write pattern header ROWINDEX writeRows = mpt::saturate_cast<uint16>(Patterns[pat].GetNumRows()); + if(compatibilityExport) + writeRows = std::clamp(writeRows, ROWINDEX(32), ROWINDEX(200)); + if(writeRows != Patterns[pat].GetNumRows()) + AddToLog(LogWarning, MPT_UFORMAT("Warning: Pattern {} was resized from {} to {} rows.")(pat, Patterns[pat].GetNumRows(), writeRows)); uint16 writeSize = 0; uint16le patinfo[4]; patinfo[0] = 0; @@ -1749,11 +1753,12 @@ // Maximum 7 bytes per cell, plus end of row marker, so this buffer is always large enough to cover one row. std::vector<uint8> buf(7 * maxChannels + 1); - for(ROWINDEX row = 0; row < writeRows; row++) + const ROWINDEX readRows = std::min(writeRows, Patterns[pat].GetNumRows()); + for(ROWINDEX row = 0; row < readRows; row++) { uint32 len = 0; const ModCommand *m = Patterns[pat].GetpModCommand(row, 0); - + bool writePatternBreak = (readRows < writeRows && row + 1 == readRows && !Patterns[pat].RowHasJump(row)); for(CHANNELINDEX ch = 0; ch < maxChannels; ch++, m++) { // Skip mptm-specific notes. @@ -1807,6 +1812,12 @@ S3MSaveConvert(*m, command, param, true, compatibilityExport); if (command) b |= 8; } + if(writePatternBreak && !(b & 8)) + { + b |= 8; + command = 'C' ^ 0x40; + writePatternBreak = false; + } // Packing information if (b) { @@ -1889,11 +1900,25 @@ break; } else { - dwPos += len; - writeSize += (uint16)len; + writeSize += static_cast<uint16>(len); mpt::IO::WriteRaw(f, buf.data(), len); } + if(writePatternBreak) + { + // Didn't manage to put a pattern break, so put it on the next row instead. + const uint8 patternBreak[] = {1 | IT_bitmask_patternChanEnabled_c, 8, 'C' ^ 0x40, 0}; + mpt::IO::Write(f, patternBreak); + writeSize += sizeof(patternBreak); + } + } + if(readRows < writeRows) + { + // Invent empty rows at end (if we end up here, the pattern is very short and we don't have to care about writeSize overflowing the 16-bit limit) + writeSize += static_cast<uint16>(writeRows - readRows); + buf.assign(writeRows - readRows, 0); + mpt::IO::Write(f, buf); } + dwPos += writeSize; mpt::IO::SeekAbsolute(f, dwPatPos); patinfo[0] = writeSize; Modified: trunk/OpenMPT/soundlib/mod_specifications.cpp ============================================================================== --- trunk/OpenMPT/soundlib/mod_specifications.cpp Mon Oct 21 18:57:00 2024 (r21907) +++ trunk/OpenMPT/soundlib/mod_specifications.cpp Mon Oct 21 20:14:00 2024 (r21908) @@ -323,7 +323,7 @@ 255, // Max tempo 1, // Min Speed 255, // Max Speed - 1, // Min pattern rows + 32, // Min pattern rows 200, // Max pattern rows 25, // Max mod name length 25, // Max sample name length |
From: <sv...@op...> - 2024-10-21 16:57:11
|
Author: sagamusix Date: Mon Oct 21 18:57:00 2024 New Revision: 21907 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21907 Log: Merged revision(s) 21906 from trunk/OpenMPT: [Fix] Update: The tooltip informing the user about new OpenMPT updates could cause a really long hang if the previous OpenMPT session was ended in a minimized window state. As a workaround, don't show the tooltip if the window is minimized. Potentially fixes https://bugs.openmpt.org/view.php?id=1723, https://bugs.openmpt.org/view.php?id=1602, https://bugs.openmpt.org/view.php?id=1725 [Fix] Update: The update tooltip could be cut off if the first line of text was not the longest line. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/mptrack/Mainbar.cpp branches/OpenMPT-1.31/mptrack/UpdateToolTip.cpp Modified: branches/OpenMPT-1.31/mptrack/Mainbar.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/Mainbar.cpp Mon Oct 21 18:55:26 2024 (r21906) +++ branches/OpenMPT-1.31/mptrack/Mainbar.cpp Mon Oct 21 18:57:00 2024 (r21907) @@ -466,6 +466,10 @@ else SetHorizontal(); + // Trying to show the tooltip while the window is minimized hangs the application during TTM_TRACKACTIVATE. + if(!showHighLight || CMainFrame::GetMainFrame()->IsIconic()) + return true; + CRect rect; GetToolBarCtrl().GetRect(ID_UPDATE_AVAILABLE, &rect); CPoint pt = rect.CenterPoint(); @@ -473,13 +477,7 @@ CMainFrame::GetMainFrame()->GetWindowRect(rect); LimitMax(pt.x, rect.right); - if(showHighLight) - { - return m_tooltip.ShowUpdate(*this, newVersion, infoURL, rect, pt, ID_UPDATE_AVAILABLE); - } else - { - return true; - } + return m_tooltip.ShowUpdate(*this, newVersion, infoURL, rect, pt, ID_UPDATE_AVAILABLE); } Modified: branches/OpenMPT-1.31/mptrack/UpdateToolTip.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/UpdateToolTip.cpp Mon Oct 21 18:55:26 2024 (r21906) +++ branches/OpenMPT-1.31/mptrack/UpdateToolTip.cpp Mon Oct 21 18:57:00 2024 (r21907) @@ -32,7 +32,7 @@ m_infoURL = infoURL; - CString message = MPT_CFORMAT("OpenMPT {} has been released.\nClick on this message to install the update,\nor <a>click here to see what's new.</a>")(newVersion); + CString message = MPT_CFORMAT("OpenMPT {} has been released.\nClick this message to install the update,\nor <a>click here to see what's new.</a>")(newVersion); TOOLINFO ti{}; ti.cbSize = TTTOOLINFO_V1_SIZE; ti.uFlags = TTF_TRACK | TTF_PARSELINKS; @@ -44,6 +44,7 @@ return false; SetTitle(TTI_INFO, _T("Update Available")); + SetMaxTipWidth(Util::ScalePixels(400, m_hWnd)); // When using automatic maximum width, only the first line of the text appears to be used for determining the width, causing subsequent lines to be cut off if they are longer.# SendMessage(TTM_TRACKPOSITION, 0, static_cast<LPARAM>(MAKELONG(ptScreen.x, ptScreen.y))); SendMessage(TTM_TRACKACTIVATE, TRUE, reinterpret_cast<LPARAM>(&ti)); return true; |
From: <sv...@op...> - 2024-10-21 16:55:37
|
Author: sagamusix Date: Mon Oct 21 18:55:26 2024 New Revision: 21906 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21906 Log: [Fix] Update: The tooltip informing the user about new OpenMPT updates could cause a really long hang if the previous OpenMPT session was ended in a minimized window state. As a workaround, don't show the tooltip if the window is minimized. Potentially fixes https://bugs.openmpt.org/view.php?id=1723, https://bugs.openmpt.org/view.php?id=1602, https://bugs.openmpt.org/view.php?id=1725 [Fix] Update: The update tooltip could be cut off if the first line of text was not the longest line. Modified: trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/UpdateToolTip.cpp Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Mon Oct 21 18:38:39 2024 (r21905) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Mon Oct 21 18:55:26 2024 (r21906) @@ -470,6 +470,10 @@ else SetHorizontal(); + // Trying to show the tooltip while the window is minimized hangs the application during TTM_TRACKACTIVATE. + if(!showHighLight || CMainFrame::GetMainFrame()->IsIconic()) + return true; + CRect rect; GetToolBarCtrl().GetRect(ID_UPDATE_AVAILABLE, &rect); CPoint pt = rect.CenterPoint(); @@ -477,13 +481,7 @@ CMainFrame::GetMainFrame()->GetWindowRect(rect); LimitMax(pt.x, rect.right); - if(showHighLight) - { - return m_tooltip.ShowUpdate(*this, newVersion, infoURL, rect, pt, ID_UPDATE_AVAILABLE); - } else - { - return true; - } + return m_tooltip.ShowUpdate(*this, newVersion, infoURL, rect, pt, ID_UPDATE_AVAILABLE); } Modified: trunk/OpenMPT/mptrack/UpdateToolTip.cpp ============================================================================== --- trunk/OpenMPT/mptrack/UpdateToolTip.cpp Mon Oct 21 18:38:39 2024 (r21905) +++ trunk/OpenMPT/mptrack/UpdateToolTip.cpp Mon Oct 21 18:55:26 2024 (r21906) @@ -34,7 +34,7 @@ m_infoURL = infoURL; - CString message = MPT_CFORMAT("OpenMPT {} has been released.\nClick on this message to install the update,\nor <a>click here to see what's new.</a>")(newVersion); + CString message = MPT_CFORMAT("OpenMPT {} has been released.\nClick this message to install the update,\nor <a>click here to see what's new.</a>")(newVersion); TOOLINFO ti{}; ti.cbSize = TTTOOLINFO_V1_SIZE; ti.uFlags = TTF_TRACK | TTF_PARSELINKS; @@ -46,6 +46,7 @@ return false; SetTitle(TTI_INFO, _T("Update Available")); + SetMaxTipWidth(Util::ScalePixels(400, m_hWnd)); // When using automatic maximum width, only the first line of the text appears to be used for determining the width, causing subsequent lines to be cut off if they are longer.# SendMessage(TTM_TRACKPOSITION, 0, static_cast<LPARAM>(MAKELONG(ptScreen.x, ptScreen.y))); SendMessage(TTM_TRACKACTIVATE, TRUE, reinterpret_cast<LPARAM>(&ti)); return true; |
From: <sv...@op...> - 2024-10-21 16:38:51
|
Author: manx Date: Mon Oct 21 18:38:39 2024 New Revision: 21905 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21905 Log: [Imp] mpt/base/namespace.hpp: Encode NDEBUG macro into inline namespace to guard against ODR violations. Modified: trunk/OpenMPT/src/mpt/base/namespace.hpp Modified: trunk/OpenMPT/src/mpt/base/namespace.hpp ============================================================================== --- trunk/OpenMPT/src/mpt/base/namespace.hpp Mon Oct 21 14:47:54 2024 (r21904) +++ trunk/OpenMPT/src/mpt/base/namespace.hpp Mon Oct 21 18:38:39 2024 (r21905) @@ -62,10 +62,16 @@ #define MPT_VERSION_ABI_LIBC _ #endif -#define MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) ABI_##a##_##b -#define MPT_BUILD_ABI_NAMESPACE(a, b) MPT_BUILD_ABI_NAMESPACE_IMPL(a, b) +#ifdef NDEBUG +#define MPT_VERSION_ABI_LIBC_DEBUG _ +#else +#define MPT_VERSION_ABI_LIBC_DEBUG D +#endif + +#define MPT_BUILD_ABI_NAMESPACE_IMPL(a, b, c) ABI_##a##_##b +#define MPT_BUILD_ABI_NAMESPACE(a, b, c) MPT_BUILD_ABI_NAMESPACE_IMPL(a, b, c) -#define MPT_ABI_NAMESPACE MPT_BUILD_ABI_NAMESPACE(MPT_VERSION_ABI_OS, MPT_VERSION_ABI_LIBC) +#define MPT_ABI_NAMESPACE MPT_BUILD_ABI_NAMESPACE(MPT_VERSION_ABI_OS, MPT_VERSION_ABI_LIBC, MPT_VERSION_ABI_LIBC_DEBUG) #if !defined(MPT_PROJECT_NAMESPACE) MPT_WARNING("Please #define MPT_PROJECT_NAMESPACE or #define MPT_INLINE_NS in build configuration.") |
From: <sv...@op...> - 2024-10-21 12:48:07
|
Author: sagamusix Date: Mon Oct 21 14:47:54 2024 New Revision: 21904 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21904 Log: [Fix] VST: Report previous PPQ position also after stopping playback. [Var] Fix various typos in comments. Modified: trunk/OpenMPT/mptrack/PatternClipboard.cpp trunk/OpenMPT/mptrack/Vstplug.cpp Modified: trunk/OpenMPT/mptrack/PatternClipboard.cpp ============================================================================== --- trunk/OpenMPT/mptrack/PatternClipboard.cpp Mon Oct 21 09:08:48 2024 (r21903) +++ trunk/OpenMPT/mptrack/PatternClipboard.cpp Mon Oct 21 14:47:54 2024 (r21904) @@ -1130,7 +1130,7 @@ { if(GetFocus() == &m_editNameBox) { - // User pressed enter in clipboard name edit box => just cancel editing + // User pressed ESC in clipboard name edit box => just cancel editing m_editNameBox.DestroyWindow(); return; } Modified: trunk/OpenMPT/mptrack/Vstplug.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp Mon Oct 21 09:08:48 2024 (r21903) +++ trunk/OpenMPT/mptrack/Vstplug.cpp Mon Oct 21 14:47:54 2024 (r21904) @@ -421,7 +421,6 @@ timeInfo.flags |= kVstTransportPlaying; if(sndFile->m_PlayState.m_flags[SONG_PATTERNLOOP]) timeInfo.flags |= kVstTransportCycleActive; - timeInfo.samplePos = sndFile->GetTotalSampleCount(); if(pVstPlugin->m_positionChanged) { timeInfo.flags |= kVstTransportChanged; @@ -430,9 +429,9 @@ } else { timeInfo.flags |= kVstTransportChanged; //just stopped. - timeInfo.samplePos = 0; pVstPlugin->lastBarStartPos = -1.0; } + timeInfo.samplePos = sndFile->GetTotalSampleCount(); if((value & kVstNanosValid)) { timeInfo.flags |= kVstNanosValid; @@ -475,7 +474,7 @@ timeInfo.flags |= kVstTimeSigValid; // Time signature. numerator = rows per beats / rows pear measure (should sound somewhat logical to you). - // the denominator is a bit more tricky, since it cannot be set explicitely. so we just assume quarters for now. + // the denominator is a bit more tricky, since it cannot be set explicitly. so we just assume quarters for now. ROWINDEX rpb = std::max(sndFile->m_PlayState.m_nCurrentRowsPerBeat, ROWINDEX(1)); timeInfo.timeSigNumerator = std::max(sndFile->m_PlayState.m_nCurrentRowsPerMeasure, rpb) / rpb; timeInfo.timeSigDenominator = 4; //std::gcd(pSndFile->m_nCurrentRowsPerMeasure, pSndFile->m_nCurrentRowsPerBeat); @@ -1359,7 +1358,7 @@ } -// Helper function for retreiving parameter name / label / display +// Helper function for retrieving parameter name / label / display CString CVstPlugin::GetParamPropertyString(PlugParamIndex param, Vst::VstOpcodeToPlugin opcode) { if(m_Effect.numParams > 0 && param < m_Effect.numParams) @@ -1463,7 +1462,7 @@ ResetSilence(); - // I think we should only route events to plugins that are explicitely specified as output plugins of the current plugin. + // I think we should only route events to plugins that are explicitly specified as output plugins of the current plugin. // This should probably use GetOutputPlugList here if we ever get to support multiple output plugins. PLUGINDEX receiver = m_pMixStruct->GetOutputPlugin(); @@ -1605,7 +1604,7 @@ // ... ..|C-5 01 // C-5 01|=== .. // TODO: Should not be used with real-time notes! Letting the key go too quickly - // (e.g. while output device is being initalized) will cause the note to be stuck! + // (e.g. while output device is being initialized) will cause the note to be stuck! bool insertAtFront = (MIDIEvents::GetTypeFromEvent(dwMidiCode) == MIDIEvents::evNoteOff); VstMidiEvent event{}; |
From: <sv...@op...> - 2024-10-21 07:08:59
|
Author: manx Date: Mon Oct 21 09:08:48 2024 New Revision: 21903 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21903 Log: Merged revision(s) 21902 from trunk/OpenMPT: [Fix] Vorbis: r21890 broken non-MSVC SSE2 builds. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/include/vorbis/lib/os.h Modified: branches/OpenMPT-1.31/include/vorbis/lib/os.h ============================================================================== --- branches/OpenMPT-1.31/include/vorbis/lib/os.h Mon Oct 21 09:08:28 2024 (r21902) +++ branches/OpenMPT-1.31/include/vorbis/lib/os.h Mon Oct 21 09:08:48 2024 (r21903) @@ -151,7 +151,9 @@ typedef ogg_int16_t vorbis_fpu_control; +#if defined(_MSC_VER) /* OpenMPT */ #include <intrin.h> /* OpenMPT */ +#endif /* OpenMPT */ #include <emmintrin.h> static __inline int vorbis_ftoi(double f){ return _mm_cvtsd_si32(_mm_load_sd(&f)); |
From: <sv...@op...> - 2024-10-21 07:08:40
|
Author: manx Date: Mon Oct 21 09:08:28 2024 New Revision: 21902 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21902 Log: [Fix] Vorbis: r21890 broken non-MSVC SSE2 builds. Modified: trunk/OpenMPT/include/vorbis/lib/os.h Modified: trunk/OpenMPT/include/vorbis/lib/os.h ============================================================================== --- trunk/OpenMPT/include/vorbis/lib/os.h Sun Oct 20 18:12:51 2024 (r21901) +++ trunk/OpenMPT/include/vorbis/lib/os.h Mon Oct 21 09:08:28 2024 (r21902) @@ -151,7 +151,9 @@ typedef ogg_int16_t vorbis_fpu_control; +#if defined(_MSC_VER) /* OpenMPT */ #include <intrin.h> /* OpenMPT */ +#endif /* OpenMPT */ #include <emmintrin.h> static __inline int vorbis_ftoi(double f){ return _mm_cvtsd_si32(_mm_load_sd(&f)); |
From: <sv...@op...> - 2024-10-20 16:13:03
|
Author: sagamusix Date: Sun Oct 20 18:12:51 2024 New Revision: 21901 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21901 Log: [Imp] VST: Improve correctness of PPQ position reporting. The PPQ is now also correct when the tempo changes, and when breaking to the next pattern, the position is rounded to the next start of measure. Partially fixes https://bugs.openmpt.org/view.php?id=1731 [Imp] MIDI Input/Output plugin: PPQ position is now sent when "send timing information" is enabled. [Mod] OpenMPT: Version is now 1.32.00.30 Modified: trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/mptrack/Vstplug.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp trunk/OpenMPT/mptrack/plugins/MidiInOut.h trunk/OpenMPT/soundlib/MIDIEvents.cpp trunk/OpenMPT/soundlib/MIDIEvents.h trunk/OpenMPT/soundlib/PlayState.cpp trunk/OpenMPT/soundlib/PlayState.h trunk/OpenMPT/soundlib/Snd_defs.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndmix.cpp trunk/OpenMPT/soundlib/UpgradeModule.cpp Modified: trunk/OpenMPT/common/versionNumber.h ============================================================================== --- trunk/OpenMPT/common/versionNumber.h Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/common/versionNumber.h Sun Oct 20 18:12:51 2024 (r21901) @@ -16,4 +16,4 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 32 #define VER_MINOR 00 -#define VER_MINORMINOR 29 +#define VER_MINORMINOR 30 Modified: trunk/OpenMPT/mptrack/Vstplug.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Vstplug.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/mptrack/Vstplug.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -352,9 +352,12 @@ }; CVstPlugin *pVstPlugin = nullptr; + CSoundFile *sndFile = nullptr; if(effect != nullptr) { pVstPlugin = static_cast<CVstPlugin *>(effect->reservedForHost1); + if(pVstPlugin) + sndFile = &pVstPlugin->GetSoundFile(); } switch(opcode) @@ -412,12 +415,13 @@ MemsetZero(timeInfo); timeInfo.sampleRate = pVstPlugin->m_nSampleRate; - CSoundFile &sndFile = pVstPlugin->GetSoundFile(); if(pVstPlugin->IsSongPlaying()) { - timeInfo.flags |= kVstTransportPlaying; - if(pVstPlugin->GetSoundFile().m_PlayState.m_flags[SONG_PATTERNLOOP]) timeInfo.flags |= kVstTransportCycleActive; - timeInfo.samplePos = sndFile.GetTotalSampleCount(); + if(!sndFile->m_PlayState.m_flags[SONG_PAUSED]) + timeInfo.flags |= kVstTransportPlaying; + if(sndFile->m_PlayState.m_flags[SONG_PATTERNLOOP]) + timeInfo.flags |= kVstTransportCycleActive; + timeInfo.samplePos = sndFile->GetTotalSampleCount(); if(pVstPlugin->m_positionChanged) { timeInfo.flags |= kVstTransportChanged; @@ -437,20 +441,20 @@ if((value & kVstPpqPosValid)) { timeInfo.flags |= kVstPpqPosValid; - if (timeInfo.flags & kVstTransportPlaying) - { - timeInfo.ppqPos = (timeInfo.samplePos / timeInfo.sampleRate) * (sndFile.GetCurrentBPM() / 60.0); - } else - { - timeInfo.ppqPos = 0; - } + if(sndFile->m_playBehaviour[kLegacyPPQpos]) + timeInfo.ppqPos = (timeInfo.samplePos / timeInfo.sampleRate) * (sndFile->GetCurrentBPM() / 60.0); + else + timeInfo.ppqPos = sndFile->m_PlayState.m_ppqPosBeat + sndFile->m_PlayState.m_ppqPosFract; ROWINDEX rpm = pVstPlugin->GetSoundFile().m_PlayState.m_nCurrentRowsPerMeasure; if(!rpm) rpm = 4; if((pVstPlugin->GetSoundFile().m_PlayState.m_nRow % rpm) == 0) { - pVstPlugin->lastBarStartPos = std::floor(timeInfo.ppqPos); + if(sndFile->m_playBehaviour[kLegacyPPQpos]) + pVstPlugin->lastBarStartPos = std::floor(timeInfo.ppqPos); + else + pVstPlugin->lastBarStartPos = sndFile->m_PlayState.m_ppqPosBeat; // Only updated at start of measure } if(pVstPlugin->lastBarStartPos >= 0) { @@ -460,7 +464,7 @@ } if((value & kVstTempoValid)) { - timeInfo.tempo = sndFile.GetCurrentBPM(); + timeInfo.tempo = sndFile->GetCurrentBPM(); if (timeInfo.tempo) { timeInfo.flags |= kVstTempoValid; @@ -472,8 +476,8 @@ // Time signature. numerator = rows per beats / rows pear measure (should sound somewhat logical to you). // the denominator is a bit more tricky, since it cannot be set explicitely. so we just assume quarters for now. - ROWINDEX rpb = std::max(sndFile.m_PlayState.m_nCurrentRowsPerBeat, ROWINDEX(1)); - timeInfo.timeSigNumerator = std::max(sndFile.m_PlayState.m_nCurrentRowsPerMeasure, rpb) / rpb; + ROWINDEX rpb = std::max(sndFile->m_PlayState.m_nCurrentRowsPerBeat, ROWINDEX(1)); + timeInfo.timeSigNumerator = std::max(sndFile->m_PlayState.m_nCurrentRowsPerMeasure, rpb) / rpb; timeInfo.timeSigDenominator = 4; //std::gcd(pSndFile->m_nCurrentRowsPerMeasure, pSndFile->m_nCurrentRowsPerBeat); } return ToIntPtr(&timeInfo); @@ -500,9 +504,9 @@ // returns tempo (in bpm * 10000) at sample frame location passed in <value> - DEPRECATED in VST 2.4 case audioMasterTempoAt: // Screw it! Let's just return the tempo at this point in time (might be a bit wrong). - if (pVstPlugin != nullptr) + if(sndFile != nullptr) { - return mpt::saturate_round<int32>(pVstPlugin->GetSoundFile().GetCurrentBPM() * 10000); + return mpt::saturate_round<int32>(sndFile->GetCurrentBPM() * 10000); } return (125 * 10000); @@ -571,7 +575,7 @@ case audioMasterGetOutputLatency: if(pVstPlugin) { - return mpt::saturate_round<intptr_t>(pVstPlugin->GetOutputLatency() * pVstPlugin->GetSoundFile().GetSampleRate()); + return mpt::saturate_round<intptr_t>(pVstPlugin->GetOutputLatency() * sndFile->GetSampleRate()); } break; @@ -615,7 +619,7 @@ return 1; //we replace. case audioMasterGetCurrentProcessLevel: - if(pVstPlugin != nullptr && pVstPlugin->GetSoundFile().IsRenderingToDisc()) + if(sndFile != nullptr && sndFile->IsRenderingToDisc()) return kVstProcessLevelOffline; else return kVstProcessLevelRealtime; Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -733,6 +733,7 @@ case kITDoublePortamentoSlides: desc = _T("Parameters of conflicting volume and effect column portamento commands may overwrite each other"); break; case kS3MIgnoreCombinedFineSlides: desc =_T("Ignore combined fine slides (Kxy / Lxy)"); break; case kFT2AutoVibratoAbortSweep: desc = _T("Key-off before auto-vibrato sweep-in is complete resets auto-vibrato depth"); break; + case kLegacyPPQpos: desc = _T("Report inaccurate PPQ position to VST plugins (like OpenMPT 1.31 and older)"); break; default: MPT_ASSERT_NOTREACHED(); } Modified: trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp ============================================================================== --- trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/mptrack/plugins/MidiInOut.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -294,6 +294,17 @@ } m_nextClock -= numFrames; + if(m_sendTimingInfo && !m_positionChanged && m_SndFile.m_PlayState.m_ppqPosFract == 0.0) + { + // Send Song Position on every pattern change or start of new measure + uint16 ppq = mpt::saturate_cast<uint16>((m_SndFile.m_PlayState.m_ppqPosBeat + m_SndFile.m_PlayState.m_ppqPosFract) * 4.0); + if(ppq < 16384) + { + uint32 midiCode = MIDIEvents::SongPosition(ppq); + m_outQueue.push_back(Message(GetOutputTimestamp(), &midiCode, MIDIEvents::GetEventLength(static_cast<uint8>(midiCode)))); + } + } + double now = m_clock.Now() * (1.0 / 1000.0); auto message = m_outQueue.begin(); while(message != m_outQueue.end() && message->m_time <= now) @@ -308,6 +319,7 @@ } m_outQueue.erase(m_outQueue.begin(), message); } + m_positionChanged = false; } @@ -406,8 +418,12 @@ if(m_sendTimingInfo && !m_SndFile.IsPaused()) { MidiSend(0xFC); // Stop + uint16 ppq = mpt::saturate_cast<uint16>((m_SndFile.m_PlayState.m_ppqPosBeat + m_SndFile.m_PlayState.m_ppqPosFract) * 4.0); + if(ppq < 16384) + MidiSend(MIDIEvents::SongPosition(ppq)); MidiSend(0xFA); // Start } + m_positionChanged = true; } Modified: trunk/OpenMPT/mptrack/plugins/MidiInOut.h ============================================================================== --- trunk/OpenMPT/mptrack/plugins/MidiInOut.h Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/mptrack/plugins/MidiInOut.h Sun Oct 20 18:12:51 2024 (r21901) @@ -133,6 +133,7 @@ MidiDevice m_inputDevice; MidiDevice m_outputDevice; bool m_sendTimingInfo = true; + bool m_positionChanged = false; #ifdef MODPLUG_TRACKER CString m_programName; Modified: trunk/OpenMPT/soundlib/MIDIEvents.cpp ============================================================================== --- trunk/OpenMPT/soundlib/MIDIEvents.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/MIDIEvents.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -65,6 +65,13 @@ } +// Build a MIDI Song Position Event +uint32 SongPosition(uint16 quarterNotes) +{ + return Event(evSystem, sysPositionPointer, static_cast<uint8>(quarterNotes & 0x7F), static_cast<uint8>((quarterNotes >> 7) & 0x7F)); +} + + // Get MIDI channel from a MIDI event uint8 GetChannelFromEvent(uint32 midiMsg) { Modified: trunk/OpenMPT/soundlib/MIDIEvents.h ============================================================================== --- trunk/OpenMPT/soundlib/MIDIEvents.h Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/MIDIEvents.h Sun Oct 20 18:12:51 2024 (r21901) @@ -151,6 +151,8 @@ uint32 NoteOn(uint8 midiChannel, uint8 note, uint8 velocity); // Build a MIDI System Event uint8 System(SystemEvent eventType); + // Build a MIDI Song Position Event + uint32 SongPosition(uint16 quarterNotes); // Get MIDI channel from a MIDI event uint8 GetChannelFromEvent(uint32 midiMsg); Modified: trunk/OpenMPT/soundlib/PlayState.cpp ============================================================================== --- trunk/OpenMPT/soundlib/PlayState.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/PlayState.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -48,6 +48,17 @@ } +void PlayState::UpdatePPQ(bool patternTransition) noexcept +{ + if(m_lTotalSampleCount > 0 && (patternTransition || !(m_nRow % m_nCurrentRowsPerMeasure))) + { + // Pattern end = end of measure, so round up PPQ to the next full measure + m_ppqPosBeat += (m_nCurrentRowsPerMeasure + (m_nCurrentRowsPerBeat - 1)) / m_nCurrentRowsPerBeat; + m_ppqPosFract = 0; + } +} + + mpt::span<ModChannel> PlayState::PatternChannels(const CSoundFile &sndFile) noexcept { return mpt::as_span(Chn).subspan(0, std::min(Chn.size(), static_cast<size_t>(sndFile.GetNumChannels()))); Modified: trunk/OpenMPT/soundlib/PlayState.h ============================================================================== --- trunk/OpenMPT/soundlib/PlayState.h Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/PlayState.h Sun Oct 20 18:12:51 2024 (r21901) @@ -32,7 +32,9 @@ double m_dBufferDiff = 0.0; // Modern tempo rounding error compensation public: - uint32 m_nTickCount = 0; // Current tick being processed + double m_ppqPosFract = 0.0; // Fractional PPQ position within current measure + uint32 m_ppqPosBeat = 0; // PPQ position of the last start of measure + uint32 m_nTickCount = 0; // Current tick being processed protected: uint32 m_nPatternDelay = 0; // Pattern delay (rows) uint32 m_nFrameDelay = 0; // Fine pattern delay (ticks) @@ -89,6 +91,7 @@ void ResetGlobalVolumeRamping() noexcept; void UpdateTimeSignature(const CSoundFile &sndFile) noexcept; + void UpdatePPQ(bool patternTransition) noexcept; constexpr uint32 TicksOnRow() const noexcept { Modified: trunk/OpenMPT/soundlib/Snd_defs.h ============================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/Snd_defs.h Sun Oct 20 18:12:51 2024 (r21901) @@ -602,6 +602,7 @@ kITDoublePortamentoSlides, // IT only reads parameters once per row, so if two commands sharing effect parameters are found in the two effect columns, they influence each other kS3MIgnoreCombinedFineSlides, // S3M commands Kxy and Lxy ignore fine slides kFT2AutoVibratoAbortSweep, // Key-off before auto-vibrato sweep-in is complete resets auto-vibrato depth + kLegacyPPQpos, // Report fake PPQ position to VST plugins // Add new play behaviours here. Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -91,6 +91,8 @@ state->m_lTotalSampleCount = 0; state->m_nMusicSpeed = sndFile.Order(m_sequence).GetDefaultSpeed(); state->m_nMusicTempo = sndFile.Order(m_sequence).GetDefaultTempo(); + state->m_ppqPosFract = 0.0; + state->m_ppqPosBeat = 0; state->m_nGlobalVolume = sndFile.m_nDefaultGlobalVolume; state->m_globalScriptState.Initialize(sndFile); chnSettings.assign(sndFile.GetNumChannels(), {}); @@ -555,6 +557,7 @@ playState.m_nRow = 0; } + playState.UpdatePPQ(breakToRow); playState.UpdateTimeSignature(*this); if(ignoreRow) @@ -1066,6 +1069,7 @@ const uint32 rowDuration = tickDuration * numTicks; memory.elapsedTime += static_cast<double>(rowDuration) / static_cast<double>(m_MixerSettings.gdwMixingFreq); playState.m_lTotalSampleCount += rowDuration; + playState.m_ppqPosFract += 1.0 / playState.m_nCurrentRowsPerBeat; if(adjustSamplePos) { Modified: trunk/OpenMPT/soundlib/Sndfile.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/Sndfile.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -926,6 +926,8 @@ m_PlayState.m_nFrameDelay = 0; m_PlayState.m_nextPatStartRow = 0; m_PlayState.m_lTotalSampleCount = 0; + m_PlayState.m_ppqPosFract = 0.0; + m_PlayState.m_ppqPosBeat = 0; m_PlayState.m_globalScriptState.Initialize(*this); } Modified: trunk/OpenMPT/soundlib/Sndmix.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/Sndmix.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -362,6 +362,8 @@ countToRender -= countChunk; m_PlayState.m_nBufferCount -= countChunk; m_PlayState.m_lTotalSampleCount += countChunk; + if(!m_PlayState.m_nBufferCount && !m_PlayState.m_flags[SONG_PAUSED]) + m_PlayState.m_ppqPosFract += 1.0 / (m_PlayState.m_nCurrentRowsPerBeat * m_PlayState.TicksOnRow()); #ifdef MODPLUG_TRACKER if(IsRenderingToDisc()) @@ -455,6 +457,8 @@ MPT_UNUSED_VARIABLE(patternTransition); #endif // MODPLUG_TRACKER + m_PlayState.UpdatePPQ(patternTransition); + // Check if pattern is valid if(!m_PlayState.m_flags[SONG_PATTERNLOOP]) { Modified: trunk/OpenMPT/soundlib/UpgradeModule.cpp ============================================================================== --- trunk/OpenMPT/soundlib/UpgradeModule.cpp Sun Oct 20 17:24:00 2024 (r21900) +++ trunk/OpenMPT/soundlib/UpgradeModule.cpp Sun Oct 20 18:12:51 2024 (r21901) @@ -744,6 +744,7 @@ } } +#ifndef NO_PLUGINS if(m_dwLastSavedWithVersion >= MPT_V("1.27.00.42") && m_dwLastSavedWithVersion < MPT_V("1.30.00.46") && hasAnyPlugins) { // The Flanger DMO plugin is almost identical to the Chorus... but only almost. @@ -792,6 +793,19 @@ } } } + + if(m_dwLastSavedWithVersion >= MPT_V("1.17") && m_dwLastSavedWithVersion < MPT_V("1.32.00.30") && hasAnyPlugins) + { + for(const auto &plugin : m_MixPlugins) + { + if(plugin.Info.dwPluginId1 == PLUGMAGIC('V', 's', 't', 'P')) + { + m_playBehaviour.set(kLegacyPPQpos); + break; + } + } + } +#endif } OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2024-10-20 15:24:16
|
Author: sagamusix Date: Sun Oct 20 17:24:00 2024 New Revision: 21900 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21900 Log: [Var] Move VST opcode strings from soundlib to mptrack. Added: trunk/OpenMPT/mptrack/plugins/VstOpCodes.h - copied unchanged from r21899, trunk/OpenMPT/soundlib/plugins/OpCodes.h Deleted: trunk/OpenMPT/soundlib/plugins/OpCodes.h Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10clang/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10clang/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win10clang/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win10clang/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win10uwp/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10uwp/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win10uwp/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10uwp/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win7/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win7/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win7/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win7/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win7/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win7/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win7/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win8/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win8/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win8/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win8/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win8/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win8/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win8/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT-ANSI.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT-UTF8.vcxproj.filters trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win81/OpenMPT.vcxproj.filters trunk/OpenMPT/build/vs2022win81/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win81/libopenmpt-small.vcxproj.filters trunk/OpenMPT/build/vs2022win81/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win81/libopenmpt.vcxproj.filters trunk/OpenMPT/build/vs2022win81/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win81/libopenmpt_test.vcxproj.filters trunk/OpenMPT/build/xcode-ios/libopenmpt.xcodeproj/project.pbxproj trunk/OpenMPT/build/xcode-macosx/libopenmpt.xcodeproj/project.pbxproj trunk/OpenMPT/mptrack/Vstplug.cpp Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -895,6 +895,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -958,7 +959,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -895,6 +895,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -958,7 +959,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -895,6 +895,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -958,7 +959,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/OpenMPT.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -745,7 +745,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt-small.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -745,7 +745,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -775,7 +775,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxp/libopenmpt_test.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -492,9 +492,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -895,6 +895,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -958,7 +959,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -895,6 +895,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -958,7 +959,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -895,6 +895,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -958,7 +959,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/OpenMPT.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -745,7 +745,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt-small.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -745,7 +745,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -775,7 +775,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2017winxpansi/libopenmpt_test.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -492,9 +492,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -914,6 +914,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -977,7 +978,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -690,6 +690,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -879,9 +882,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -914,6 +914,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -977,7 +978,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -690,6 +690,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -879,9 +882,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -914,6 +914,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -977,7 +978,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/OpenMPT.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -690,6 +690,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -879,9 +882,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -742,7 +742,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt-small.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -742,7 +742,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -772,7 +772,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2019win7/libopenmpt_test.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -498,9 +498,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -2116,6 +2116,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -2179,7 +2180,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -690,6 +690,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -879,9 +882,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -2116,6 +2116,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -2179,7 +2180,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -690,6 +690,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -879,9 +882,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -2116,6 +2116,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -2179,7 +2180,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -690,6 +690,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -879,9 +882,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -1755,7 +1755,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -1755,7 +1755,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -474,9 +474,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -1830,7 +1830,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -498,9 +498,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -1684,6 +1684,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -1747,7 +1748,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-ANSI.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -1684,6 +1684,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -1747,7 +1748,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT-UTF8.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h"> - <Filter>soundlib\plugins</Filter> - </ClInclude> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h"> <Filter>soundlib\plugins</Filter> </ClInclude> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj Sun Oct 20 17:24:00 2024 (r21900) @@ -1684,6 +1684,7 @@ <ClInclude Include="..\..\mptrack\plugins\MidiInOutEditor.h" /> <ClInclude Include="..\..\mptrack\plugins\VstDefinitions.h" /> <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h" /> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h" /> <ClInclude Include="..\..\mptrack\resource.h" /> <ClInclude Include="..\..\mptrack\tuningRatioMapWnd.h" /> <ClInclude Include="..\..\mptrack\view_com.h" /> @@ -1747,7 +1748,6 @@ <ClInclude Include="..\..\soundlib\patternContainer.h" /> <ClInclude Include="..\..\soundlib\plugins\DigiBoosterEcho.h" /> <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h" /> - <ClInclude Include="..\..\soundlib\plugins\OpCodes.h" /> <ClInclude Include="..\..\soundlib\plugins\PlugInterface.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginManager.h" /> <ClInclude Include="..\..\soundlib\plugins\PluginMixBuffer.h" /> Modified: trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters ============================================================================== --- trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters Sun Oct 20 17:14:42 2024 (r21899) +++ trunk/OpenMPT/build/vs2022win10clang/OpenMPT.vcxproj.filters Sun Oct 20 17:24:00 2024 (r21900) @@ -648,6 +648,9 @@ <ClInclude Include="..\..\mptrack\plugins\VstEventQueue.h"> <Filter>mptrack\plugins</Filter> </ClInclude> + <ClInclude Include="..\..\mptrack\plugins\VstOpCodes.h"> + <Filter>mptrack\plugins</Filter> + </ClInclude> <ClInclude Include="..\..\mptrack\resource.h"> <Filter>mptrack</Filter> </ClInclude> @@ -837,9 +840,6 @@ <ClInclude Include="..\..\soundlib\plugins\LFOPlugin.h"> <Filter>soundlib\plugins</Filter> </ClInclude> - <ClInclude Include="..\..\soundlib\plugins\OpCod... [truncated message content] |
From: <sv...@op...> - 2024-10-20 15:15:00
|
Author: manx Date: Sun Oct 20 17:14:42 2024 New Revision: 21899 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21899 Log: [Fix] Compile fix for old Clang. Modified: trunk/OpenMPT/soundlib/Load_it.cpp Modified: trunk/OpenMPT/soundlib/Load_it.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp Sun Oct 20 16:46:38 2024 (r21898) +++ trunk/OpenMPT/soundlib/Load_it.cpp Sun Oct 20 17:14:42 2024 (r21899) @@ -352,7 +352,7 @@ } else if(cwtv >= 0x0215 && cwtv <= 0x0217) { const mpt::uchar *versions[] = {UL_("1-2"), UL_("3"), UL_("4-5")}; - version = MPT_UFORMAT("Impulse Tracker 2.14p{}")(versions[cwtv - 0x0215]); + version = MPT_UFORMAT("Impulse Tracker 2.14p{}")(mpt::ustring_view(versions[cwtv - 0x0215])); } else { version = MPT_UFORMAT("Impulse Tracker {}.{}")((cwtv & 0x0F00) >> 8, mpt::ufmt::hex0<2>((cwtv & 0xFF))); |
From: <sv...@op...> - 2024-10-20 14:46:45
|
Author: sagamusix Date: Sun Oct 20 16:46:38 2024 New Revision: 21898 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21898 Log: [Fix] IT/S3M: Properly identify IT2.14 patch versions (tx cs127). Modified: trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/soundlib/Sndfile.h Modified: trunk/OpenMPT/soundlib/Load_it.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp Sun Oct 20 16:41:56 2024 (r21897) +++ trunk/OpenMPT/soundlib/Load_it.cpp Sun Oct 20 16:46:38 2024 (r21898) @@ -341,6 +341,26 @@ } +// Get version of Impulse Tracker that was used to create an IT/S3M file. +mpt::ustring CSoundFile::GetImpulseTrackerVersion(uint16 cwtv, uint16 cmwt) +{ + mpt::ustring version; + cwtv &= 0xFFF; + if(cmwt > 0x0214) + { + version = UL_("Impulse Tracker 2.15"); + } else if(cwtv >= 0x0215 && cwtv <= 0x0217) + { + const mpt::uchar *versions[] = {UL_("1-2"), UL_("3"), UL_("4-5")}; + version = MPT_UFORMAT("Impulse Tracker 2.14p{}")(versions[cwtv - 0x0215]); + } else + { + version = MPT_UFORMAT("Impulse Tracker {}.{}")((cwtv & 0x0F00) >> 8, mpt::ufmt::hex0<2>((cwtv & 0xFF))); + } + return version; +} + + // Get version of Schism Tracker that was used to create an IT/S3M file. mpt::ustring CSoundFile::GetSchismTrackerVersion(uint16 cwtv, uint32 reserved) { @@ -1231,19 +1251,7 @@ madeWithTracker = UL_("Unknown"); } else if(fileHeader.cmwt < 0x0300 && madeWithTracker.empty()) { - if(fileHeader.cmwt > 0x0214) - { - madeWithTracker = UL_("Impulse Tracker 2.15"); - } else if(fileHeader.cwtv > 0x0214) - { - // Patched update of IT 2.14 (0x0215 - 0x0217 == p1 - p3) - // p4 (as found on modland) adds the ITVSOUND driver, but doesn't seem to change - // anything as far as file saving is concerned. - madeWithTracker = MPT_UFORMAT("Impulse Tracker 2.14p{}")(fileHeader.cwtv - 0x0214); - } else - { - madeWithTracker = MPT_UFORMAT("Impulse Tracker {}.{}")((fileHeader.cwtv & 0x0F00) >> 8, mpt::ufmt::hex0<2>((fileHeader.cwtv & 0xFF))); - } + madeWithTracker = GetImpulseTrackerVersion(fileHeader.cwtv, fileHeader.cmwt); if(m_FileHistory.empty() && fileHeader.reserved != 0) { // Starting from version 2.07, IT stores the total edit time of a module in the "reserved" field Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp Sun Oct 20 16:41:56 2024 (r21897) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp Sun Oct 20 16:46:38 2024 (r21898) @@ -304,17 +304,11 @@ nonCompatTracker = true; break; case S3MFileHeader::trkImpulseTracker: - if(fileHeader.cwtv <= S3MFileHeader::trkIT2_14) - { - madeWithTracker = UL_("Impulse Tracker"); - formatTrackerStr = true; - } else if(fileHeader.cwtv == S3MFileHeader::trkIT1_old) - { + if(fileHeader.cwtv == S3MFileHeader::trkIT1_old) madeWithTracker = UL_("Impulse Tracker 1.03"); // Could also be 1.02, maybe? I don't have that one - } else - { - madeWithTracker = MPT_UFORMAT("Impulse Tracker 2.14p{}")(fileHeader.cwtv - S3MFileHeader::trkIT2_14); - } + else + madeWithTracker = GetImpulseTrackerVersion(fileHeader.cwtv, 0); + if(fileHeader.cwtv >= S3MFileHeader::trkIT2_07 && fileHeader.reserved3 != 0) { // Starting from version 2.07, IT stores the total edit time of a module in the "reserved" field Modified: trunk/OpenMPT/soundlib/Sndfile.h ============================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h Sun Oct 20 16:41:56 2024 (r21897) +++ trunk/OpenMPT/soundlib/Sndfile.h Sun Oct 20 16:46:38 2024 (r21898) @@ -936,6 +936,7 @@ bool LoadExtendedSongProperties(FileReader &file, bool ignoreChannelCount, bool* pInterpretMptMade = nullptr); void LoadMPTMProperties(FileReader &file, uint16 cwtv); + static mpt::ustring GetImpulseTrackerVersion(uint16 cwtv, uint16 cmwt); static mpt::ustring GetSchismTrackerVersion(uint16 cwtv, uint32 reserved); // Reads extended instrument properties(XM/IT/MPTM). |
From: <sv...@op...> - 2024-10-20 14:42:03
|
Author: sagamusix Date: Sun Oct 20 16:41:56 2024 New Revision: 21897 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21897 Log: [Ref] Unify time signature handling between GetLength and normal playing. Modified: trunk/OpenMPT/soundlib/PlayState.cpp trunk/OpenMPT/soundlib/PlayState.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.h trunk/OpenMPT/soundlib/Sndmix.cpp Modified: trunk/OpenMPT/soundlib/PlayState.cpp ============================================================================== --- trunk/OpenMPT/soundlib/PlayState.cpp Sun Oct 20 16:29:47 2024 (r21896) +++ trunk/OpenMPT/soundlib/PlayState.cpp Sun Oct 20 16:41:56 2024 (r21897) @@ -34,6 +34,20 @@ } +void PlayState::UpdateTimeSignature(const CSoundFile &sndFile) noexcept +{ + if(!sndFile.Patterns.IsValidIndex(m_nPattern) || !sndFile.Patterns[m_nPattern].GetOverrideSignature()) + { + m_nCurrentRowsPerBeat = sndFile.m_nDefaultRowsPerBeat; + m_nCurrentRowsPerMeasure = sndFile.m_nDefaultRowsPerMeasure; + } else + { + m_nCurrentRowsPerBeat = sndFile.Patterns[m_nPattern].GetRowsPerBeat(); + m_nCurrentRowsPerMeasure = sndFile.Patterns[m_nPattern].GetRowsPerMeasure(); + } +} + + mpt::span<ModChannel> PlayState::PatternChannels(const CSoundFile &sndFile) noexcept { return mpt::as_span(Chn).subspan(0, std::min(Chn.size(), static_cast<size_t>(sndFile.GetNumChannels()))); Modified: trunk/OpenMPT/soundlib/PlayState.h ============================================================================== --- trunk/OpenMPT/soundlib/PlayState.h Sun Oct 20 16:29:47 2024 (r21896) +++ trunk/OpenMPT/soundlib/PlayState.h Sun Oct 20 16:41:56 2024 (r21897) @@ -88,6 +88,8 @@ void ResetGlobalVolumeRamping() noexcept; + void UpdateTimeSignature(const CSoundFile &sndFile) noexcept; + constexpr uint32 TicksOnRow() const noexcept { return (m_nMusicSpeed + m_nFrameDelay) * std::max(m_nPatternDelay, uint32(1)); Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Sun Oct 20 16:29:47 2024 (r21896) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Sun Oct 20 16:41:56 2024 (r21897) @@ -555,6 +555,8 @@ playState.m_nRow = 0; } + playState.UpdateTimeSignature(*this); + if(ignoreRow) continue; @@ -1060,12 +1062,6 @@ continue; } - playState.m_nCurrentRowsPerBeat = m_nDefaultRowsPerBeat; - if(Patterns[playState.m_nPattern].GetOverrideSignature()) - { - playState.m_nCurrentRowsPerBeat = Patterns[playState.m_nPattern].GetRowsPerBeat(); - } - const uint32 tickDuration = GetTickDuration(playState); const uint32 rowDuration = tickDuration * numTicks; memory.elapsedTime += static_cast<double>(rowDuration) / static_cast<double>(m_MixerSettings.gdwMixingFreq); @@ -6903,21 +6899,6 @@ #endif // MODPLUG_TRACKER -// Update time signatures (global or pattern-specific). Don't forget to call this when changing the RPB/RPM settings anywhere! -void CSoundFile::UpdateTimeSignature() -{ - if(!Patterns.IsValidIndex(m_PlayState.m_nPattern) || !Patterns[m_PlayState.m_nPattern].GetOverrideSignature()) - { - m_PlayState.m_nCurrentRowsPerBeat = m_nDefaultRowsPerBeat; - m_PlayState.m_nCurrentRowsPerMeasure = m_nDefaultRowsPerMeasure; - } else - { - m_PlayState.m_nCurrentRowsPerBeat = Patterns[m_PlayState.m_nPattern].GetRowsPerBeat(); - m_PlayState.m_nCurrentRowsPerMeasure = Patterns[m_PlayState.m_nPattern].GetRowsPerMeasure(); - } -} - - void CSoundFile::PortamentoMPT(ModChannel &chn, int param) const { //Behavior: Modifies portamento by param-steps on every tick. Modified: trunk/OpenMPT/soundlib/Sndfile.h ============================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h Sun Oct 20 16:29:47 2024 (r21896) +++ trunk/OpenMPT/soundlib/Sndfile.h Sun Oct 20 16:41:56 2024 (r21897) @@ -1131,8 +1131,6 @@ int SetupChannelFilter(ModChannel &chn, bool bReset, int envModifier = 256) const; int HandleNoteChangeFilter(ModChannel &chn) const; - void UpdateTimeSignature(); - public: void DoFreqSlide(ModChannel &chn, int32 &period, int32 amount, bool isTonePorta = false) const; Modified: trunk/OpenMPT/soundlib/Sndmix.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndmix.cpp Sun Oct 20 16:29:47 2024 (r21896) +++ trunk/OpenMPT/soundlib/Sndmix.cpp Sun Oct 20 16:41:56 2024 (r21897) @@ -225,7 +225,6 @@ while(!m_PlayState.m_flags[SONG_ENDREACHED] && countToRender > 0) { - // Update Channel Data if(!m_PlayState.m_nBufferCount) { @@ -719,7 +718,7 @@ } // Now that we know which pattern we're on, we can update time signatures (global or pattern-specific) - UpdateTimeSignature(); + m_PlayState.UpdateTimeSignature(*this); if(ignoreRow) { |
From: <sv...@op...> - 2024-10-20 14:29:59
|
Author: sagamusix Date: Sun Oct 20 16:29:47 2024 New Revision: 21896 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21896 Log: [Doc] libopenmpt: Fix function documentation. Modified: trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi trunk/OpenMPT/libopenmpt/libopenmpt.h trunk/OpenMPT/libopenmpt/libopenmpt.hpp Modified: trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi ============================================================================== --- trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi Sun Oct 20 15:09:07 2024 (r21895) +++ trunk/OpenMPT/libopenmpt/bindings/freebasic/libopenmpt.bi Sun Oct 20 16:29:47 2024 (r21896) @@ -1306,7 +1306,7 @@ /'* \brief Check if specified order is a skip ("+++") item - \param The order item to check. + \param order The order index to check. \return Returns non-zero value if the pattern index at the given order position represents a skip item. During playback, this item is ignored and playback resumes at the next order list item. \sa openmpt_module_is_order_stop_entry, openmpt_module_is_pattern_skip_item \since 0.8.0 @@ -1314,7 +1314,7 @@ Declare Function openmpt_module_is_order_skip_entry(ByVal module As openmpt_module Ptr, ByVal order As Long) As Long /'* \brief Check if specified pattern index is a skip ("+++") item - \param The pattern index to check. + \param pattern The pattern index to check. \return Returns non-zero value if the pattern index represents a skip item. During playback, this item is ignored and playback resumes at the next order list item. \sa openmpt_module_is_pattern_stop_item, openmpt_module_is_order_skip_entry, openmpt_module_get_order_pattern \since 0.8.0 @@ -1322,7 +1322,7 @@ Declare Function openmpt_module_is_pattern_skip_item(ByVal module As openmpt_module Ptr, ByVal pattern As Long) As Long /'* \brief Check if specified order is a stop ("---") item - \param The order item to check. + \param order The order index to check. \return Returns non-zero value if the pattern index at the given order position represents a stop item. When this item is reached, playback continues at the restart position of the current sub-song. \sa openmpt_module_is_order_skip_entry, openmpt_module_is_pattern_stop_item \since 0.8.0 @@ -1330,7 +1330,7 @@ Declare Function openmpt_module_is_order_stop_entry(ByVal module As openmpt_module Ptr, ByVal order As Long) As Long /'* \brief Check if specified pattern index is a stop ("---") item - \param The pattern index to check. + \param pattern The pattern index to check. \return Returns non-zero value if the pattern index represents a stop item. When this item is reached, playback continues at the restart position of the current sub-song. \sa openmpt_module_is_pattern_skip_item, openmpt_module_is_order_stop_entry, openmpt_module_get_order_pattern \since 0.8.0 Modified: trunk/OpenMPT/libopenmpt/libopenmpt.h ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt.h Sun Oct 20 15:09:07 2024 (r21895) +++ trunk/OpenMPT/libopenmpt/libopenmpt.h Sun Oct 20 16:29:47 2024 (r21896) @@ -1364,7 +1364,8 @@ /*! \brief Check if specified order is a skip ("+++") item * - * \param The order item to check. + * \param mod The module handle to work on. + * \param order The order index to check. * \return Returns non-zero value if the pattern index at the given order position represents a skip item. During playback, this item is ignored and playback resumes at the next order list item. * \sa openmpt_module_is_order_stop_entry, openmpt_module_is_pattern_skip_item * \since 0.8.0 @@ -1372,7 +1373,8 @@ LIBOPENMPT_API int openmpt_module_is_order_skip_entry( openmpt_module * mod, int32_t order ); /*! \brief Check if specified pattern index is a skip ("+++") item * - * \param The pattern index to check. + * \param mod The module handle to work on. + * \param pattern The pattern index to check. * \return Returns non-zero value if the pattern index represents a skip item. During playback, this item is ignored and playback resumes at the next order list item. * \sa openmpt_module_is_pattern_stop_item, openmpt_module_is_order_skip_entry, openmpt_module_get_order_pattern * \since 0.8.0 @@ -1380,7 +1382,8 @@ LIBOPENMPT_API int openmpt_module_is_pattern_skip_item( openmpt_module * mod, int32_t pattern ); /*! \brief Check if specified order is a stop ("---") item * - * \param The order item to check. + * \param mod The module handle to work on. + * \param order The order index to check. * \return Returns non-zero value if the pattern index at the given order position represents a stop item. When this item is reached, playback continues at the restart position of the current sub-song. * \sa openmpt_module_is_order_skip_entry, openmpt_module_is_pattern_stop_item * \since 0.8.0 @@ -1388,7 +1391,8 @@ LIBOPENMPT_API int openmpt_module_is_order_stop_entry( openmpt_module * mod, int32_t order ); /*! \brief Check if specified pattern index is a stop ("---") item * - * \param The pattern index to check. + * \param mod The module handle to work on. + * \param pattern The pattern index to check. * \return Returns non-zero value if the pattern index represents a stop item. When this item is reached, playback continues at the restart position of the current sub-song. * \sa openmpt_module_is_pattern_skip_item, openmpt_module_is_order_stop_entry, openmpt_module_get_order_pattern * \since 0.8.0 Modified: trunk/OpenMPT/libopenmpt/libopenmpt.hpp ============================================================================== --- trunk/OpenMPT/libopenmpt/libopenmpt.hpp Sun Oct 20 15:09:07 2024 (r21895) +++ trunk/OpenMPT/libopenmpt/libopenmpt.hpp Sun Oct 20 16:29:47 2024 (r21896) @@ -1021,7 +1021,7 @@ //! Check if specified order is a skip ("+++") item /*! - \param The order item to check. + \param order The order index to check. \return Returns true if the pattern index at the given order position represents a skip item. During playback, this item is ignored and playback resumes at the next order list item. \sa openmpt::module::is_order_stop_entry, openmpt::module::is_pattern_skip_item \since 0.8.0 @@ -1029,7 +1029,7 @@ LIBOPENMPT_CXX_API_MEMBER bool is_order_skip_entry( std::int32_t order ) const ; //! Check if specified pattern index is a skip ("+++") item /*! - \param The pattern index to check. + \param pattern The pattern index to check. \return Returns true if the pattern index represents a skip item. During playback, this item is ignored and playback resumes at the next order list item. \sa openmpt::module::is_pattern_stop_item, openmpt::module::is_order_skip_entry, openmpt::module::get_order_pattern \since 0.8.0 @@ -1037,7 +1037,7 @@ LIBOPENMPT_CXX_API_MEMBER bool is_pattern_skip_item( std::int32_t pattern ) const; //! Check if specified order is a stop ("---") item /*! - \param The order item to check. + \param order The order index to check. \return Returns true if the pattern index at the given order position represents a stop item. When this item is reached, playback continues at the restart position of the current sub-song. \sa openmpt::module::is_order_skip_entry, openmpt::module::is_pattern_stop_item \since 0.8.0 @@ -1045,7 +1045,7 @@ LIBOPENMPT_CXX_API_MEMBER bool is_order_stop_entry( std::int32_t order ) const; //! Check if specified pattern index is a stop ("---") item /*! - \param The pattern index to check. + \param pattern The pattern index to check. \return Returns true if the pattern index represents a stop item. When this item is reached, playback continues at the restart position of the current sub-song. \sa openmpt::module::is_pattern_skip_item, openmpt::module::is_order_stop_entry, openmpt::module::get_order_pattern \since 0.8.0 |
From: <sv...@op...> - 2024-10-20 13:09:20
|
Author: manx Date: Sun Oct 20 15:09:07 2024 New Revision: 21895 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21895 Log: [Var] Regenerate project files. Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.sln trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-NativeSupport.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.sln trunk/OpenMPT/build/vs2022win10/OpenMPT-UTF8.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT-WineWrapper.vcxproj trunk/OpenMPT/build/vs2022win10/OpenMPT.sln trunk/OpenMPT/build/vs2022win10/OpenMPT.vcxproj trunk/OpenMPT/build/vs2022win10/PluginBridge.sln trunk/OpenMPT/build/vs2022win10/PluginBridge.vcxproj trunk/OpenMPT/build/vs2022win10/PluginBridgeLegacy.vcxproj trunk/OpenMPT/build/vs2022win10/ext/UnRAR.vcxproj trunk/OpenMPT/build/vs2022win10/ext/ancient.vcxproj trunk/OpenMPT/build/vs2022win10/ext/flac.vcxproj trunk/OpenMPT/build/vs2022win10/ext/lame.vcxproj trunk/OpenMPT/build/vs2022win10/ext/lhasa.vcxproj trunk/OpenMPT/build/vs2022win10/ext/minimp3.vcxproj trunk/OpenMPT/build/vs2022win10/ext/miniz.vcxproj trunk/OpenMPT/build/vs2022win10/ext/minizip.vcxproj trunk/OpenMPT/build/vs2022win10/ext/mpg123.vcxproj trunk/OpenMPT/build/vs2022win10/ext/ogg.vcxproj trunk/OpenMPT/build/vs2022win10/ext/opus.vcxproj trunk/OpenMPT/build/vs2022win10/ext/opusenc.vcxproj trunk/OpenMPT/build/vs2022win10/ext/opusfile.vcxproj trunk/OpenMPT/build/vs2022win10/ext/portaudio.vcxproj trunk/OpenMPT/build/vs2022win10/ext/portaudiocpp.vcxproj trunk/OpenMPT/build/vs2022win10/ext/pugixml.vcxproj trunk/OpenMPT/build/vs2022win10/ext/r8brain.vcxproj trunk/OpenMPT/build/vs2022win10/ext/rtaudio.vcxproj trunk/OpenMPT/build/vs2022win10/ext/rtmidi.vcxproj trunk/OpenMPT/build/vs2022win10/ext/stb_vorbis.vcxproj trunk/OpenMPT/build/vs2022win10/ext/vorbis.vcxproj trunk/OpenMPT/build/vs2022win10/ext/zlib.vcxproj trunk/OpenMPT/build/vs2022win10/in_openmpt.sln trunk/OpenMPT/build/vs2022win10/in_openmpt.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt-small.sln trunk/OpenMPT/build/vs2022win10/libopenmpt-small.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt.sln trunk/OpenMPT/build/vs2022win10/libopenmpt.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_example_c.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_example_c_mem.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_example_c_probe.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_example_c_unsafe.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_example_cxx.vcxproj trunk/OpenMPT/build/vs2022win10/libopenmpt_test.sln trunk/OpenMPT/build/vs2022win10/libopenmpt_test.vcxproj trunk/OpenMPT/build/vs2022win10/openmpt123.sln trunk/OpenMPT/build/vs2022win10/openmpt123.vcxproj trunk/OpenMPT/build/vs2022win10/updatesigntool.vcxproj trunk/OpenMPT/build/vs2022win10/xmp-openmpt.sln trunk/OpenMPT/build/vs2022win10/xmp-openmpt.vcxproj Modified: trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.sln ============================================================================== --- trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.sln Sun Oct 20 15:06:30 2024 (r21894) +++ trunk/OpenMPT/build/vs2022win10/OpenMPT-ANSI.sln Sun Oct 20 15:09:07 2024 (r21895) @@ -51,26 +51,32 @@ GlobalSection(SolutionConfigurationPlatforms) = preSolution CheckedShared|ARM = CheckedShared|ARM CheckedShared|ARM64 = CheckedShared|ARM64 + CheckedShared|ARM64EC = CheckedShared|ARM64EC CheckedShared|Win32 = CheckedShared|Win32 CheckedShared|x64 = CheckedShared|x64 Checked|ARM = Checked|ARM Checked|ARM64 = Checked|ARM64 + Checked|ARM64EC = Checked|ARM64EC Checked|Win32 = Checked|Win32 Checked|x64 = Checked|x64 DebugShared|ARM = DebugShared|ARM DebugShared|ARM64 = DebugShared|ARM64 + DebugShared|ARM64EC = DebugShared|ARM64EC DebugShared|Win32 = DebugShared|Win32 DebugShared|x64 = DebugShared|x64 Debug|ARM = Debug|ARM Debug|ARM64 = Debug|ARM64 + Debug|ARM64EC = Debug|ARM64EC Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 ReleaseShared|ARM = ReleaseShared|ARM ReleaseShared|ARM64 = ReleaseShared|ARM64 + ReleaseShared|ARM64EC = ReleaseShared|ARM64EC ReleaseShared|Win32 = ReleaseShared|Win32 ReleaseShared|x64 = ReleaseShared|x64 Release|ARM = Release|ARM Release|ARM64 = Release|ARM64 + Release|ARM64EC = Release|ARM64EC Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection @@ -79,6 +85,8 @@ {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -87,6 +95,8 @@ {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|ARM.Build.0 = Checked|ARM {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|ARM64.ActiveCfg = Checked|ARM64 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|ARM64.Build.0 = Checked|ARM64 + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|Win32.ActiveCfg = Checked|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|Win32.Build.0 = Checked|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Checked|x64.ActiveCfg = Checked|x64 @@ -95,6 +105,8 @@ {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|ARM.Build.0 = DebugShared|ARM {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|Win32.Build.0 = DebugShared|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -103,6 +115,8 @@ {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|ARM.Build.0 = Debug|ARM {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|ARM64.ActiveCfg = Debug|ARM64 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|ARM64.Build.0 = Debug|ARM64 + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|Win32.ActiveCfg = Debug|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|Win32.Build.0 = Debug|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Debug|x64.ActiveCfg = Debug|x64 @@ -111,6 +125,8 @@ {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -119,6 +135,8 @@ {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|ARM.Build.0 = Release|ARM {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|ARM64.ActiveCfg = Release|ARM64 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|ARM64.Build.0 = Release|ARM64 + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|ARM64EC.Build.0 = Release|ARM64EC {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|Win32.ActiveCfg = Release|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|Win32.Build.0 = Release|Win32 {BA66DB50-E2F0-4C9E-B650-0CCA6C66E1C1}.Release|x64.ActiveCfg = Release|x64 @@ -127,6 +145,8 @@ {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -135,6 +155,8 @@ {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|ARM.Build.0 = Checked|ARM {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|ARM64.ActiveCfg = Checked|ARM64 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|ARM64.Build.0 = Checked|ARM64 + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|Win32.ActiveCfg = Checked|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|Win32.Build.0 = Checked|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Checked|x64.ActiveCfg = Checked|x64 @@ -143,6 +165,8 @@ {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|ARM.Build.0 = DebugShared|ARM {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|Win32.Build.0 = DebugShared|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -151,6 +175,8 @@ {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|ARM.Build.0 = Debug|ARM {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|ARM64.ActiveCfg = Debug|ARM64 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|ARM64.Build.0 = Debug|ARM64 + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|Win32.ActiveCfg = Debug|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|Win32.Build.0 = Debug|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Debug|x64.ActiveCfg = Debug|x64 @@ -159,6 +185,8 @@ {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -167,6 +195,8 @@ {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|ARM.Build.0 = Release|ARM {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|ARM64.ActiveCfg = Release|ARM64 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|ARM64.Build.0 = Release|ARM64 + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|ARM64EC.Build.0 = Release|ARM64EC {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|Win32.ActiveCfg = Release|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|Win32.Build.0 = Release|Win32 {563A631D-FE07-47BC-A98F-9FE5B3EBABFA}.Release|x64.ActiveCfg = Release|x64 @@ -175,6 +205,8 @@ {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -183,6 +215,8 @@ {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|ARM.Build.0 = Checked|ARM {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|ARM64.ActiveCfg = Checked|ARM64 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|ARM64.Build.0 = Checked|ARM64 + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|Win32.ActiveCfg = Checked|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|Win32.Build.0 = Checked|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Checked|x64.ActiveCfg = Checked|x64 @@ -191,6 +225,8 @@ {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|ARM.Build.0 = DebugShared|ARM {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|Win32.Build.0 = DebugShared|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -199,6 +235,8 @@ {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|ARM.Build.0 = Debug|ARM {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|ARM64.ActiveCfg = Debug|ARM64 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|ARM64.Build.0 = Debug|ARM64 + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|Win32.ActiveCfg = Debug|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|Win32.Build.0 = Debug|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Debug|x64.ActiveCfg = Debug|x64 @@ -207,6 +245,8 @@ {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -215,6 +255,8 @@ {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|ARM.Build.0 = Release|ARM {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|ARM64.ActiveCfg = Release|ARM64 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|ARM64.Build.0 = Release|ARM64 + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|ARM64EC.Build.0 = Release|ARM64EC {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|Win32.ActiveCfg = Release|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|Win32.Build.0 = Release|Win32 {F3DA2BF5-E84A-4F71-80AB-884594863D3A}.Release|x64.ActiveCfg = Release|x64 @@ -223,6 +265,8 @@ {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -231,6 +275,8 @@ {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|ARM.Build.0 = Checked|ARM {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|ARM64.ActiveCfg = Checked|ARM64 {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|ARM64.Build.0 = Checked|ARM64 + {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|Win32.ActiveCfg = Checked|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|Win32.Build.0 = Checked|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.Checked|x64.ActiveCfg = Checked|x64 @@ -239,6 +285,8 @@ {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|ARM.Build.0 = DebugShared|ARM {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|Win32.Build.0 = DebugShared|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -247,6 +295,8 @@ {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|ARM.Build.0 = Debug|ARM {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|ARM64.ActiveCfg = Debug|ARM64 {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|ARM64.Build.0 = Debug|ARM64 + {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|Win32.ActiveCfg = Debug|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|Win32.Build.0 = Debug|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.Debug|x64.ActiveCfg = Debug|x64 @@ -255,6 +305,8 @@ {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -263,6 +315,8 @@ {1A147336-891E-49AC-9EAD-A750599A224C}.Release|ARM.Build.0 = Release|ARM {1A147336-891E-49AC-9EAD-A750599A224C}.Release|ARM64.ActiveCfg = Release|ARM64 {1A147336-891E-49AC-9EAD-A750599A224C}.Release|ARM64.Build.0 = Release|ARM64 + {1A147336-891E-49AC-9EAD-A750599A224C}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {1A147336-891E-49AC-9EAD-A750599A224C}.Release|ARM64EC.Build.0 = Release|ARM64EC {1A147336-891E-49AC-9EAD-A750599A224C}.Release|Win32.ActiveCfg = Release|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.Release|Win32.Build.0 = Release|Win32 {1A147336-891E-49AC-9EAD-A750599A224C}.Release|x64.ActiveCfg = Release|x64 @@ -271,6 +325,8 @@ {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -279,6 +335,8 @@ {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|ARM.Build.0 = Checked|ARM {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|ARM64.ActiveCfg = Checked|ARM64 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|ARM64.Build.0 = Checked|ARM64 + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|Win32.ActiveCfg = Checked|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|Win32.Build.0 = Checked|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Checked|x64.ActiveCfg = Checked|x64 @@ -287,6 +345,8 @@ {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|ARM.Build.0 = DebugShared|ARM {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|Win32.Build.0 = DebugShared|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -295,6 +355,8 @@ {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|ARM.Build.0 = Debug|ARM {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|ARM64.ActiveCfg = Debug|ARM64 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|ARM64.Build.0 = Debug|ARM64 + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|Win32.ActiveCfg = Debug|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|Win32.Build.0 = Debug|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Debug|x64.ActiveCfg = Debug|x64 @@ -303,6 +365,8 @@ {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -311,6 +375,8 @@ {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|ARM.Build.0 = Release|ARM {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|ARM64.ActiveCfg = Release|ARM64 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|ARM64.Build.0 = Release|ARM64 + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|ARM64EC.Build.0 = Release|ARM64EC {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|Win32.ActiveCfg = Release|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|Win32.Build.0 = Release|Win32 {BDEC2D44-C957-4940-A32B-02824AF6E21D}.Release|x64.ActiveCfg = Release|x64 @@ -319,6 +385,8 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -327,6 +395,8 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|ARM.Build.0 = Checked|ARM {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|ARM64.ActiveCfg = Checked|ARM64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|ARM64.Build.0 = Checked|ARM64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|Win32.ActiveCfg = Checked|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|Win32.Build.0 = Checked|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Checked|x64.ActiveCfg = Checked|x64 @@ -335,6 +405,8 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|ARM.Build.0 = DebugShared|ARM {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|Win32.Build.0 = DebugShared|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -343,6 +415,8 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|ARM.Build.0 = Debug|ARM {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|ARM64.ActiveCfg = Debug|ARM64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|ARM64.Build.0 = Debug|ARM64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|Win32.ActiveCfg = Debug|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|Win32.Build.0 = Debug|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Debug|x64.ActiveCfg = Debug|x64 @@ -351,6 +425,8 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -359,6 +435,8 @@ {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|ARM.Build.0 = Release|ARM {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|ARM64.ActiveCfg = Release|ARM64 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|ARM64.Build.0 = Release|ARM64 + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|ARM64EC.Build.0 = Release|ARM64EC {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|Win32.ActiveCfg = Release|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|Win32.Build.0 = Release|Win32 {95CC809B-03FC-4EDB-BB20-FD07A698C05F}.Release|x64.ActiveCfg = Release|x64 @@ -367,6 +445,8 @@ {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -375,6 +455,8 @@ {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|ARM.Build.0 = Checked|ARM {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|ARM64.ActiveCfg = Checked|ARM64 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|ARM64.Build.0 = Checked|ARM64 + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|Win32.ActiveCfg = Checked|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|Win32.Build.0 = Checked|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Checked|x64.ActiveCfg = Checked|x64 @@ -383,6 +465,8 @@ {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|ARM.Build.0 = DebugShared|ARM {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|Win32.Build.0 = DebugShared|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -391,6 +475,8 @@ {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|ARM.Build.0 = Debug|ARM {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|ARM64.ActiveCfg = Debug|ARM64 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|ARM64.Build.0 = Debug|ARM64 + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|Win32.ActiveCfg = Debug|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|Win32.Build.0 = Debug|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Debug|x64.ActiveCfg = Debug|x64 @@ -399,6 +485,8 @@ {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -407,6 +495,8 @@ {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|ARM.Build.0 = Release|ARM {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|ARM64.ActiveCfg = Release|ARM64 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|ARM64.Build.0 = Release|ARM64 + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|ARM64EC.Build.0 = Release|ARM64EC {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|Win32.ActiveCfg = Release|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|Win32.Build.0 = Release|Win32 {E1184509-74F7-421D-A8C8-FEEC2C28ECC2}.Release|x64.ActiveCfg = Release|x64 @@ -415,6 +505,8 @@ {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -423,6 +515,8 @@ {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|ARM.Build.0 = Checked|ARM {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|ARM64.ActiveCfg = Checked|ARM64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|ARM64.Build.0 = Checked|ARM64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|Win32.ActiveCfg = Checked|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|Win32.Build.0 = Checked|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Checked|x64.ActiveCfg = Checked|x64 @@ -431,6 +525,8 @@ {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|ARM.Build.0 = DebugShared|ARM {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|Win32.Build.0 = DebugShared|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -439,6 +535,8 @@ {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|ARM.Build.0 = Debug|ARM {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|ARM64.ActiveCfg = Debug|ARM64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|ARM64.Build.0 = Debug|ARM64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|Win32.ActiveCfg = Debug|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|Win32.Build.0 = Debug|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Debug|x64.ActiveCfg = Debug|x64 @@ -447,6 +545,8 @@ {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -455,6 +555,8 @@ {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|ARM.Build.0 = Release|ARM {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|ARM64.ActiveCfg = Release|ARM64 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|ARM64.Build.0 = Release|ARM64 + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|ARM64EC.Build.0 = Release|ARM64EC {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|Win32.ActiveCfg = Release|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|Win32.Build.0 = Release|Win32 {E599F5AA-F9A3-46CC-8DB0-C8DEFCEB90C5}.Release|x64.ActiveCfg = Release|x64 @@ -463,6 +565,8 @@ {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -471,6 +575,8 @@ {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|ARM.Build.0 = Checked|ARM {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|ARM64.ActiveCfg = Checked|ARM64 {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|ARM64.Build.0 = Checked|ARM64 + {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|Win32.ActiveCfg = Checked|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|Win32.Build.0 = Checked|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.Checked|x64.ActiveCfg = Checked|x64 @@ -479,6 +585,8 @@ {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|ARM.Build.0 = DebugShared|ARM {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|Win32.Build.0 = DebugShared|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -487,6 +595,8 @@ {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|ARM.Build.0 = Debug|ARM {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|ARM64.ActiveCfg = Debug|ARM64 {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|ARM64.Build.0 = Debug|ARM64 + {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|Win32.ActiveCfg = Debug|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|Win32.Build.0 = Debug|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.Debug|x64.ActiveCfg = Debug|x64 @@ -495,6 +605,8 @@ {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -503,6 +615,8 @@ {B545694A-CE2A-44F8-BA88-147C36369308}.Release|ARM.Build.0 = Release|ARM {B545694A-CE2A-44F8-BA88-147C36369308}.Release|ARM64.ActiveCfg = Release|ARM64 {B545694A-CE2A-44F8-BA88-147C36369308}.Release|ARM64.Build.0 = Release|ARM64 + {B545694A-CE2A-44F8-BA88-147C36369308}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {B545694A-CE2A-44F8-BA88-147C36369308}.Release|ARM64EC.Build.0 = Release|ARM64EC {B545694A-CE2A-44F8-BA88-147C36369308}.Release|Win32.ActiveCfg = Release|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.Release|Win32.Build.0 = Release|Win32 {B545694A-CE2A-44F8-BA88-147C36369308}.Release|x64.ActiveCfg = Release|x64 @@ -511,6 +625,8 @@ {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -519,6 +635,8 @@ {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|ARM.Build.0 = Checked|ARM {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|ARM64.ActiveCfg = Checked|ARM64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|ARM64.Build.0 = Checked|ARM64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|Win32.ActiveCfg = Checked|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|Win32.Build.0 = Checked|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Checked|x64.ActiveCfg = Checked|x64 @@ -527,6 +645,8 @@ {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|ARM.Build.0 = DebugShared|ARM {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|Win32.Build.0 = DebugShared|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -535,6 +655,8 @@ {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|ARM.Build.0 = Debug|ARM {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|ARM64.ActiveCfg = Debug|ARM64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|Win32.ActiveCfg = Debug|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|Win32.Build.0 = Debug|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Debug|x64.ActiveCfg = Debug|x64 @@ -543,6 +665,8 @@ {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -551,6 +675,8 @@ {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|ARM.Build.0 = Release|ARM {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|ARM64.ActiveCfg = Release|ARM64 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|ARM64.Build.0 = Release|ARM64 + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|ARM64EC.Build.0 = Release|ARM64EC {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|Win32.ActiveCfg = Release|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|Win32.Build.0 = Release|Win32 {6B11F6A8-B131-4D2B-80EF-5731A9016436}.Release|x64.ActiveCfg = Release|x64 @@ -559,6 +685,8 @@ {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -567,6 +695,8 @@ {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|ARM.Build.0 = Checked|ARM {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|ARM64.ActiveCfg = Checked|ARM64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|ARM64.Build.0 = Checked|ARM64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|Win32.ActiveCfg = Checked|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|Win32.Build.0 = Checked|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Checked|x64.ActiveCfg = Checked|x64 @@ -575,6 +705,8 @@ {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|ARM.Build.0 = DebugShared|ARM {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|Win32.Build.0 = DebugShared|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -583,6 +715,8 @@ {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|ARM.Build.0 = Debug|ARM {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|ARM64.ActiveCfg = Debug|ARM64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|ARM64.Build.0 = Debug|ARM64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|Win32.ActiveCfg = Debug|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|Win32.Build.0 = Debug|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Debug|x64.ActiveCfg = Debug|x64 @@ -591,6 +725,8 @@ {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -599,6 +735,8 @@ {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|ARM.Build.0 = Release|ARM {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|ARM64.ActiveCfg = Release|ARM64 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|ARM64.Build.0 = Release|ARM64 + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|ARM64EC.Build.0 = Release|ARM64EC {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|Win32.ActiveCfg = Release|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|Win32.Build.0 = Release|Win32 {63AF9025-A6CE-4147-A05D-6E2CCFD3A0D7}.Release|x64.ActiveCfg = Release|x64 @@ -607,6 +745,8 @@ {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -615,6 +755,8 @@ {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|ARM.Build.0 = Checked|ARM {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|ARM64.ActiveCfg = Checked|ARM64 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|ARM64.Build.0 = Checked|ARM64 + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|Win32.ActiveCfg = Checked|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|Win32.Build.0 = Checked|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Checked|x64.ActiveCfg = Checked|x64 @@ -623,6 +765,8 @@ {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|ARM.Build.0 = DebugShared|ARM {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|Win32.Build.0 = DebugShared|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -631,6 +775,8 @@ {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|ARM.Build.0 = Debug|ARM {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|ARM64.ActiveCfg = Debug|ARM64 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|ARM64.Build.0 = Debug|ARM64 + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|Win32.ActiveCfg = Debug|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|Win32.Build.0 = Debug|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|x64.ActiveCfg = Debug|x64 @@ -639,6 +785,8 @@ {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -647,6 +795,8 @@ {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|ARM.Build.0 = Release|ARM {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|ARM64.ActiveCfg = Release|ARM64 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|ARM64.Build.0 = Release|ARM64 + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|ARM64EC.Build.0 = Release|ARM64EC {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|Win32.ActiveCfg = Release|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|Win32.Build.0 = Release|Win32 {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|x64.ActiveCfg = Release|x64 @@ -655,6 +805,8 @@ {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -663,6 +815,8 @@ {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|ARM.Build.0 = Checked|ARM {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|ARM64.ActiveCfg = Checked|ARM64 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|ARM64.Build.0 = Checked|ARM64 + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|ARM64EC.Build.0 = Checked|ARM64EC {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|Win32.ActiveCfg = Checked|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|Win32.Build.0 = Checked|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Checked|x64.ActiveCfg = Checked|x64 @@ -671,6 +825,8 @@ {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|ARM.Build.0 = DebugShared|ARM {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|ARM64.ActiveCfg = DebugShared|ARM64 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|ARM64.Build.0 = DebugShared|ARM64 + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|ARM64EC.ActiveCfg = DebugShared|ARM64EC + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|ARM64EC.Build.0 = DebugShared|ARM64EC {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|Win32.ActiveCfg = DebugShared|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|Win32.Build.0 = DebugShared|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.DebugShared|x64.ActiveCfg = DebugShared|x64 @@ -679,6 +835,8 @@ {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|ARM.Build.0 = Debug|ARM {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|ARM64.ActiveCfg = Debug|ARM64 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|ARM64.Build.0 = Debug|ARM64 + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|Win32.ActiveCfg = Debug|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|Win32.Build.0 = Debug|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|x64.ActiveCfg = Debug|x64 @@ -687,6 +845,8 @@ {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|ARM.Build.0 = ReleaseShared|ARM {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|ARM64.ActiveCfg = ReleaseShared|ARM64 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|ARM64.Build.0 = ReleaseShared|ARM64 + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|ARM64EC.ActiveCfg = ReleaseShared|ARM64EC + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|ARM64EC.Build.0 = ReleaseShared|ARM64EC {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|Win32.ActiveCfg = ReleaseShared|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|Win32.Build.0 = ReleaseShared|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.ReleaseShared|x64.ActiveCfg = ReleaseShared|x64 @@ -695,6 +855,8 @@ {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|ARM.Build.0 = Release|ARM {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|ARM64.ActiveCfg = Release|ARM64 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|ARM64.Build.0 = Release|ARM64 + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|ARM64EC.Build.0 = Release|ARM64EC {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|Win32.ActiveCfg = Release|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|Win32.Build.0 = Release|Win32 {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|x64.ActiveCfg = Release|x64 @@ -703,6 +865,8 @@ {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|ARM.Build.0 = CheckedShared|ARM {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|ARM64.ActiveCfg = CheckedShared|ARM64 {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|ARM64.Build.0 = CheckedShared|ARM64 + {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|ARM64EC.ActiveCfg = CheckedShared|ARM64EC + {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|ARM64EC.Build.0 = CheckedShared|ARM64EC {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|Win32.ActiveCfg = CheckedShared|Win32 {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|Win32.Build.0 = CheckedShared|Win32 {9A2D9099-E1A2-4287-B845-E3598AD24D70}.CheckedShared|x64.ActiveCfg = CheckedShared|x64 @@ -711,6 +875,8 @@ {9A2D9099-E1A2-4287-B845-E3598AD24D70}.Checked|ARM.Build.0 = Checked|ARM {9A2D9099-E1A2-4287-B845-E3598AD24D70}.Checked|ARM64.ActiveCfg = Checked|ARM64 {9A2D9099-E1A2-4287-B845-E3598AD24D70}.Checked|ARM64.Build.0 = Checked|ARM64 + {9A2D9099-E1A2-4287-B845-E3598AD24D70}.Checked|ARM64EC.ActiveCfg = Checked|ARM64EC + {9A2D9099-E1A2-4287-B845-E3598AD24D70}.Che... [truncated message content] |
From: <sv...@op...> - 2024-10-20 13:06:42
|
Author: manx Date: Sun Oct 20 15:06:30 2024 New Revision: 21894 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21894 Log: [Mod] build: premake: Enable ARM64EC projects for VS2022. Modified: trunk/OpenMPT/build/premake/premake.lua Modified: trunk/OpenMPT/build/premake/premake.lua ============================================================================== --- trunk/OpenMPT/build/premake/premake.lua Sun Oct 20 15:05:51 2024 (r21893) +++ trunk/OpenMPT/build/premake/premake.lua Sun Oct 20 15:06:30 2024 (r21894) @@ -202,7 +202,15 @@ mpt_bindirsuffix = _OPTIONS["windows-version"] if _OPTIONS["windows-version"] == "win10" then - allplatforms = { "x86", "x86_64", "arm", "arm64" } + if _OPTIONS["clang"] then + allplatforms = { "x86", "x86_64", "arm", "arm64" } + else + if _OPTIONS["windows-family"] == "uwp" then + allplatforms = { "x86", "x86_64", "arm", "arm64" } + else + allplatforms = { "x86", "x86_64", "arm", "arm64", "arm64ec" } + end + end elseif _OPTIONS["windows-version"] == "win81" then allplatforms = { "x86", "x86_64", "arm" } elseif _OPTIONS["windows-version"] == "win8" then |