Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mpg123 for openSUSE:Factory checked 
in at 2021-03-29 18:21:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mpg123 (Old)
 and      /work/SRC/openSUSE:Factory/.mpg123.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mpg123"

Mon Mar 29 18:21:01 2021 rev:20 rq:880598 version:1.26.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/mpg123/mpg123.changes    2021-02-22 
14:57:53.077754649 +0100
+++ /work/SRC/openSUSE:Factory/.mpg123.new.2401/mpg123.changes  2021-03-29 
18:21:03.778218349 +0200
@@ -1,0 +2,16 @@
+Mon Mar 22 20:45:47 UTC 2021 - Luigi Baldoni <aloi...@gmx.com>
+
+- Update to version  1.26.5
+  * Add ./configure --enable-xdebug (for the resampler issue).
+  * Avoid denormals in the resampler by adding an alternating
+    offset (helps performance without -ffast-math, depending on
+    platform).
+  libmpg123:
+  * Fix ID3v2 APIC parsing when frame length bit is set (bug
+    306).
+  * Also handle the group flag (skip the group byte).
+  * Also fix up frame flag handling for ID3v2.3. Did not crop up
+    yet, but it was just wrong. Impact was not detecting and
+    bailing out on compressed or encrypted frames properly.
+
+-------------------------------------------------------------------

Old:
----
  mpg123-1.26.4.tar.bz2
  mpg123-1.26.4.tar.bz2.sig

New:
----
  mpg123-1.26.5.tar.bz2
  mpg123-1.26.5.tar.bz2.sig

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

Other differences:
------------------
++++++ mpg123.spec ++++++
--- /var/tmp/diff_new_pack.8fO86S/_old  2021-03-29 18:21:04.314218898 +0200
+++ /var/tmp/diff_new_pack.8fO86S/_new  2021-03-29 18:21:04.318218902 +0200
@@ -18,7 +18,7 @@
 
 %define sover   0
 Name:           mpg123
-Version:        1.26.4
+Version:        1.26.5
 Release:        0
 Summary:        Console MPEG audio player and decoder library
 License:        LGPL-2.1-only
@@ -71,8 +71,8 @@
 
 %package -n libsyn123-%{sover}
 Summary:        MPEG audio decoder library
-Recommends:     (%{name}-pulse if pulseaudio)
 Recommends:     (%{name}-jack if jack)
+Recommends:     (%{name}-pulse if pulseaudio)
 
 %description -n libsyn123-%{sover}
 The mpg123 distribution contains a real time MPEG 1.0/2.0/2.5 audio 
player/decoder for

++++++ mpg123-1.26.4.tar.bz2 -> mpg123-1.26.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/INSTALL new/mpg123-1.26.5/INSTALL
--- old/mpg123-1.26.4/INSTALL   2020-12-23 20:50:36.000000000 +0100
+++ new/mpg123-1.26.5/INSTALL   2021-03-21 21:52:06.000000000 +0100
@@ -1,37 +1,44 @@
 mpg123 install hints
 --------------------
 
-(This file has very long lines - die-hard terminal nostalgists can be 
satisfied by `fmt -s -w 75 < INSTALL | less`. I think it's better to let the 
reader's preference rule than to preformat the stuff to some arbitrary width.)
-
-
 0. Prerequesites
 
 You really need:
 
 - a C compiler; we try to keep the code ANSI C89/ISO C90 compatible
   gcc from 2.95 on should work, others, too - please report any issues
-  Actually, we have a confirmed working build (svn trunk leading to release 
0.67) on SunOS 4.1.4 with gcc-2.7.0 .
+  Actually, we have a confirmed working build (svn trunk leading to
+  release 0.67) on SunOS 4.1.4 with gcc-2.7.0 .
 
-- an (UNIX-like) operating system with standard tools; MinGW32 and Cygwin are 
working for Microsoft Windows, too. We also have users happily on OS/2.
-- For the library only, you may get lucky with MSVC++ using the project files 
under ports/
+- an (UNIX-like) operating system with standard tools; MinGW32 and
+  Cygwin are working for Microsoft Windows, too. We also have users happily
+  on OS/2.
+- For the library only, you may get lucky with MSVC++ using the project
+  files under ports/
 - For other exotic platforms, also see ports/
-- If building from direct SCM checkout, you need GNU autotools installed (see 
below).
+- If building from direct SCM checkout, you need GNU autotools installed
+  (see below).
 
 You want:
 
-- working assembler (recent GNU binutils) if using certain CPU optimizations
-- headers and lib for certain audio output drivers (libasound for alsa, sdl 
for sdl...)
+- working assembler (recent GNU binutils) if using certain CPU
+  optimizations
+- headers and lib for certain audio output drivers (libasound for alsa,
+  sdl for sdl...)
 
 1. Build
 
-There is one main supported way to get your mpg123 installation consisting of
+There is one main supported way to get your mpg123 installation
+consisting of
 
-       a) the mpg123 binary file
-           - with libmpg123 as shared library or statically linked
-           - with audio output plugins, or one statically linked
-       b) a man page
+a) the mpg123 binary file
+  - with libmpg123, libout123, and libsyn123 as shared libraries or
+    statically linked
+  - with audio output plugins for libout123, or one statically linked
+b) a man page
 
