mpg123 Changelog

What's new in mpg123 1.22.4

Aug 12, 2015
  • With mpg123 version 1.14.1, free format support got broken by a bugfix. Classic regression. This release fixes that and a regression test has been added to the repository.

New in mpg123 1.22.2 (May 25, 2015)

  • This release adds a bugfix for the combination of buffered playback with 24 bit sample format. This simply did not work before, because the buffer process was not aware of the non-trivial PCM frame size (no divisor of 32768).

New in mpg123 1.22.1 (Apr 3, 2015)

  • This is a heartily recommened update for anyone. The bugs are not of the execute-funny-code type, but still ugly.
  • 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.
  • Also, distro maintainers ... please include the diff from 1.22.0 if it applies (you employ a version providing mpg123-id3dump and out123)

New in mpg123 1.22.0 (Feb 24, 2015)

  • libmpg123 version 41
  • 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).
  • This changes some return values to MPG123_BAD_HANDLE instead of MPG123_ERR (always check for != MPG123_OK).
  • 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 17, 2014)

  • Fix bug 201: Adding LL for LOADLIST as suggested.
  • Sorted download directory
  • 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 (Jun 19, 2014)

  • The newest release makes the feed reader more efficient when skipping junk by early discarding of data from buffers to avoid re-parsing. The previous behavior interacted badly with certain input.

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.

New in mpg123 1.19.0 (Mar 11, 2014)

  • Support float and 32/24 bit integer output also with fixed-point decoders (conversion from 16 bit precision).
  • A-Law output encoding is actually implemented now (Michael introduced the encoding back in the old days without ever implementing theconversion table, apparently).
  • Added --with-cpu=arm_fpu as decoder choice for runtime switch between plain fpu code and NEON.
  • Fix ARM builds to work properly on debian systems without special CFLAGS (NEON decoder, specifically).
  • Make scripts/benchmark-cpu.pl check the return value instead of delivering crazy timings for crashed mpg123.
  • Trigger track initialization in mpg123_info() to avoid use of uninitialized variables (watch out for MPG123_NEED_MORE return value!).
  • Fix integer code to 32 bit numbers where it would waste 64 bit on modern systems.
  • Add non-executable stack marking also to ARM assembly.

