mpg123 Changelog

What's new in mpg123 1.25.11

Jul 23, 2019
  • libmpg123:
  • Fix out-of-bounds reads in ID3 parser for unsynced frames. (oss-fuzz-bug 15852)
  • Fix out-of-bounds read for RVA2 frames with non-delimited identifier. (oss-fuzz-bug 15852)
  • Fix implementation-defined parsing of RVA2 values. (oss-fuzz-bug 15862)
  • Fix undefined parsing of APE header for skipping. Also prevent endless loop on premature end of supposed APE header. (oss-fuzz-bug 15864)
  • Fix some syntax to make pedantic compiler happy.

New in mpg123 1.25.10 (Apr 1, 2018)

  • libout123: Fix error messages beginning from OUT123_ARG_ERROR (bug 261).
  • mpg123: Fix --icy-interval handling to work with stream from stdin. (curl | mpg123 --icy-interval=n -)
  • libmpg123: Fix another invalid read and segfault on damaged (fuzzed) files with part2_3_length == 0 (set maxband=1, pulled from upcoming 1.26.0).

New in mpg123 1.25.0 (Jun 12, 2017)

  • Silence test for artsc-config if it is not there.
  • Make sure -static-libgcc from LDFLAGS gets through libtool, fixing 32 bit Windows builds (depend on libgcc DLL otherwise).
  • Fix build with non-GNU make by using plain rm -f instead of silly $(RM) in libout123/modules makefile fragment.
  • Make build work on iOS, including coreaudio backend.
  • libmpg123:
  • Finally provide position-independent code for x86 with assembly optimisations. The textrels are gone thanks to Won Kyu Park and Taihei Momma.
  • Clarify some license language in files descending from the original MMX optimisation.
  • Fix return value overflow check for MPG123_BUFFERFILL.
  • Introduced mpg123_getformat2() to enable the FORMAT command for the generic control not stealing MPG123_NEW_FORMAT from the main playback loop. The sequence LOADPAUSED-FORMAT-PAUSE (play) is supposed to work now.
  • Enable aarch64 optimisations on *BSD by default, too. You can always override that stupid OS whitelist using --with-optimization, anyway.
  • Use of the i486 decoder is now discouraged more prominently, in configure output.
  • out123: Fix stupid crash with verbose mode and tone generation (print the string if the pointer is non-null, not if it is null).
  • libout123: More consistent error messages for dynamic and legacy (built-in) modules. Namely, you get a hint how if you choose a different module than the built-in ones for a static libout123.

New in mpg123 1.23.6 (Aug 2, 2016)

  • call out123_pause() instead of out123_stop() in remote control STOP command, fixing the regression in 1.23.x of not being able to resume playback with another LOAD unless the new track has differing audio format (bug 234)

New in mpg123 1.23.5 (Jun 27, 2016)

  • libout123:
  • fix build of portaudio and SDL on win32 (too many parentheses, thanks to Sandro Cumerlato for pointing it out)
  • make out123_errcode() return OUT123_BAD_HANDLE as documented (adding that value to the error enum, was documented but missing), again thanks to Sandro
  • fix windows-builds.sh (shell quoting in copying stage) and add some bits to shipped header to make it directly usable in MSVC (define ssize_t, bug 232)
  • no overwriting of LIBS in Makefile (build system regression in 1.23, thanks to Peter Korsgaard for reporting that one)
  • no printing of message in response to SIGPIPE, as that could trigger a hang if stderr itself is the piped culprit (regression from 1.22, bug 233)

New in mpg123 1.22.3 (Aug 3, 2015)

  • This is a stop-gap release including the fix for bug 216, avoiding spurious surrogate detection with UTF-16 in ID3v2 data.
  • There are some interesting changes in trunk awaiting release with the next feature version, which shall include libout123 and general build system fixup (non-recursive make).

New in mpg123 1.22.1 (Apr 13, 2015)

  • Fix mpg123-id3dump when writing images with funny (manipulated) MIME type. Stupid mistake in length computation of the fallback file extension caused junk from memory being appended to the filename if the pointer size is less than 64 bit. For 64 bit pointers (or longer) it was correct by accident.
  • Fix pedantic build by cleaning up out123 source, also now really showing the encoding list in --longhelp instead of possibly, again, writing junk from memory in there.
  • Not linking libmpg123 against libltdl anymore (bug 215).
  • Update MSVC++ ports a bit to make them work again.