-(you may want to copy some of the documentation - README, etc - to 
/usr/share/doc/mpg123 or the like, too)
+(you may want to copy some of the documentation - README, etc - to
+/usr/share/doc/mpg123 or the like, too)
 
 This way is the usual GNU 3-step procedure:
 
@@ -43,27 +50,48 @@
 
        ./configure --help
 
-for a list of possible parameters you can specify in the configuration step. 
The obvious are --prefix and the normal GNU autotool bunch, but others include 
what audio subsystem to use and what CPU optimizations to build in.
-For the optimizations (decoder choice), the default is a build that combines 
all usable optimizations for the platform and chooses one at runtime (see 
--cpu, --list-cpu and --test-cpu parameters).
-
-There are various parameters you can tune, but of course the defaults are what 
is mainly tested.
-
-Also, various library features can be left out via --disable options (like 
output formats, resampling modes). That way, you can strive for a minimal build 
that only does what you really need. Not every combination of library features 
is tested regularily, so you might hit some speed bumps, but usually stuff that 
is easily worked out (at least for the mpg123 team when you report it).
+for a list of possible parameters you can specify in the configuration
+step. The obvious are --prefix and the normal GNU autotool bunch, but
+others include what audio subsystem to use and what CPU optimizations
+to build in.
+For the optimizations (decoder choice), the default is a build that
+combines all usable optimizations for the platform and chooses one at
+runtime (see --cpu, --list-cpu and --test-cpu parameters).
+
+There are various parameters you can tune, but of course the defaults
+are what is mainly tested.
+
+Also, various library features can be left out via --disable options
+(like output formats, resampling modes). That way, you can strive for a
+minimal build that only does what you really need. Not every combination
+of library features is tested regularily, so you might hit some speed
+bumps, but usually stuff that is easily worked out (at least for the
+mpg123 team when you report it).
 
 An example (working on mpg123 trunk r3062):
 
-       CFLAGS="-Os -s" ./configure --with-cpu=generic  --disable-id3v2 
--disable-lfs-alias --disable-feature-report --with-seektable=0 --disable-16bit 
--disable-32bit --disable-8bit --disable-messages --disable-feeder 
--disable-ntom --disable-downsample --disable-icy && make
-
-That, and further application of `strip --strip-unneeded`, yields a lean 93 
KiB shared library for MPEG layer I/II/III decoding to floating point on my 
x86-64 system (it should be a bit smaller on 32 bit systems). When disabling 
layers I and II, too, that goes down to 81 KiB.
+       CFLAGS="-Os -s" ./configure --with-cpu=generic  --disable-id3v2
+       --disable-lfs-alias --disable-feature-report --with-seektable=0
+       --disable-16bit --disable-32bit --disable-8bit --disable-messages
+       --disable-feeder --disable-ntom --disable-downsample --disable-icy
+       && make
+
+That, and further application of `strip --strip-unneeded`, yields a lean
+93 KiB shared library for MPEG layer I/II/III decoding to floating point
+on my x86-64 system (it should be a bit smaller on 32 bit systems). When
+disabling layers I and II, too, that goes down to 81 KiB.
 
 The shared library of a full build weighs 170 KiB after stripping.
 
 
 2. Developer build
 
-This project uses GNU autotools (no specific version, but they should be 
fairly recent), also libtool. You need to have those installed, as it is 
usually the case for build environments based on the GNU toolchain.
+This project uses GNU autotools (no specific version, but they should
+be fairly recent), also libtool. You need to have those installed, as
+it is usually the case for build environments based on the GNU toolchain.
 
-One a fresh SCM checkout, or after changing things in configure.ac, you need 
to run
+One a fresh SCM checkout, or after changing things in configure.ac,
+you need to run
 
        autoreconf -iv
 
@@ -72,44 +100,77 @@
 
 3. Library-only build
 
-If you do not want to build the whole thing, but only the library, run
+Mpg123 uses a non-recursive build. If you want to build only one of the
+libraries, specify it as a target:
 
        ./configure
-       cd src/libmpg123
-       make
+       make src/libmpg123/libmpg123.la
+       make src/libsyn123/libsyn123.la
+       make src/libout123/libout123.la
 
-You can then find the library itself under src/libmpg123/.libs (libtool likes 
to hide things there).
+You can then find the library itself under src/lib*123/.libs (libtool
+likes to hide things there).
 
 
 4. Exotic platforms
 
