Home | Back

mad - MPEG audio decoder
Copyright (C) 2000 Robert Leslie

$Id: CHANGES,v 1.35 2000/10/26 00:34:02 rob Exp $

===============================================================================

Version 0.12.0 (alpha)

  * Changed the build environment to use automake and libtool. A libmad
    shared library can now be built using the --enable-shared option to
    `configure'.

  * Added internationalization support via GNU gettext. New French
    translation added courtesy of Gabriel Bouvigne.

  * Changed raw output module to use host-endian byte order.

  * Added --disable-mmap option to `configure' per suggestion of Erik
    Andersen.

  * Debug builds now link with -lefence, if available.

  * Added another callback to MAD's high-level decoder API after the frame
    header has been read but before the frame's audio data is decoded.

  * Streamlined header processing so that mad_frame_decode() can be called
    with or without having already called mad_frame_header().

  * Fixed some other header reading miscellany, including CRC handling and
    free bitrate detection, and frame length verification with free
    bitrates.

  * Fixed a problem with Layer III free bitrates > 320 kbps. The main_data
    buffer size should now be large enough to handle any size frame, by
    virtue of the maximum possible part2_3_length.

  * Further developed the async API; arbitrary messages can now be passed
    to the subsidiary decoding process.

  * Streamlined libmad/timer.c and extended its interface. It now has
    support for video frame/field lengths, including output support for
    drop-frame encoding.

  * Replaced many constant integer preprocessor defines with enums.

  * Added `madplay' support for filter chains. This could eventually be
    extended to support dynamically loaded filters.

  * Added a new optional fade-in filter.

  * Rewrote madplay.c to use GNU getopt, and added many new options (use
    `madplay --help' to see them all.)

  * Updated the man page for `madplay'.

Version 0.11.4 (beta)

  * Fixed free format bitrate discovery.

  * Added Sun/NeXT audio file output module (audio_au.c).

  * Added 32-bit (really 24-bit) output support to OSS module.

  * Changed the timer implementation and extended its interface.

  * Relaxed output sample frequency match requirement.

  * Fixed endian assumption problem in audio_sun.c.

  * Integrated Nicolas Pitre's patch for pre-shifting at compile-time and
    for better multiply/accumulate code output.

  * Applied Simon Burge's patch to imdct_l_arm.S for a.out compatibility.

  * Added -mtune=strongarm for all ARM targets.

Version 0.11.3 (beta)

  * Added new --enable-speed and --enable-accuracy options for `configure'
    to automatically select appropriate SSO/ASO options, et al.

  * Modified subband synthesis to use multiply-accumulate optimization
    (if available) for better speed and/or accuracy.

  * Incorporated Andre McCurdy's changes for further rounding optimizations
    in the rest of his code.

  * Joint stereo mode now shows LR indicator during playback.

Version 0.11.2 (beta)

  * Incorporated Nicolas Pitre's ARM assembly and parameterized scaling
    changes.

  * Incorporated Andre McCurdy's ARM assembly optimization (used only if
    --enable-aso is given to `configure' to enable architecture-specific
    optimizations.)

  * Reduced FPM_INTEL assembly to two instructions.

  * Fixed accuracy problems with certain FPM modes in synth.c.

  * Improved the accuracy of FPM_APPROX.

  * Improved the accuracy of SSO.

  * Added a dual channel output selection option.

  * Improved the OSS output module by falling back on 8-bit format if 16-bit
    is not available, and by using native 16-bit endianness.

  * PCM output is now dithered for better audio quality. A new runtime
    option can disable this feature.

  * Added a resampling feature for unsupported output sampling frequencies.

  * Centralized sample scaling and formatting in audio.c for the output
    modules.

  * Moved the empeg-car audio output support into a separate module.

  * Added bad-CRC frame muting code to madplay.c.

  * Improved sync discovery by checking for a sync word in the following
    frame.

  * Changed `madtime' to indicate average bitrates.

  * Reduced the ID3 genre table memory usage.

  * Minor code clean-up.

  * Added experimental rules for generating a libmad.so shared library.

Version 0.11.1 (beta)

  * Moved libmad code into a separate directory.

  * Improved the robustness of the Win32 audio output module.

  * Changed SSO to be disabled by default, as output accuracy is deemed to
    be more important than speed in the general case.

  * Fixed a bug in Layer III sanity checking that could cause a crash on
    certain random data input.

  * Extended the Layer III requantization table from 8191 to 8206 as some
    encoders are known to use these values, even though ISO/IEC 11172-3
    suggests the maximum should be 8191.

  * Added a short man page for madplay.

  * Wrote most of the code for madtime.

  * Wrote code for an experimental multi-stream mixer `madmix'
    (--enable-experimental to add -x option support for this to madplay).

Version 0.11.0 (beta)

  * Implemented MPEG-2 extension to Lower Sampling Frequencies.

  * Improved Layer III performance by avoiding IMDCT calculation when all
    input samples are zero.

  * Significantly reduced size of Layer II tables.

Version 0.10.3 (beta)

  * Improved SSO output quality.

  * Made portable to cygwin.

  * Wrote new Win32 audio interface module.

  * Localized memory references in III_huffdecode() for better performance.

Version 0.10.2 (beta)

  * Rewrote Layer III long block 36-point IMDCT routine for better
    performance.

  * Improved subband synthesis fixed-point games somewhat.

Version 0.10.1 (beta)

  * Added a subband synthesis optimization (SSO) which involves modifying
    the fixed-point multiplication method during windowing. This produces
    subtle differences in the output but improves performance greatly.

  * Added I_STEREO and MS_STEREO flags to frame struct.

  * Eliminated privately-used CRCFAILED flag.

  * Fixed a bug where Layer III decoding could crash on some badly-formatted
    (e.g. non-MPEG) bitstreams.

  * Miscellaneous code clean-up.

  * Running madplay with no arguments now gives usage info.

Version 0.10.0 (beta)

  * Added SPARC fixed-point math support.

  * Revamped libmad API for better high- and low-level support.

  * Documented more of the code.

  * Changed sync semantics such that new stream buffers are assumed to be
    sync-aligned.

  * Added framework for ID3v2 support.

  * Changed Layer III to dynamically allocate static memory so as not to
    waste it (about 6.4K) when only decoding Layer I or Layer II.

  * Added prefix parsing for output module selection.

  * Added audio_raw output module.

  * Rewrote madplay.c to use high-level interface.

Version 0.9.7 (beta)

  * Added audio_hex module (--enable-debugging) for PCM-level debugging.

  * Fixed bug in audio_sun module; should work correctly now.

  * Added -Q (very quiet) option to omit bitstream error messages.

  * Reduced -v output by eliminating timing tenths.

  * Fixed problem configuring unsupported sample frequencies, and added user
    feedback.

  * Enhanced final frame count reporting to include playing time.

  * Cleaned up madplay.c somewhat.

===============================================================================