New in mpg123 1.22.0 (Feb 24, 2015)

  • Build fix: Avoid name clash on OSX SDK with "normal" being defined in an enum already.
  • More resilience against folks who do not check errors and rather pass NULL pointers around (see NEWS.libmpg123).
  • Fix WAV writing to stdout on Windows (bug 214).
  • Rework Xing/Info/Lame tag parsing, also detecting short ones without the TOC now. In addition, the warning about file size being off is a _lot_ more accurate now.

New in mpg123 1.21.0 (Oct 11, 2014)

  • Use LL as shortcut for LOADLIST remote command, L is taken already (bug 210).
  • Less namespace pollution (MPG123_EXPORT in header instead of EXPORT, bug 212).

New in mpg123 1.20.1 (Sep 15, 2014)

  • The newest releas makes the feed reader more efficient when skipping junk by early discarding of data from buffers to avoid re-parsing. The previous behaviour interacted badly with certain input (see gentoo bug 465744).

New in mpg123 1.20.0 (May 27, 2014)

  • Added NEON optimized decoder for AArch64 (ARM 64bit environment):
  • enabled for --with-cpu=neon64 (NEON only) or --with-cpu=aarch64 (runtime switch between neon and generic_fpu, like arm_fpu) configuration
  • compatible with aarch64-linux-gnu toolchains (from Ubuntu, debian) and Xcode 5
  • Added new binary out123 only with the audio output part of mpg123. This is a precursor to separating out said code into a simple audio output library. It also allows plugging in some processing in a pipe before feeding to output.
  • Prevent opendir(NULL) for unknown module directory when listing modules.
  • some build fixes, among those fixing mpg123-id3dump on Windows

New in mpg123 1.18.1 (Feb 17, 2014)

  • Do not close buffer twice with mpg123 -R (delete outdated code in control_generic()), fixing bug 207.
  • Do not mess around with first command line argument to extract program name, use a copy instead, fixing bug 205.
  • Prevent premature exit on timing of failure to open a track in the playlist and the user wanting to skip over it (bug 206).
  • Fixup of HTTP socket mess, also avoiding unnecessary FILE objects (bug 204, patch by Rajeev V. Pillai).
  • Fix playlist behaviour on slow HTTP streams, jumping back ('d' key) from first track stays at first track (thanks to Rajeev again, sub-bug of bug 206).
  • Fix Frankenstein check not to stumble over ID3v1 tags. My apologies. As a bonus, the position of the concerned code in the parser is now far more logical.

New in mpg123 1.17.0 (Dec 27, 2013)

  • mpg123-id3dump --no-scan; for speedup
  • hide -C parameter from mpg123 --help when it is not supported
  • added tinyalsa Output (by Jarno Lehtinen)
  • build system tweaking
  • some care for fixing Cygwin builds

