Underbit: MAD (MPEG Audio Decoder) (original) (raw)

Introduction

MAD is a high-quality MPEG audio decoder. It currently supportsMPEG-1 and theMPEG-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. (Pleasecontact 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 forcompliance. 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 FTPand is also mirrored onSourceForge.

Ports and packages prepared by third parties are available forDebian,FreeBSD, andNetBSD.

License

MAD is available under the terms of theGNU 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 absolutelyno warranty of any kind.

Commercial, non-GPL licensing is also available. Pleasecontact 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.

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-devmailing list. This list also receives announcements frommad-announce** so it is not necessary to subscribe to both.

To discuss MAD generally with other users, you may subscribe to the**mad-usermailing list. This list also receives announcements frommad-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.

AlsaPlayer audio player for UNIX Apollo audio player for Linux Aqualung music player for GNU/Linux Audacity cross-platform audio editor Audiere high-level audio API Audio-MPEG Perl module Avidemux audio editor avifile media utilities for Linux BEAST front-end to the Bedevilled Sound Engine BeatForce computer dj-ing system Cog audio player for Mac OS X CoolPlayer audio player for Windows cplay curses front-end for various audio players Daisy_player for the blind and visually impaired using Linux Domo Qt/MySQL-based music organizer ELMP-TNG embedded Linux media player Final Scratch digital vinyl DJ systemFinal Scratch Record Box Editor song organizer and utility freebase SHOUTcast-compatible MP3 player Geekradio virtual DJ Gmerlin media player for Linux GSMP audio editor for Linux GSPlayer audio player for Pocket PC GStreamer streaming media framework juked MP3 jukebox daemon K3b KDE front-end for CD recording Kwave sound editor for KDE LIBWMP3 MP3 player library for Windows MadFront front-end to madplay for Windows CE MAD frontend for Windows madlld MAD low-level API demonstration madlldlib source code for creating a Win32 DLL MAD Newton port of MAD for Newton OS MAD Plug-in for Winamp decoder replacement madplay audio player for UNIX MadPlayer JNI port ofmadplay for Java Madsoundz MP3 player for Windows Mike’s Jukebox Distro CD boot image and audio player Mixxx digital dj’ing system MMIOMP3 multimedia extender for OS/2 MOC console audio player MortPlayer MP3/Ogg player for Pocket PC MP3do pluggable bash script MPD remote music player and playlist manager mpega_libmad clone of mpega.library for Amiga mpg321 GPL command-line replacement for mpg123 MPlayer movie player for Linux MQ3 Qt media player MusicBrainz Taggerautomatic metadata (ID3) tagger MythTV homebrew PVR project NMM networked multimedia middleware for UNIX normalize audio file volume normalizer nvrec audio/video capture toolkit Ogle DVD player for UNIX Open Cubic Player for UNIX OpenRISC 1000 open source computing platform OpiePlayer (part of Opie) media player for the Sharp Zaurus OSKit operating system framework phMAD MP3 player for QNX pmp3 Python/GTK front-end tomadplay Pocket DivX Player media player for Pocket PC PT/Play (part of Pocket Tcl) media player for Linux handhelds Rhythmbox music organizer and player for Linux rtptsaudio audio client for RTP MPEG-2 Transport Streams scream Python front-end to madplay ScummVM game interpreter engine silencer audio silence removal tool SimpleCDR front-end to various CD audio utilities for Linux SoX command-line sound processing utility SQLshout Shoutcast compatible streaming source client Squash learning music player Squirrel Jukebox for Linux StreamRipperX Internet radio stream application for Mac OS X Sweep digital audio editor for UNIX TCVP video and music player, transcoder and streaming server TodayPlayer MP3 player for Pocket PCTo Eleven MP3 player for Sega Dreamcast VDR MP3 Extension for Linux VideoLAN Client cross-platform multimedia player WaveShop open source audio editor for Windows XP/Vista/7 winLAME front-end to LAME for Windows XGMC MIDI sequencer xine video player for UNIX XMMP multimedia player for Linux xmms-mad plug-in for XMMS