-See the ports/ directory for some help for building at least libmpg123 without 
the UNIX shell / autotools. The main strategy is to write a config.h to replace 
what configure would generate and then have a correct listing of all source 
files involved in that configuration (there are optional files for different 
decoder choices, for example).
+See the ports/ directory for some help for building at least libmpg123
+without the UNIX shell / autotools. The main strategy is to write
+a config.h to replace what configure would generate and then have a
+correct listing of all source files involved in that configuration
+(there are optional files for different decoder choices, for example).
 
 Then compile objects, link.
 
+Instead of manually curated MSVC project files, there is a CMake port
+now in ports/cmake to build mpg123 with the MS compilers. It might be
+helpful for other platforms, too. But the main build system for
+POSIX-like systems is the autotools one.
+
 
 4a. Preparing Win32 binary packages.
 
-Caution: You should make sure to use some gcc >= 4.2.0, even if it's still the 
experimental package for MinGW32.
-This helps preventing incompatibilities between generated DLL files and other 
compilers (it's about stack alignment).
+Caution: You should make sure to use some gcc >= 4.2.0, even if it's
+still the experimental package for MinGW32.
+This helps preventing incompatibilities between generated DLL files and
+other compilers (it's about stack alignment).
 
 Get MinGW/MSYS installed, run the MSYS shell.
 Enter the mpg123 source directory.
 Execute sh ./windows-builds.sh .
 
-After some time, you should have some relevant files under releases/ (or 
releases\, for Windows people;-).
-You don't just get one build -- there are several variants, corresponding to 
what usually is to be found under http://mpg123.org/download/win32 .
+After some time, you should have some relevant files under releases/
+(or releases\, for Windows people;-).
+You don't just get one build -- there are several variants, corresponding
+to what usually is to be found under http://mpg123.org/download/win32 .
 
 
 5. Note on large file support
 
-The libmpg123 API includes the generic off_t type for file offsets and thus is 
subject to shape-shifting on systems that change off_t depending on build flags.
-To deal with the incompatibilities that can cause, the library needs to 
separate code paths for small and large off_t.
-Since version 1.12.0, a large-file-enabled libmpg123 (the default set by 
configure) provides a dual-mode ABI. Depending on _FILE_OFFSET_BITS, the 
mpg123.h header file selects different library symbols to use for your app.
-In both large-file and normal mode, the library should just work for your app.
+The libmpg123 API includes the generic off_t type for file offsets and
+thus is subject to shape-shifting on systems that change off_t depending
+on build flags.
+To deal with the incompatibilities that can cause, the library needs to
+separate code paths for small and large off_t.
+Since version 1.12.0, a large-file-enabled libmpg123 (the default set
+by configure) provides a dual-mode ABI. Depending on _FILE_OFFSET_BITS,
+the mpg123.h header file selects different library symbols to use for
+your app.
+In both large-file and normal mode, the library should just work for
+your app.
 
 6. Security
 
-If you consider installing the mpg123 binary or any program using libout123 as 
suid root, please don't. Apart from evaluating MPG123_MODDIR from the 
environment and thus possibly loading any code, the purpose of libout123 is to 
write audio data to somewhere. That includes writing raw data to files. Any 
files you specify to the program. You do not install dd or gzip suid root, do 
you?
-
-Programs using libmpg123 should be fine, as that one does not load runtime 
modules and also only has code to read files, not write them. Still, if your 
task involves decoding random MPEG audio files from anywhere, it is only 
sensible to limit the damage of a possible bug triggered by certain crafted 
files. This is not specific to libmpg123 but generally a good idea working with 
data from untrusted sources.
+If you consider installing the mpg123 binary or any program using
+libout123 as suid root, please don't. Apart from evaluating MPG123_MODDIR
+from the environment and thus possibly loading any code, the purpose of
+libout123 is to write audio data to somewhere. That includes writing raw
+data to files. Any files you specify to the program. You do not install
+dd or gzip suid root, do you?
+
+Programs using libmpg123 should be fine, as that one does not load runtime
+modules and also only has code to read files, not write them. Still,
+if your task involves decoding random MPEG audio files from anywhere,
+it is only sensible to limit the damage of a possible bug triggered by
+certain crafted files. This is not specific to libmpg123 but generally
+a good idea working with data from untrusted sources.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/NEWS new/mpg123-1.26.5/NEWS
--- old/mpg123-1.26.4/NEWS      2020-12-23 20:50:35.000000000 +0100
+++ new/mpg123-1.26.5/NEWS      2021-03-21 21:52:06.000000000 +0100
@@ -1,3 +1,15 @@
+1.26.5
+------
+- Add ./configure --enable-xdebug (for the resampler issue).
+- Avoid denormals in the resampler by adding an alternating offset
+  (helps performance without -ffast-math, depending on platform).
+- libmpg123:
+-- Fix ID3v2 APIC parsing when frame length bit is set (bug 306).
+-- Also handle the group flag (skip the group byte).
+-- Also fix up frame flag handling for ID3v2.3. Did not crop up yet,
+   but it was just wrong. Impact was not detecting and bailing out on
+   compressed or encrypted frames properly.
+
 1.26.4
 ------
 - Clarify seeking documentation regarding samples and PCM frames.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/configure new/mpg123-1.26.5/configure
--- old/mpg123-1.26.4/configure 2020-12-23 20:52:21.000000000 +0100
+++ new/mpg123-1.26.5/configure 2021-03-21 21:52:30.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mpg123 1.26.4.
+# Generated by GNU Autoconf 2.69 for mpg123 1.26.5.
 #
 # Report bugs to <maintai...@mpg123.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='mpg123'
 PACKAGE_TARNAME='mpg123'
-PACKAGE_VERSION='1.26.4'
-PACKAGE_STRING='mpg123 1.26.4'
+PACKAGE_VERSION='1.26.5'
+PACKAGE_STRING='mpg123 1.26.5'
 PACKAGE_BUGREPORT='maintai...@mpg123.org'
 PACKAGE_URL=''
 
@@ -979,6 +979,7 @@
 with_sysroot
 enable_libtool_lock
 enable_debug
+enable_xdebug
 enable_nagging
 enable_gapless
 enable_fifo
@@ -1589,7 +1590,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mpg123 1.26.4 to adapt to many kinds of systems.
+\`configure' configures mpg123 1.26.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1660,7 +1661,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mpg123 1.26.4:";;
+     short | recursive ) echo "Configuration of mpg123 1.26.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1681,6 +1682,7 @@
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --enable-debug=no/yes turn on debugging
+  --enable-xdebug=no/yes turn on extreme debugging
   --enable-nagging=no/yes turn on GCC's pedantic nagging with error on 
warnings, does not include --enable-debug anymore
   --enable-gapless=no/yes turn on gapless (enabled per default)
   --enable-fifo=no/yes FIFO support for control interface (auto-enabled on 
linux)
@@ -1888,7 +1890,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mpg123 configure 1.26.4
+mpg123 configure 1.26.5
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2494,7 +2496,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mpg123 $as_me 1.26.4, which was
+It was created by mpg123 $as_me 1.26.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2850,7 +2852,7 @@
 OUTLIB_PATCHLEVEL=0
 
 SYNAPI_VERSION=1
-SYNLIB_PATCHLEVEL=1
+SYNLIB_PATCHLEVEL=2
 
 LIBMPG123_VERSION=$API_VERSION:$LIB_PATCHLEVEL:$API_VERSION
 LIBOUT123_VERSION=$OUTAPI_VERSION:$OUTLIB_PATCHLEVEL:$OUTAPI_VERSION
@@ -3453,7 +3455,7 @@
 
 # Define the identity of the package.
  PACKAGE='mpg123'
- VERSION='1.26.4'
+ VERSION='1.26.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -14232,6 +14234,29 @@
 fi
 
 
+# Check whether --enable-xdebug was given.
+if test "${enable_xdebug+set}" = set; then :
+  enableval=$enable_xdebug;
+                if test "x$enableval" = xyes
+                then
+                  xdebugging="enabled"
+                else
+                  xdebugging="disabled"
+                fi
+
+else
+   xdebugging="disabled"
+
+fi
+
+
+if test x"$xdebugging" = xenabled; then
+  debugging=enabled
+
+$as_echo "#define XDEBUG 1" >>confdefs.h
+
+fi
+
 # Check whether --enable-nagging was given.
 if test "${enable_nagging+set}" = set; then :
   enableval=$enable_nagging;
@@ -20066,7 +20091,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mpg123 $as_me 1.26.4, which was
+This file was extended by mpg123 $as_me 1.26.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20132,7 +20157,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mpg123 config.status 1.26.4
+mpg123 config.status 1.26.5
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -21841,6 +21866,7 @@
   Compiler Optimization ... $with_optimization
   Gapless Support ......... $gapless
   Debugging ............... $debugging
+  Extreme debugging ....... $xdebugging
   Seek table size ......... $seektable
   FIFO support ............ $fifo
   Buffer .................. $buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/configure.ac 
new/mpg123-1.26.5/configure.ac
--- old/mpg123-1.26.4/configure.ac      2020-12-23 20:50:35.000000000 +0100
+++ new/mpg123-1.26.5/configure.ac      2021-03-21 21:52:06.000000000 +0100
@@ -8,7 +8,7 @@
 AC_PREREQ(2.57)
 
 dnl ############# Initialisation
-AC_INIT([mpg123], [1.26.4], [maintai...@mpg123.org])
+AC_INIT([mpg123], [1.26.5], [maintai...@mpg123.org])
 dnl Increment API_VERSION when the API gets changes (new functions).
 
 dnl libmpg123
@@ -21,7 +21,7 @@
 
 dnl libsyn123
 SYNAPI_VERSION=1
-SYNLIB_PATCHLEVEL=1
+SYNLIB_PATCHLEVEL=2
 
 dnl Since we want to be backwards compatible, both sides get set to 
API_VERSION.
 LIBMPG123_VERSION=$API_VERSION:$LIB_PATCHLEVEL:$API_VERSION
@@ -299,6 +299,24 @@
               [ debugging="disabled" ]
 )
 
+AC_ARG_ENABLE(xdebug,
+              [  --enable-xdebug=[no/yes] turn on extreme debugging],
+              [
+                if test "x$enableval" = xyes
+                then
+                  xdebugging="enabled"
+                else
+                  xdebugging="disabled"
+                fi
+              ],
+              [ xdebugging="disabled" ]
+)
+
+if test x"$xdebugging" = xenabled; then
+  debugging=enabled
+  AC_DEFINE(XDEBUG, 1, [ Define for extreme debugging. ])
+fi
+
 AC_ARG_ENABLE(nagging,
               [  --enable-nagging=[no/yes] turn on GCC's pedantic nagging with 
error on warnings, does not include --enable-debug anymore ],
               [
@@ -2598,6 +2616,7 @@
   Compiler Optimization ... $with_optimization
   Gapless Support ......... $gapless
   Debugging ............... $debugging
+  Extreme debugging ....... $xdebugging
   Seek table size ......... $seektable
   FIFO support ............ $fifo
   Buffer .................. $buffer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/mpg123.spec 
new/mpg123-1.26.5/mpg123.spec
--- old/mpg123-1.26.4/mpg123.spec       2020-12-23 20:52:44.000000000 +0100
+++ new/mpg123-1.26.5/mpg123.spec       2021-03-21 21:53:05.000000000 +0100
@@ -3,7 +3,7 @@
 # - devel packages for alsa, sdl, etc... to build the respective output 
modules.
 Summary:       The fast console mpeg audio decoder/player.
 Name:          mpg123
-Version:       1.26.4
+Version:       1.26.5
 Release:       1
 URL:           http://www.mpg123.org/
 License:       GPL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/src/config.h.in 
new/mpg123-1.26.5/src/config.h.in
--- old/mpg123-1.26.4/src/config.h.in   2020-12-23 20:52:21.000000000 +0100
+++ new/mpg123-1.26.5/src/config.h.in   2021-03-21 21:52:30.000000000 +0100
@@ -471,6 +471,9 @@
 # endif
 #endif
 
+/* Define for extreme debugging. */
+#undef XDEBUG
+
 /* Enable large inode numbers on Mac OS X 10.5.  */
 #ifndef _DARWIN_USE_64_BIT_INODE
 # define _DARWIN_USE_64_BIT_INODE 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/src/libmpg123/debug.h 
new/mpg123-1.26.5/src/libmpg123/debug.h
--- old/mpg123-1.26.4/src/libmpg123/debug.h     2020-12-23 20:50:36.000000000 
+0100
+++ new/mpg123-1.26.5/src/libmpg123/debug.h     2021-03-21 21:52:06.000000000 
+0100
@@ -30,6 +30,14 @@
 #define DBGPRFX ""
 #endif
 
+#ifdef XDEBUG
+#define mxdebug(s, ...) mdebug(s, __VA_ARGS__)
+#define xdebug(s) debug(s)
+#else
+#define mxdebug(s, ...)
+#define xdebug(s)
+#endif
+
 #ifdef DEBUG
 
 #include <stdio.h>
@@ -53,6 +61,7 @@
 #define debug13(s, a, b, c, d, e, f, g, h, i, j, k, l, m) fprintf(stderr, 
DBGPRFX"[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, 
j, k, l, m)
 #define debug14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, 
DBGPRFX"[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, 
j, k, l, m, n)
 #define debug15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) 
fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] debug: " s "\n", __LINE__, a, b, c, 
d, e, f, g, h, i, j, k, l, m, n, o)
+
 #else
 
 #define mdebug(s, ...) 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/src/libmpg123/id3.c 
new/mpg123-1.26.5/src/libmpg123/id3.c
--- old/mpg123-1.26.4/src/libmpg123/id3.c       2020-12-23 20:50:36.000000000 
+0100
+++ new/mpg123-1.26.5/src/libmpg123/id3.c       2021-03-21 21:52:06.000000000 
+0100
@@ -1089,16 +1089,19 @@
                                                tagpos += framesize; /* the 
important advancement in whole tag */
                                                /* for sanity, after full 
parsing tagpos should be == pos */
                                                /* debug4("ID3v2: found %s 
frame, size %lu (as bytes: 0x%08lx), flags 0x%016lx", id, framesize, framesize, 
fflags); */
-                                               /* %0abc0000 %0h00kmnp */
-                                               #define BAD_FFLAGS (unsigned 
long) 36784
-                                               #define PRES_TAG_FFLAG 16384
-                                               #define PRES_FILE_FFLAG 8192
-                                               #define READ_ONLY_FFLAG 4096
-                                               #define GROUP_FFLAG 64
-                                               #define COMPR_FFLAG 8
-                                               #define ENCR_FFLAG 4
-                                               #define UNSYNC_FFLAG 2
-                                               #define DATLEN_FFLAG 1
+                                               /* v2.4: %0abc0000 %0h00kmnp */
+                                               /* v2.3: %abc00000 %ijk00000 */
+                                               /* v2.2: just zero */
+                                               #define V3 (major == 3)
+                                               #define BAD_FFLAGS      
(unsigned long) (V3 ? 7967 : 36784)
+                                               #define PRES_TAG_FFLAG  
(unsigned long) (V3 ? 32768 : 16384)
+                                               #define PRES_FILE_FFLAG 
(unsigned long) (V3 ? 16384 : 8192)
+                                               #define READ_ONLY_FFLAG 
(unsigned long) (V3 ? 8192 : 4096)
+                                               #define GROUP_FFLAG     
(unsigned long) (V3 ? 32 : 64)
+                                               #define COMPR_FFLAG     
(unsigned long) (V3 ? 128 : 8)
+                                               #define ENCR_FFLAG      
(unsigned long) (V3 ? 64 : 4)
+                                               #define UNSYNC_FFLAG    
(unsigned long) (V3 ? 0 : 2)
+                                               #define DATLEN_FFLAG    
(unsigned long) (V3 ? 0 : 1)
                                                if(head_part < 4 && 
promote_framename(fr, id) != 0) continue;
 
                                                /* shall not or want not handle 
these */
@@ -1148,6 +1151,44 @@
                                                                
realdata[realsize] = 0;
                                                                debug2("ID3v2: 
de-unsync made %lu out of %lu bytes", realsize, framesize);
                                                        }
+                                                       // The spec says there 
is a group byte, without explicitly saying that it is
+                                                       // the first thing 
following the header. I just assume so, because of the
+                                                       // ordering of the 
flags.
+                                                       if(fflags & GROUP_FFLAG)
+                                                       { // Just skip group 
byte.
+                                                               if(realsize)
+                                                               {
+                                                                       
if(VERBOSE3)
+                                                                               
fprintf(stderr, "Note: frame of group %d\n", realdata[0]);
+                                                                       
--realsize;
+                                                                       
++realdata;
+                                                               } else 
if(NOQUIET)
+                                                                       
error("Grouped frame without group byte, even.");
+                                                       }
+                                                       if(fflags & 
DATLEN_FFLAG)
+                                                       {
+                                                               // Spec says 
the original (without compression or unsync) data length follows,
+                                                               // so it should 
match de-unsynced data now.
+                                                               if(realsize >= 
4)
+                                                               {
+                                                                       
unsigned long datlen;
+                                                                       
if(bytes_to_long(realdata, datlen) && datlen == realsize-4)
+                                                                       {
+                                                                               
realsize  -= 4;
+                                                                               
realdata  += 4;
+                                                                       } else
+                                                                       {
+                                                                               
if(NOQUIET)
+                                                                               
        error("frame data length bad, skipping");
+                                                                               
realsize = 0;
+                                                                       }
+                                                               } else
+                                                               {
+                                                                       
realsize = 0;
+                                                                       
if(NOQUIET)
+                                                                               
error("frame truncated at frame data length, skipping");
+                                                               }
+                                                       }
                                                        pos = 0; /* now at the 
beginning again... */
                                                        /* Avoid reading over 
boundary, even if there is a */
                                                        /* zero byte of padding 
for safety. */
@@ -1215,6 +1256,7 @@
                                                        if(unsyncbuffer)
                                                                
free(unsyncbuffer);
                                                }
+                                               #undef V3
                                                #undef BAD_FFLAGS
                                                #undef PRES_TAG_FFLAG
                                                #undef PRES_FILE_FFLAG
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/src/libsyn123/resample.c 
new/mpg123-1.26.5/src/libsyn123/resample.c
--- old/mpg123-1.26.4/src/libsyn123/resample.c  2020-12-23 20:50:36.000000000 
+0100
+++ new/mpg123-1.26.5/src/libsyn123/resample.c  2021-03-21 21:52:06.000000000 
+0100
@@ -1,7 +1,7 @@
 /*
        resample: low-latency usable and quick resampler
 
-       copyright 2018-2019 by the mpg123 project
+       copyright 2018-2020 by the mpg123 project
        licensed under the terms of the LGPL 2.1
        see COPYING and AUTHORS files in distribution or http://mpg123.org
 
@@ -422,12 +422,36 @@
        float y[LPF_4_ORDER];
 };
 
+#ifndef NO_DE_DENORM
+// Battling denormals. They naturally occur in IIR filters and
+// need to be avoided since they hurt performance on many CPUs.
+// Usually, gcc -ffast-math would also avoid them, but we cannot
+// count on that and debugging performance issues becomes confusing.
+// The idea is to add an alternatingly positive/negative small number
+// that is orders of magnitude above denormals to freshly computed
+// samples.
+// Downside: You never see a true zero if ther is true zero on input.
+// Upside would be that you'd convert to 24 or 32 bit integer anyway,
+// where you'd get your zero back (1 in 32 bit is around 5e-10.
+static const float denorm_base = 1e-15;
+#define DE_DENORM(val, base) (val) += (base);
+#define DE_DENORM_FLIP(base) (base) = -(base);
+#define DE_DENORM_INIT(base, sign) (base) = (sign)*denorm_base;
+#else
+#define DE_DENORM(val, base)
+#define DE_DENORM_FLIP(base)
+#define DE_DENORM_INIT(base, sign)
+#endif
+
 struct decimator_state
 {
        unsigned int sflags; // also stores decimation position (0 or 1)
        unsigned int n1;
        struct lpf4_hist *ch; // one for each channel, pointer into common array
        float *out_hist; // channels*STAGE_HISTORY, pointer to common block
+#ifndef NO_DE_DENORM
+       float dede; // current de-denormalization offset
+#endif
 };
 
 #ifdef SYN123_HIGH_PREC
@@ -524,6 +548,9 @@
        float *frame;  // One PCM frame to work on (one sample for each 
channel).
        float *prebuf; // [channels*BATCH]
        float *upbuf;  // [channels*2*BATCH]
+#ifndef NO_DE_DENORM
+       float dede; // de-denormalization offset, alternatingly used both in 
preemp and lpf
+#endif
        // Final lowpass filter setup.
        float lpf_cutoff;
        float lpf_w_c;
@@ -808,6 +835,7 @@
                                rd->ch[c].x[j] = rd->ch[c].y[j] = in[c];
                rd->n1 = 0;
                rd->sflags |= lowpass_flow|decimate_store;
+               DE_DENORM_INIT(rd->dede, dstage % 2 ? -1 : +1)
                stage_history_init(rrd, dstage+1, in);
        }
        float *out  = in; // output worker
@@ -832,12 +860,14 @@
                                ny += rd->ch[0].x[ni[j]]*lpf_4_coeff[0][j+1];
                                ny -= rd->ch[0].y[ni[j]]*lpf_4_coeff[1][j+1];
                        }
+                       DE_DENORM(ny, rd->dede)
                        rd->ch[0].x[rd->n1] = in[i];
                        rd->ch[0].y[rd->n1] = ny;
                        // Drop every second sample.
                        // Maybe its faster doing this in a separate step after 
all?
                        if(rd->sflags & decimate_store)
                        {
+                               DE_DENORM_FLIP(rd->dede)
                                *(out++) = ny;
                                rd->sflags &= ~decimate_store;
                                ++outs;
@@ -864,6 +894,7 @@
                                        ny += 
rd->ch[c].x[ni[j]]*lpf_4_coeff[0][j+1];
                                        ny -= 
rd->ch[c].y[ni[j]]*lpf_4_coeff[1][j+1];
                                }
+                               DE_DENORM(ny, rd->dede)
                                rd->ch[c].x[rd->n1] = in[c];
                                rd->ch[c].y[rd->n1] = ny;
                                frame[c] = ny;
@@ -873,6 +904,7 @@
                        // Maybe its faster doing this in a separate step after 
all?
                        if(rd->sflags & decimate_store)
                        {
+                               DE_DENORM_FLIP(rd->dede)
                                *(out++) = frame[0];
                                *(out++) = frame[1];
                                rd->sflags &= ~decimate_store;
@@ -901,6 +933,7 @@
                                        ny += 
rd->ch[c].x[ni[j]]*lpf_4_coeff[0][j+1];
                                        ny -= 
rd->ch[c].y[ni[j]]*lpf_4_coeff[1][j+1];
                                }
+                               DE_DENORM(ny, rd->dede)
                                rd->ch[c].x[rd->n1] = in[c];
                                rd->ch[c].y[rd->n1] = ny;
                                rrd->frame[c] = ny;
@@ -910,6 +943,7 @@
                        // Maybe its faster doing this in a separate step after 
all?
                        if(rd->sflags & decimate_store)
                        {
+                               DE_DENORM_FLIP(rd->dede)
                                for(unsigned int c=0; c<rrd->channels; ++c)
                                        *(out++) = rrd->frame[c];
                                rd->sflags &= ~decimate_store;
@@ -975,6 +1009,7 @@
                                nw -= rd->ch[c].pre_w[i]*rd->pre_a[n1][i]; \
                        } \
                        nw += in[c]; \
+                       DE_DENORM(nw, rd->dede) \
                        ny += rd->pre_b0 * nw; \
                        rd->ch[c].pre_w[rd->pre_n1] = nw; \
                        out[c] = ny; \
@@ -1020,6 +1055,7 @@
                                y += rd->ch[c].lpf_w[j][k]*rd->lpf_b[n1][k]; \
                                w -= rd->ch[c].lpf_w[j][k]*rd->lpf_a[n1][k]; \
                        } \
+                       DE_DENORM(w, rd->dede) \
                        rd->ch[c].lpf_w[j][n1n] = w; \
                        y += rd->lpf_b0*w; \
                        old_y = y; \
@@ -1056,6 +1092,7 @@
                        out++; \
                        sample = 0; \
                        LPF_DF2_SAMPLE(times, (&sample), out, 1) \
+                       DE_DENORM_FLIP(rd->dede) \
                        out++; \
                        in++; \
                } \
@@ -1071,6 +1108,7 @@
                        out += 2; \
                        frame[1] = frame[0] = 0; \
                        LPF_DF2_SAMPLE(times, frame, out, 2) \
+                       DE_DENORM_FLIP(rd->dede) \
                        out += 2; \
                        in  += 2; \
                } \
@@ -1086,6 +1124,7 @@
                        for(unsigned int c=0; c<rd->channels; ++c) \
                                rd->frame[c] = 0; \
                        LPF_DF2_SAMPLE(times, rd->frame, out, rd->channels) \
+                       DE_DENORM_FLIP(rd->dede) \
                        out += rd->channels; \
                        in  += rd->channels; \
                } \
@@ -1107,6 +1146,7 @@
                        float sample; \
                        PREEMP_DF2_SAMPLE(in, (&sample), 1) \
                        LPF_DF2_SAMPLE(times, (&sample), out, 1) \
+                       DE_DENORM_FLIP(rd->dede) \
                        in++; \
                        out++; \
                } \
@@ -1116,6 +1156,7 @@
                        float frame[2]; \
                        PREEMP_DF2_SAMPLE(in, frame, 2) \
                        LPF_DF2_SAMPLE(times, frame, out, 2) \
+                       DE_DENORM_FLIP(rd->dede) \
                        in  += 2; \
                        out += 2; \
                } \
@@ -1124,6 +1165,7 @@
                { \
                        PREEMP_DF2_SAMPLE(in, rd->frame, rd->channels) \
                        LPF_DF2_SAMPLE(times, rd->frame, out, rd->channels) \
+                       DE_DENORM_FLIP(rd->dede) \
                        in  += rd->channels; \
                        out += rd->channels; \
                } \
@@ -1150,6 +1192,7 @@
                for(unsigned int c=0; c<rd->channels; ++c) \
                        rd->frame[c] = 0; \
                LPF_DF2_SAMPLE(times, rd->frame, out, rd->channels) \
+               DE_DENORM_FLIP(rd->dede) \
                out += rd->channels; \
                in  += rd->channels; \
        } \
@@ -1167,6 +1210,7 @@
        { \
                PREEMP_DF2_SAMPLE(in, rd->frame, rd->channels) \
                LPF_DF2_SAMPLE(times, rd->frame, out, rd->channels) \
+               DE_DENORM_FLIP(rd->dede) \
                in  += rd->channels; \
                out += rd->channels; \
        } \
@@ -2259,6 +2303,7 @@
                rd->decim_hist = NULL;
                rd->channels = channels;
                rd->stage_history = NULL;
+               DE_DENORM_INIT(rd->dede, +1)
                rd->frame = NULL;
 #ifndef SYN123_NO_CASES
                if(channels > 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mpg123-1.26.4/windows-builds.sh 
new/mpg123-1.26.5/windows-builds.sh
--- old/mpg123-1.26.4/windows-builds.sh 2020-12-23 20:50:36.000000000 +0100
+++ new/mpg123-1.26.5/windows-builds.sh 2021-03-21 21:52:05.000000000 +0100
@@ -161,7 +161,8 @@
        do
                echo "text file $i -> $final/$name/$i.txt"
                ./unix2dos < "$i" > "$final/$name/$i.txt"
-       done
+       done &&
+       cp doc/windows-notes.html "$final/$name/"
 }
 
 prepare_dir &&

Reply via email to