New in mpg123 1.16.0 (Oct 7, 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.15.4 (May 20, 2013)

  • Writing CDDA data via --cdr works again; had also been broken by attempts to catch failing writes because of full disk.
  • Also, the return values of WAV/CDR writing routines now properly indicate error to avoid stupid endless loop of "smart" audio writing code that wants to handle interruptions. Really, --cdr could just go and nobody would miss it ...
  • Fix stupid bug in mpg123_chomp_string() (introduced in 1.15.1), empty lines were badly treated. Only usage in mpg123 is for parsing HTTP redirect headers; malicious HTTP servers might exploit that (possibility to zero bytes in memory).
  • some cleanup for nagging mode
  • more resync strictness to really catch (all) cases with changing decoder structure; in practice badly needed when disabling seekbuffer (so it's your fault, somehow ...) for non-seekable streams, otherwise not really an issue because of readahead checking

New in mpg123 1.15.2 (Apr 2, 2013)

  • build fix with older shells (== in configure)

New in mpg123 1.15.1 (Feb 25, 2013)

  • libmpg123 API version 37
  • Fix corner case in HTTP communication with missing path in Location header (bug 187).
  • Prevent nasty alignment issues by not guessing about assembler alignment when .balign is available (bug 188).

New in mpg123 1.14.3 (Jul 2, 2012)

  • Fix regression from 1.14.1 in parsing of bad free format streams, avoiding apparently endless loops (just very slow reading, in fact).

New in mpg123 1.14.1 (May 7, 2012)

  • Fix subtle bug that could trigger failure to detect a format change on resync when using libmpg123's feeder API.
  • That bug has been there since ages but was neutralized by other (buggy) behavior of the parser before the little overhaul. The Law of an Even Number of Bugs.

New in mpg123 1.14.0 (May 2, 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.8 (Apr 12, 2012)

  • Fix build for ARM Thumb (incompatible assembly in some macros).

New in mpg123 1.13.7 (Mar 26, 2012)

  • Fix endless loop in module loader when starting mpg123 in a directory that does not exist.

New in mpg123 1.13.6 (Mar 12, 2012)

  • Fix output of one random character in -vvv mode for ID3v2.2 frames

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.4 (Sep 8, 2011)

  • Fix bogus error on resync with big offsets (hits systems that have bigger off_t than int), bug 3393801.
  • Fix windows binary package build script again with plugdir.

New in mpg123 1.13.3 (Apr 22, 2011)

  • libmpg123 API version 29 (see NEWS.libmpg123)
  • New optimization: ARM NEON (Cortex A series) -- kudos to Taihei, again!
  • Added 24 bit integer output (truncation of 32 bit integer).
  • Cleanup of symbols for the static library: Only have global symbols that are actually needed, prefix them with INT123_ to avoid conflicts.
  • Added --streamdump to get a copy of the data libmpg123 used.
  • Added --icy-interval and tweaked libmpg123 to make playback of ICY stream dumps possible.
  • Added possibility to set module file suffix at build -- to be able to avoid .la files for plugins.
  • Removed compiler directives for alignment and disable associated tests.
  • The tests don't work on a wide range of compilers anyway, and newer gccs
  • do have force_align_arg_pointer to fix bad stacks.
  • There is no ChangeLog file anymore. it was autogenerated from subversion log anyway, so look there if interested.

New in mpg123 1.12.5 (Oct 7, 2010)

  • tags/1.12.5, tags/1.12.5/NEWS, tags/1.12.5/configure.ac,
  • /feature.c,
  • /mangle.h,
  • /ntom.c,
  • /synth.c,
  • /synth.h,
  • /synth_i486.c,
  • /synth_i586.S,
  • /synth_i586_dither.S,
  • /synth_mmx.S,
  • /synth_ntom.h,
  • /synth_real.c,
  • /synth_s32.c,
  • tags/1.12.5/src/metaprint.c, tags/1.12.5/src/wavhead.h: Import
  • the buffer overflow fix in utf8_ascii().

New in mpg123 1.12.4 (Sep 18, 2010)

  • The unicode alignment fix.

New in mpg123 1.9.0 (Aug 14, 2009)

  • Merge last-minute fixes from trunk, including build system fix for dist tarball.

New in mpg123 1.7.3 (Apr 28, 2009)

  • Fix a regression introduced with the --doublespeed fix. Now seeking should be a lot smoother again.

New in mpg123 1.7.2 (Apr 6, 2009)

  • Fix a possible vulnerability in the ID3 code (negative encoding values).

New in mpg123 1.7.0 (Mar 26, 2009)

  • Lots of output format fun:
  • now supporting 8, 16, 32 bit signed/unsigned integers, 32bit float (64bit float can be hacked in quickly)
  • optimized decoders use fallback routines for non-optimized formats transparently
  • flexible resampling is automatically chosen when output does not support standard rates (like a JACK server)
  • That meant quite some restructuring in the decoder code.
  • Lots of core functionality now optional, enabling small-footprint builds of libmpg123:
  • choosing among the MPEG layer codes
  • NtoM resampling
  • downsampling
  • feeder API (mpg123_open_feed())
  • ID3v2
  • String API
  • ICY
  • output formats
  • error/warning message printouts
  • --preload (tune prefill before playback for buffered mode)
  • win64 support (one report at least;-), modules working on Windows
  • Windows/MSVC++: fixed handling of unicode file names, mpg123_topen() now actually working there
  • You are obliged to use mpg123_tclose() now!
  • using "plugins" subdir relative to mpg123 binary (in addition to ../lib/mpg123)
  • switch to libtool 2.2 and automake 1.10 for the build scripts
  • though no update to new libtool 2 API, yet
  • some portability fixes
  • prevent user from creating non-working I/O setups (replacing timeout reader, ICY with feeding)
  • JACK output accepts port names for -a, stereo gets mixed down when only one port is chosen
  • added sndio output, contributed by Christian Weisgerber
  • Make --doublespeed paramter work, porting of which has been forgotten in the 1.x series!
  • Along with that, a regression in decoding has been fixed (concerning skipping of frames in general).

New in mpg123 1.6.4 (Jan 13, 2009)

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

New in mpg123 1.6.0 (Nov 5, 2008)

  • small things inside that I forgot to mention
  • some new commands for remote control interface: SCAN, SAMPLE, EQFILE, SHOWEQ
  • added --keep-open command line flag (for remote control)
  • fixed equalizer file parsing to really handle comment lines as example file suggests
  • more elaborate detection of UTF-8 locale, also --utf8 switch to force it
  • added --fuzzy to enable inexact seeking (see below)
  • added --index-size parameter for tuning accurate frame seek index
  • enabling largefile support via configure
  • added mpg123_geteq(), mpg123_tell_stream() and mpg123_getstate()
  • API cleanup (take const char* for mpg123_open())
  • calm down complainling (C++) compilers by completing the mpg123_channels enum
  • fixed several possible crashes when user provides NULLs where it isn't appropriate
  • workaround for frames that fail decoding (bad frame body, missing bit reservoir): fill up with silence That also fixes seeking issues related to bad frames since now the fixed relation between frame and sample offsets is restored.
  • Finally realized what that the resampling code for integer math (generic_nofpu) was just incomplete! Now it works, using the defined integer multiplication.
  • Detect UTF-8 in ICY conversion (instead of just assuming CP-1252, provided by Torsten Glaser).
  • Prevent ugly noise when the bit reservoir is not fully there (p.ex. ignorantly cut mp3 files). Concerned frames are silenced, but reservoir for following frames is kept. Thanks to Patrick Dehne for the investigation and patch!
  • New option for fuzzy seeking; trading sample accuracy for speed. With that option, seeks positions are guessed using mean framesize or the Xing VBR TOC is used.
  • Feeder streams work with seek index now.
  • Seek frame index is runtime tunable.
  • more caution with alignment issues for varying library users
  • new project files to build/use libmpg123 with MSVC++ 2005 and 2008, provided by Patrick Dehne
  • fixed a regression that made the pause/loop mode in terminal control slowly go backwards Big note for libmpg123 users: Make sure your application is compiled with the same largefile setting as libmpg123! If that does not match, you will get unresolved symbols (which is better than weird errors when using a nonmatching off_t in arguments.