MAD: MPEG Audio Decoder

Introduction

MAD is a high-quality MPEG audio decoder. It currently supports MPEG-1 and the MPEG-2 extension to lower sampling frequencies, as well as the de facto MPEG 2.5 format. All three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — are fully implemented.

MAD does not yet support MPEG-2 multichannel audio (although it should be backward compatible with such streams) nor does it currently support AAC.

MAD has the following special features:

Because MAD provides full 24-bit PCM output, applications using MAD are able to produce exceptionally high quality audio. Even when the output device supports only 16-bit PCM, applications can use the extra resolution to increase the audible dynamic range through the use of dithering or noise shaping.

Because MAD uses integer computation rather than floating point, it is well suited for architectures without a floating point unit. All calculations are performed with a 32-bit fixed-point integer representation.

Because MAD is a new implementation of the ISO/IEC standards, it is unencumbered by the errors of other implementations. MAD is not a derivation of the ISO reference source or any other code. Considerable effort has been expended to ensure a correct implementation, even in cases where the standards are ambiguous or misleading.

OSI Certified Open Source SoftwareBecause MAD is available under the terms of the GPL, it can be freely used in other GPL software, and is also available for immediate evaluation prior to obtaining a commercial license. (Please contact us to discuss commercial licensing terms.)

Accuracy

The output from MAD has been tested and found to satisfy the ISO/IEC 11172-4 computational accuracy requirements for compliance. In almost all configurations, MAD is a Full Layer III ISO/IEC 11172-3 audio decoder as defined by the standard.

In one circumstance, MAD is a limited accuracy ISO/IEC 11172-3 audio decoder. This is true when MAD is forced to use an approximation version of its fixed-point multiply routine, and is easily avoided.

Availability

SourceForgeThe software is distributed as a library (libmad) and command-line front-end (madplay). Also included is an ID3 tag manipulation library (libid3tag). The source code is available via FTP and is also mirrored on SourceForge.

Ports and packages prepared by third parties are available for Debian, FreeBSD, and NetBSD.

License

MAD is available under the terms of the GNU General Public License, Version 2, for either permanent use or for evaluation prior to obtaining a commercial license. Please note that under the GPL, there is absolutely no warranty of any kind.

Commercial, non-GPL licensing is also available. Please contact us to discuss possible license terms.

Documentation

A documented example of the high-level API is included with the library in the source file minimad.c. For a documented example of the low-level API, see Bertrand Petit's madlld.

Mailing Lists

To receive announcements of new releases only, you may subscribe to the mad-announce mailing list.

If you’re doing development work with MAD, you’re welcome to join the mad-dev mailing list. This list also receives announcements from mad-announce so it is not necessary to subscribe to both.

To discuss MAD generally with other users, you may subscribe to the mad-user mailing list. This list also receives announcements from mad-announce so it is not necessary to subscribe to both.

Applications Using MAD

The following third party applications use or plan to use MAD for audio decoding. These links are provided for convenience only; no endorsement or any other representation is intended by this list.