New in mpg123 1.16.0 (Oct 8, 2013)

  • New Huffman decoding scheme (configurable, on by default) brings nice boost to mpg123 to make it the fastest decoder on modern CPUs again.
  • new AVX decoder
  • assembly-optimized DCT36 for SSE and AVX
  • added configs for vintage 3DNow(ext) CPUs (AMD K6) utilizing assembly DCT36
  • added configs for vintage SSE CPUs (Pentium M), utilizing C DCT36
  • added FORMAT command to generic control
  • added support for ID3v2 APIC frames
  • added mpg123-id3dump as official companion to extract meta data (including writing of album art from APIC to files)
  • added mpg123-strip as official companion to strip dirt out of MPEG streams (including meta data)
  • not deleting ID3 data right after printing in generic control
  • module loader a bit more flexible with relative MPG123_MODDIR
  • Fix chopped-off playback with pulseaudio output: draining the output now on closing.
  • SDL output fixup, a) not chopping off end and b) non-fatal underrun
  • Fix obvious errors in win32 output ... does it now play the end of tracks? Need someone to test this.
  • added support for screen and iris-ansi terminals with --title (as prompted by patch from sf.net user canavan)
  • fixes/enhancements for sgi audio output
  • libmpg123: proper largefile aliases for proper systems (FreeBSD with one one-and-only off_t
  • This enables client software that insists on defining pointless _FILE_OFFSET_BITS.
  • wrapper script src/mpg123-with-modules to ease the pain of running mpg123 with modules without installation (setting MPG123_MODDIR)
  • removed ALSA 0.5 code (unused for longtime, last GPL-only bit)

New in mpg123 1.14.2 (May 14, 2012)

  • With the 1.14 series, in an attempt to better handle out-of-disk situations, the WAV writing code got changed and that broke writing of WAVs to standard output (raw data with a single WAV header in front). This shall work again with the current release.

New in mpg123 1.14.1 (May 8, 2012)

  • This one fixes a bug that got uncovered with the (modest) reorganization of the parser code. With the feeder API, it was possible to miss a format change in the (damaged) stream, the more dire outcome being the allocated output buffer being too small (switching from MPEG layer 3 with 576 samples per frame to 1152 samples per frame).

New in mpg123 1.14.0 (May 1, 2012)

  • libmpg123 API version 36 (see NEWS.libmpg123)
  • Add --ignore-streamlength.
  • But also deal with concatenated (Frankenstein) streams: Not applying gapless cutting once we're over the announced number of frames.
  • Add --lyrics for printout of lyrics (from USLT in ID3v2).
  • Added handling of SIGUSR1 and SIGUSER2 to terminal control code, configurable via --ctrlusr1 and --ctrlusr2.
  • Some low-level API added (mpg123_framedata(), mpg123_framepos(), buffering and resampling control).
  • Added info about input buffer fill to mpg123_getstate().
  • ReplayGain: Try to detect LAME below 3.95 for the different reference level of 83 dB (adding preamp of 6 dB). Version 3.95 itself (not 3.95.1) I cannot detect. User-set gain values are not touched.
  • Keep silent about missing bit reservoir when ignoring frames. That is the whole point (mostly;-).
  • Add the new/old WRITE_SAMPLE variant from MPlayer that makes the generic decoder faster on older CPUs (x86 at least). Not on x86-64, though (it's not enabled per default there).
  • Handle out-of-disk in the file writers (a bit, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=67259)
  • Added Xcode project files to build libmpg123 on Mac OS and iOS
  • 32 bit output for sndio output (patch by Brad Smith).
  • Remote control interface knows LOADLIST command now.
  • Now freeing meta data memory after printout.
  • Some documentation cleanup, including manpage fixes by quadrispro.
  • Re-enabled wildcard expansion on Windows (been broken by unicode file name support).
  • Fix MMX tabinit syntax (thanks to Marcel Müller for pointing that out).
  • Fix SGI audio output (been broken since change to modules).
  • Fix some fringe behaviour (mpg123_getformat() triggering needless reading of next frame, possibly hitting bogus MPG123_NEED_MORE).
  • Resync limit now also serves to increase amount of skipped junk on beginning.
  • Better separation of stream end and read error (in case there is no stream opened, even).
  • Don't always complain about failed free format header search (only with verbosity level 3).

New in mpg123 1.13.5 (Mar 7, 2012)

  • Fix reading of ReplayGain values from Lame tag (nobody seen this before?!) (both actual values and the distinction between audiophile / radio).
  • Accept application/octet-stream as input from HTTP.
  • Update man page with encodings.
  • Build fixes.

New in mpg123 1.13.3 (Apr 22, 2011)

  • Fix an endless loop on bad headers, bug 3267863.
  • Prevent compiler warnings about unused variables with gcc 4.6 .
  • Fix return value handling of getaddrinfo(), bug 3288333.
  • Make decwin size computation work for OPT_ARM and sizeof(long) != 4 (bug 3288360).

New in mpg123 1.13.2 (Feb 21, 2011)

  • Updated .NET wrapper (MPG123_SKIP_ID3V2, encsize and mpg123_strlen functions) by Malcolm Boczek.
  • Fix crash when calling mpg123_decoder() before opening a track -- a rare use case since one can choose a decoder with mpg123_new() already.
  • Fix format change detection for certain (artificial) concatenated streams (p.ex. MPEG 1 frames following MPEG 2 frames).
  • Prevent the nasty of bug 3154889: No change of pitch without a current audio format. No proper solution, but more like earlier behaviour.
  • Fix some compiler warnings.
  • Fix a memory leak in the module loader, also some in the examples, for being pedantic.
  • More use of AC_LANG_SOURCE to silence autoconf.

New in mpg123 1.13.0 (Dec 13, 2010)

  • This release brings various enhancements in the library, e.g. to help debugging of streams, and internal cleanup with alignment fun and an option to get rid of those .la files for plugins.
  • The main changes for users are the new assembly code for your smartphone-driving ARM Cortex A chip and 24-bit truncated output for cases where you exactly need that (and not simply 32-bit integer).

New in mpg123 1.12.4 (Sep 20, 2010)

  • Printout of metadata (ID3) in UTF-8 terminals was improved.

New in mpg123 1.12.3 (Jul 11, 2010)

  • The newest release fixes bug 3022850, a long-standing bug that managed to break http streaming with ICY metadata in a non-obvious manner. It's a little change with big impact... for those who listen to web radio, that is.

New in mpg123 1.12.2 (Jun 21, 2010)

  • Various build and portability fixes (including making some exotic configure switches work (again)).
  • Add dump_seekindex example
  • Sync mpg123_clr (.NET wrapper) to 1.12 feature set, patch provided by Malcolm Boczek -- and actually include it in release tarball!
  • Rework mpg123.h logic for large file stuff a bit, clients can control it by defining MPG123_NO_LARGENAME or MPG123_LARGESUFFIX.
  • Include dumb wrappers to provide names suffixed with _64 on 64 bit machines and _32 on 32 bit machines, respectively, to help clients that insist on defining _FILE_OFFSET_BITS where it is not needed (or with a non-large value).
  • Tuning of the internal buffer code for feeder mode to minimize its performance impact (works in 4K blocks now).
  • Workaround for compiler bugs in Open64/PathScale/SunStudio (bug 3004396, suggestion by Doug Gilmore).
  • Note that Sun Studio is still a tricky fellow, at least when it comes to our preprocessed assembly (generic build works). Also, x86-Open64 recently produced another segfault in layer3.c on my box... GNU and intel compilers are what one can use as something stable.
  • Make mpg123_getformat() return more error codes (like MPG123_NEED_MORE).
  • Fix handle I/O for clients with small file offset (32 bit when libmpg123 has 64 bit).
  • Fix 3DNow(Ext) standalone builds.

New in mpg123 1.10.1 (Feb 28, 2010)

  • Help multilib setups that boldly assume that headers are invariant by removing the consistency check in mpg123.h and instead just adding a suffix to relevant functions when _FILE_OFFSET_BITS is defined. Invalid setups will now fail at the linking stage instead of the preprocessing stage. That should cover bug 2934488.
  • Fixes for gapless decoding:
  • Correctly skip padding larger than one MPEG frame (strange, but occurs).
  • Bug 2950218 (proper gapless cuts for seeking near the end).
  • Make sure the search for the first header aborts after 64K of one-byte reads, as always intended (bug 2951334). Certain files (or even random data) were able to fool mpg123 sufficiently enough that it basically reads through the whole file in 1-byte steps in search for MPEG data. The limit of 64K will very likely be configurable in a future mpg123 version.
  • Fix subtle bug with seeking in feeder mode: A seek close to the current position (meaning: the needed data offset is already in mpg123's buffer chain) resulted in skipped bytes.
  • Improve the feeder mode for handling large amounts of junk at the beginning, including proper passing of the request for more data when trying to determine free format frame size. This also fixes endless looping as reported in bug 2951334.
  • The parser code still needs overhaul. It is not pretty.
  • Compile fix for OpenAL (with strict compiler).

New in mpg123 1.9.1 (Oct 9, 2009)

  • A set of bugs have been fixed, along with some long- and short-standing regressions, namely NtoM CPU creep and parsing of Foobar2000-style RVA info in ID3v2 tags.

New in mpg123 1.8.1 (Jun 15, 2009)

  • Include improvements to integer decoder from SVN trunk. They have been accidentally promised on 1.8.0 release announcements, though they were not there. Here it is: ISO compliant fixed point decoding (speed optimizations are still reserved for next release).
  • Fixed build with ./configure --enable-modules (bug in configure script).
  • Fix name of binary in help screen when called with path.
  • Build fix for old gcc with AltiVec code.
  • Update of Sony PSP build files.

New in mpg123 1.8.0 (Jun 11, 2009)

  • New and improved SSE optimizations! For x86-64, too! Also AltiVec!
  • Fast float output! Faster stereo!
  • Finally, this should put mpg123 into the efficiency-leading position on current hardware!
  • Thanks go out to Taihei Monma for pushing lots of new assembler code.
  • Added proper rounding modes to 16bit integer.
  • Use ./configure --enable-int-quality to prefer accuracy over speed.
  • Accurate code (generic, SSE, 3dnow -i586 has always been good) delivers ISO compliant quality with 16bit output.
  • Uses fast rounding for IEEE754 floats.
  • Mpg123 can do fully ISO compliant MPEG audio decoding to 16bits (of course to 32bit float/int, too).
  • subtle performance enhancements via broader data alignment
  • Prefer SSE code over 3DNowExt.
  • It can be tight, but generally our new SSE code is better on CPUs that can do both.
  • Remove HF cutoff (SFB21), has been introduced in 0.59r .
  • Fix layer 1 regression (been there since version 1.x).
  • Layer 1 ISO compliance test is positive now.
  • Fix layer 2 regression (false positives header change).
  • Layer 2 ISO compliance test is positive now.
  • more sample-accurateness
  • Clear frame buffers before seek.
  • Decode 4 frames in advance for layer 3 (2 for layer 1 and 2) per default.
  • Number of layer 3 frames to decoded in advance (and fill bit reservoir) is runtime tunable (--preframes).
  • Do not stop decoding after stray ID3v1 tags in streams (bug 2793677).
  • Fix handling of negative RVA2 values in ID3v2 (bug 2792417).
  • Discard bitreservoir of previous frames if a resync is needed.
  • improve perceived randomness of --random (do not repeat too early)
  • Fix special crash case in UTF16 conversion for ID3v2.
  • MPG123_MODDIR environment variable for changing module directory at runtime
  • arts output fixes (bug 2715128)
  • win32 output swallowing less buffers at end (but still some audio is lost, bug 2722991)
  • tested mpg123 on OS/2; it works, but not the native audio output (SDL works)
  • WAV output announces supported output formats correctly
  • fix buffer startup to make sure the first bits of audio are not discarded (bug 2796802)
  • re-enable the --gain parameter (the move to modules disabled that), untested
  • Libltdl is _not_ included anymore.
  • The host system is expected to provide it, otherwise plugins are not used.
  • Our copy does not get in the way anymore.
  • enhancements of the MSVC++ builds, including optimizations using yasm
  • general build system fixes
  • Legacy build system is gone.
  • code cleanup
  • signed/unsigned integer usage, make compilers more happy)
  • simplified synth selection code (it is _less_ code now, and does more)
  • Fixed behaviour of MPG123_NEW_FORMAT: Now it does not stop you from just continuing decoding without querying the (new) output format, this behaviour regression had been there since somewhen after 1.4.3 .

New in mpg123 1.7.3 (Apr 27, 2009)

  • A bad-sounding regression with seeking in layer 3 files has been fixed, it having been introduced in 1.7.0 with the --doublespeed revival.

New in mpg123 1.7.2 (Apr 6, 2009)

  • This release fixes a vulnerability in the ID3v2 code which at least can cause denial of service (i.e. crashes...).

New in mpg123 1.7.1 (Apr 3, 2009)

  • Just one fix for making the RVA switch in terminal and generic control mode work again (instead of plain silence).

New in mpg123 1.7.0 (Mar 26, 2009)

  • This release features significant overhaul of the decoder engine to be more flexible at runtime and include more output formats -- float and 32bit integer output are now standard features of a normal build. The --doublespeed functionality is back again after being silently absent in the 1.x series (sorry). Also, there is now support for configuring minimal libmpg123 builds by stripping out certain features.

New in mpg123 1.6.4 (Jan 11, 2009)

  • fix frame fillup with forced rate decoding
  • fix seek consistency with forced rate decoding

New in mpg123 1.6.3 (Dec 21, 2008)

  • This is a little bugfix release, mainly for some build related inconveniences and one bug you could encounter with the remote control interface.

New in mpg123 1.6.1 (Nov 10, 2008)

  • This is a small bugfix release for large file offsets in the remote control interface and some portability.

New in mpg123 1.6.0 (Nov 5, 2008)

  • Decoding improvements were made.
  • New commands and API features were added for fast fuzzy seeking (using estimates or the Xing VBR TOC).
  • Bugs were fixed.
  • Largefile support is available via configure.

New in mpg123 1.5.1 (Aug 29, 2008)

  • fix wav/au/cdr writing to stdout (bug #2044423)
  • add more sensible --no-resync to replace --resync (bug #2044404)
  • libmpg123 7.0.7 - fix thread safety of SSE decoder (bug #2053181)
  • fix robustness of length handling, added mpg123_set_filesize() (bug #2064322)