LAME 3.99.5   February 28 2012

    Rogério Brito
        autotools: Fix compilation on alpha using proper ifdef guards. Thanks to Andres Mejia.
        Small correction of the documentation.
    Robert Hegemann
        Workaround for cygwin build problem. Tracker item [ 3480692 ] mingw-w64 compilation error
        Fix for a problem when LAME is compiled with fast floating point math. It could result in bitrate bloat with silent input data.
        Bug fix for tracker item [ 3486753 ] Artifacts at the beginning of decoded file


LAME 3.99.4   January 25 2012

    Robert Hegemann
        Fix for tracker item [ 3475581 ] lame crashes at .w64 input file
        Addressing things brought to attention by tracker item [ 3463197 ] 3.99.x problem WFED and PCST frames
            WFED and PCST frames can now be added, to tag podcasts iTunes recognizes
            USER frames are now supported
            COMM frames can now have a description, when passed via --tv "COMM=description=full text"
            possible divide-by-zero exception should be fixed
            adding malformed user-defined-frames could result in abnormal program termination, fixed


LAME 3.99.3   November 26 2011

    Robert Hegemann
        Fix for tracker item [ 3441349 ] --tg does not handle genre number when adding unicode tag


LAME 3.99.2   November 18 2011

    Robert Hegemann
        Due to some bugs in 3rd party HW/SW decoders, those were not be able to make use of LAME's extended info tag anymore, resulting in problems with things like gapless playback.


LAME 3.99.1   November 5 2011

    Robert Hegemann
        Fixes for several issues with ID3v2 unicode tags, using Big-Endian text encodings. Because of several other software (like Windows Media Player), LAME writes Little-Endian unicode tags only.
        Thanks to Taihei Monma, for reporting these issues. Tracker items: [ 3431203, 3431222, 3431241 ]


LAME 3.99   October 15 2011

    3.99 beta 1 becomes 3.99


LAME 3.99 beta 1   not yet released

    Robert Hegemann
        Fix for Bugtracker item [ 3395813 ] id3tag_set_fieldvalue for URL link frames Broken
        Fix for Bugtracker item [ 3368977 ] Wave Parser doesn't pad chunks
        Fix for Bugtracker item [ 3034259 ] confusing fatal error: can't update LAME-tag frame!

LAME 3.99 beta 0   not officially released

    Josep Maria Antolín Segura
        Documentation work
    Rogério Brito
        Improve Debian packaging.
            Include suggestions made by Fabian Greffrath
            Update version of the Debian package to reflect that it is taken from CVS.
            Get rid of a transitional package
            Much more to come...
        Minor fix to validate the history file correctly
    Robert Hegemann
        Porting of LAME mp3rtp program to Windows platform
        Fix: for free format mp3 above 320 kbps, the maximum allowed bits was limited too far.
        Changed behaviour: LAME replaces common suffixes by MP3/WAV when no output filename was given. For example, a simple lame x.wav will create output file x.mp3
        UNICODE support on Windows OS, file names and ID3v2 tags; related: Bugtracker item [ 3052230 ] Lame.exe can't find files with non-ASCII names
        Added support for WAVE FORMAT IEEE FLOAT input files
        New switch --swap-channel added, see tracker item [ 1118412 ] RFE: option to swap L and R channels
        New switches -m l and -m r to select either left or right channel for mono encoding.
        Feature request item [ 3134258 ] Allow larger images with LAME (>128KB)
        Fix for Bugtracker item [ 2962223 ] Encoder delay and padding values ignored when re-encoding
        Fix for Bugtracker item [ 2986823 ] Error when building Lame with NASM support -still exists
        Fix for Bugtracker item [ 3125235 ] make -f Makefile.mingw32 fails
        Fix for Bugtracker item [ 3021935 ] ID3 tag TXXX cannot be used more than once
        Fix for Bugtracker item [ 3025801 ] gain_analysis.h needs int constants
        Fix for Bugtracker item [ 3277412 ] Segmentation fault at layer2.c:105 with --decode
        Changes in new VBR code:
            tuning on PSY model
            tuning on VBR scale and resulting bitrates
            Minor bug fix for sfb21 encoding
        All encoding modes use the PSY model from new VBR code, addresses Bugtracker item [ 3187397 ] Strange compression behavior
        Fix for a possible out of bounds array access in HIP decoder, addresses Bugtracker item [ 3091776 ] crash at III_dequantize_sample

LAME 3.98.4    March 22 2010

    Joseph Flynn
        Improvements for LAME DirectShow filter:
            Added support for the DirectShow IAMStreamConfig Interface to the LAME encoder filter output pin.
            Modified the DirectShow filter registration section so that the LAME Encoder filter is correctly registered in the Audio Compressors filter category. This will allow third-party encoding applications using the DirectShow System Device Enumerator Interface to correctly detect the LAME encoder when querying the Audio Compressors filter group.
            Modified the filter registration information so that the MP3 audio subtype is correctly reported as being supported on the encoder output pin. This will allow third-party encoding applications using the DirectShow IFilterMapper2 Interface to recognize that the LAME encoder supports MP3 output.
            Altered the Filter Merit Value that was being used when the filter was registered so that it is now using the standard DirectShow compressor filter merit value of MERIT_DO_NOT_USE (0x200000). Previously, the filter was being registered using a value of MERIT_SW_COMPRESSOR (0x100000), which was at a lower priority (i.e. worse priority) than MERIT_DO_NOT_USE. This prevented the LAME Encoder filter from being selected for use by some third-party encoding applications.
            Added code to calculate the frame length of the audio frames used for the nBlockSize element of the WAVEFORMATEX output structure. Previously this value was simply hard-coded to 1.
    Robert Hegemann
        Fix for Bugtracker item [ 2973877 ] A problem regarding the new drain code

LAME 3.98.3    February 27 2010

    Rogério Brito:
        Update the debian packaging for the new release.
    Robert Hegemann
        The ignore-tag-errors switch had no effect when embedding album art, fixed.
        Library API change: lame_decode functions are now obsolete but still present, please use hip_decode instead. The reason for this change is: lame_decode functions use a single global variable within the library to store decoder setup, hip_decode functions don't. The encoder now uses hip_decode internally and it is now possible to use clipdetect feature while reencoding mp3 to mp3.
        Workaround for FFMPEG bug, which uses to call lame_encode_flush more than once in a loop.
        Windows: program icon and version info added (when building with VC9)
        Fix for Bugtracker item [ 2688413 ] lib name problem in Microsoft Visual Studio 6
        Fix for Bugtracker items [ 2051870, 2423650, 2928684 ] several small documentation issues
        Fix for Bugtracker item [ 2723518 ] resampling in 3.98 and 3.99alpha
        Fix for Bugtracker item [ 2891879 ] Because of Windows API change, there was a problem with the prority switch.
        Fix for Bugtracker item [ 2893101 ] Access Violation in BladeMP3EncDLL if UNICODE was defined.
        Fix for Bugtracker item [ 2887359 ] Wrong length in ID3v2 tag when num_samples isn't set
        Fix for Bugtracker item [ 2872590 ] LameTAG: "Music length" missmatch in LAME 3.98
        Fix for Bugtracker item [ 2824296 ] wrong enc_padding value in LAME 3.99a and 3.98.3 (from CVS)
        Revisiting the FhG decoder problem (FhG V1.5 build 50, ships with MS Windows): enabling the new-drain-code seems to solve that issue better, than restricting the buffer size (see below: 3.98 beta 1, May 16 2007).
        Patch submitted by Bernhard Doebler, tracker item [ 2807676 ] Error when building Lame with NASM support
        Patch submitted by Mancuso Raffaele, tracker item [ 2406420 ] compile lame_enc.dll under cygwin

LAME 3.98.2    September 22 2008

    Robert Hegemann
        Fix for Bugtracker item [ 2123206 ] lame 3.98.1 segfaults with -h

LAME 3.98.1    September 21 2008

    Rogério Brito:
        More fixes for the abx tool for Unix systems:
            Plugged a memory leak.
            Fixed an endianness problem: users of big-endian machines can now do abx tests.
        Fixed history's HTML doctype
        Fixed history so that it finally validates at W3's validator
        Fixed compilation of frontend mp3rtp.c. Thanks to Kris Karas. Bugtracker item [ 2015432 ] mp3rtp missing uint16_t in lame 3.98
    Robert Hegemann:
        Fix for Bugtracker item [ 2031704 ] --id3v1-only didnt work in 3.98-final
        Fix for Bugtracker item [ 2022035 ] encoder_padding value and resampling
        Fix for Bugtracker item [ 2029282 ] Frequency filtering API broken in 3.98
        Fix for Bugtracker item [ 2039648 ] potential memory leak in parse_args() function in parse.c
        Fix for some tagging issues:
            Made search for ID3v1 genres more sloppy, abbrevations may match more often as some simple typos. Examples:
                --tg "Alt. Rock" matches genre "Alternate Rock"
                --tg "acapela" matches genre "A Cappella"
            New switch --pad-id3v2-size "n": adds ID3v2 tag with n padding bytes.

LAME 3.98    July 4 2008

    Anton Sergunov:
        Frontend DirectShow: enabling LAME dshow filter to connect to "File Writer Filter".
    Rogério Brito:
        Updates to the Debian Packaging
        Fixes to the abx tool for Unix systems (so that more people can evaluate LAME's compression against the original files)
    Alexander Leidinger:
        explicitely link the math lib to the lame lib
        add switch to disable the use of the compaq optimized math lib

LAME 3.98 beta 8   April 13 2008

    Robert Hegemann:
        LAME now accepts a floating point value in the range [0,...,10[ as VBR quality setting, like -V5.678
        Found and fixed some suspicious code in additive masking calculation for VBR-NEW
        bug-fix:experimental code was defaulted by accident for VBR-NEW
        fix for some endianess problem on big-endian machines

LAME 3.98 beta 7   April 6 2008

    Robert Hegemann:
        libmp3lame API: allow frontends to separately retrieve LAME/Xing and ID3 data, because the old library automatism makes it impossible to make fully buffered encodes.
        libmp3lame API: added some experimental unicode ID3 tagging code.
        frontends: write itself final ID3 tags and LAME/Xing header frame
        lame_enc.dll: writes itself final LAME/Xing header frame
        Latest changes to the new VBR psymodel:
            uses a different spreading function
            bug-fix for out-of-bounds array access (program stack corruption possible)

LAME 3.98 beta 6   December 16 2007

    Robert Hegemann:
        Feature request [ 1811483 ] WAVE_FORMAT_EXTENSIBLE support (PCM)
        Fix for some rare scalefactor selection issue the newer vbr code had at low compression levels
        Fix for Bugtracker item[ 1813496 ] AIFF parsing bug
        Latest changes to the new VBR code:
            it now has its own psy model, a derivation from NSPSY.
            some more tuning has been done for this new psy model. Many thanks to Horst Albrecht and Myles Thaiss.
            the "out-of-bits" strategy is reworked
        It was possible, that the "interchannel masking effects feature" was used by the dual-channel-mode for bi-lingual encodings too. It was meant to work on stereo L/R channels only.

LAME 3.98 beta 5   August 12 2007

    Jonathan Stott:
        Bug tracker items: [ 1590693 ] ID3v2 tag not writing, [ 1636267 ] ID3v2 tags overwritten
        If the output file is opened 'write-only', then LAME can't update the LAME tag. In this case LAME silently overwrote the first bytes of the file and an optional ID3v2 tag disappeared. Now an error message will be printed and no data is written in this case.
    Robert Hegemann:
        Fix for Bugtracker item [ 1719593 ] Track numbers > 255 not allowed even with --id3v2-only
        Fix for Bugtracker item [ 1742623 ] fail(lame --mp3input -m m -b 128 --resample 8 *.mp3 **.mp3)
        The problem here was, the input files are MPEG-1 Layer2 files named as MP3s. Even if you leave out the --mp3input switch LAME tried to decode the input files as Layer3 files because of the file name extension and because it found some valid looking Layer3 synchronization header. The fixed LAME version does not assume the file name extension is always correct and treats the files depending on the first found MPEG sync word. The files in question are now correctly detected as Layer2 files and transcoding does succeed.
        Fix for Bugtracker item [ 1445175 ] Input being stdin fails in Windows on WAV files
        The problem here was, seeking on pipes shows some different behaviour depending on C-Library implementations. The workaround tries to detect it's working on a pipe and doing some reading instead of seeking in that case.
        Fixing some memory leak in the 'lame_enc.dll'.
        Fix for Bugtracker items [ 1160757, 1160741 ] --little-endian / --big-endian not working
        These switches where originally intended to be used together with Libsndfile only.
        Fix for Bugtracker item [ 1746336 ] Incorrect Bitrate with ABR und --resample, LAME 3.98b4
        Some earlier bug-fix had some typo. As a result, when adding a '--resample 123' switch, the average bitrate rised upto maximum bitrate.

LAME 3.98 beta 4   June 23 2007

    Dennis Lambe Jr: Added support for total track count (id3v2) in the frontend
    Nyaochi:
        Ability to set user-defined ID3v2.3 frame
        Ability to include albumArt in ID3v2.3 tag
    Robert Hegemann:
        Bugfix: the "play length in ms", which is stored in the ID3v2 tag TLEN, was not correctly computed. Some hardware and software players were confused by this garbage data.
        Out of bits strategy for the newer VBR code overhauled
        LAME API: the ID3 tag functions do not store the pointers passed anymore, they do make deep copies of strings passed as parameters.
        Changes in LAME frontend switches regarding ID3 tags:
        --tg "MyGenre" will route unknown ID3v1 genres to "Other" for ID3v1 tags and will be stored as plain text "MyGenre" for ID3v2 tags. Genres given by known ID3v1 numbers will be stored as its corresponding text in ID3v2 tags.
        --tn "02/02" will store the track number specified as plain text as-is for ID3v2 tags.


LAME 3.98 beta 3   May 22 2007

    Robert Hegemann:
        Fixes regarding max number of bits limitation


LAME 3.98 beta 2   May 20 2007

    Robert Hegemann:
        Bug tracker item: [ 1693461 ]; Fixed memory leaks in ACM codec
        Fixed encoding of non-standard sampling rates in CBR
        Improved VBR strategy when running out of bits


LAME 3.98 beta 1   May 16 2007

    Alexander Leidinger:
        Add TLEN (ID3v2) support (Submitted by: Linus Walleij).
        Add number of total tracks per album (ID3v2) support (Submitted by: Kyle VanderBeek).
        Some seatbelts for overflowing arrays in the ID3v2 support.
        Update the RPM spec (Submitted by: Kyle VanderBeek).
        Fix some mem-leaks in the error case.
        Update to newer autotools versions.
        Update to use a recent libsndfile (submitted by libsndfile author).
        Intrinsics support enabled for gcc
    Robert Hegemann:
        The newer VBR code is now LAME's default VBR routine
        Fixed: in case of not enough bits the new vbr code incorrectly used old vbr routine
        Improved ATH adjustment in low volume cases
        Fixed (PSY model): mapping from convolution bands to partition bands was broken since we replaced tables by own calculation several years ago
        Fixed (PSY model): loss of fraction in equal loudness weighting
        Fixed (PSY model): in NSPSY highpass filter, out of bounds access in fircoef
        Known problem samples for the new VBR code: many of them are at an acceptable quality level now; with a big 'Thank You' to Francis Niechcial
        Modified VBR strategy to handle out of bits cases
        Restricted bitreservoir size for 320 kbps frames to the size used for sideinfo, because of decoding problems with FhG decoders installed on almost every Windows system
        LAME aborts on unsupported input files or unrecognized parameter options passed more often now
        Bug tracker item: [ 1596306 ] "fatal error during initialization"; an invalid MPEG samplerate was returned by optimum_samplefreq function
        Bug tracker item: [ 1585942 ] lame not --silent when TERM not set; in case LAME was build with TERMCAP defined and no TERM environment is defined, now we do not issue an error message and silently fallback to the default behaviour as if LAME was compiled without TERMCAP defined.
        Bug tracker item: [ 1711980 ] LAME writes invalid Xing header when ID3 tags exist; LAME was sometimes writing an invalid Xing/Info header
        Feature request: [ 1588283 ] Flushing output stream in lame.exe; 'flush' option added
        Added FFTSSE and FFT3DNOW assembler code from Lame4 branch
        Changes in lame frontend switches: -k removed, add lowpass and highpass switches if you need to change them; --short/noshort/allshort - degraded into DEVELOPER ONLY switches normal users shouldn't use them; -X -Z degraded to DEVELOPER ONLY switches, -X is too tough to communicate to end users and -Z isn't used actualy
        Fixed some console printing problems
        Windows: ACM code now uses LAME library API only, all references to private include files are removed
        Windows: DirectShow code now uses LAME library API only, all references to private include files are removed
        Windows: disabled code that resets processor affinity, because this doesn't belong to LAME, but seems to work around some problems the parent process has (in most cases EAC)
    John33:
        Fixed mp2 and mp3 decoding: For mp3 and mp2 decoding, this now yields the same output as foobar2000 but the error checking remains unchanged
    Gabriel Bouvigne:
        VC8 project files
        Added support for x64 under VC8
        Restricted MPEG 2.5 to 64kbps frames
    Takehiro Tominaga:
        SSE version of FFT


LAME 3.97   September 24 2006

    3.97 beta 3 becomes 3.97


LAME 3.97 beta 3   August 19 2006

    Gabriel Bouvigne:
        Workaround against a short blocks detection issue


LAME 3.97 beta 2   November 26 2005

    Gabriel Bouvigne:
        Fixed an initialization error when input is not using a standard sampling frequency
        Fixed a possible assertion failure in very low bitrate encoding
        Slight change regarding ATH adjustment with V5
        Reinstated bit reservoir for 320kbps CBR
        ReplayGain analysis should now be faster when encountering silent parts
    Takehiro Tominaga:
        Fixed a possible link problem of assembly code


LAME 3.97 beta 1   September 12 2005

    Takehiro Tominaga:
        Fixed an out of array access in mp3rtp
        Fixed a quality setting in DLL
        Fixed display when using --silent
    Vitaly Ivanov:
        Updated DirectShow interface
    Robert Hegemann:
        Fixed an out of array access
        Fixed some small rounding problem in vbr-new quantization routines
        Fixed a bug in vbr-new regarding high frequencies (sfb21) when using -Y
        Fixed a few bugs in vbr-new when using -Y
        Updated scalefactors allocation scheme in vbr-new
        Fixed mingw32 configure problems
        Resolved some compiler warnings
        Updated command-line visualisation
    Gabriel Bouvigne:
        Changed some FLOAT8 to FLOAT
        Added project files for VC7
        Reworked -q1 and -q0
        Updated presets
        Fixed an error in ISO quantization on systems not using the IEEE754 hack
        Faster quantization
        SSE version of init_xrpow
    Rogério Brito:
        Updated Debian packaging
        Documentation work
    Chris Miller:
        Support for x64 platform SDK in makefile.msvc


LAME 3.96.1    July 25 2004

    Robert Hegemann:
        Fixed a rare bug in vbr-new (could lead to crashes or data corruption)
    Gabriel Bouvigne:
        some fixes in ACM codec
        fixed padding when encoding to 320kbps
        fixed block size selection for mid and side channels


LAME 3.96    April 11 2004

    Gabriel Bouvigne:
        new quantization selection mode (used in ABR/CBR)
        set sfscale for ABR/CBR up to 160kbps


LAME 3.96 beta 2    March 28 2004

    Takehiro Tominaga:
        removed unnecessary integer convertion in resampling
    Robert Hegemann:
        reworked scalefactor allocation in vbr-new
        fixed a freeformat decoding problem
    Gabriel Bouvigne:
        updated minimal bitrate for V1 and V2
    Aleksander Korzynski:
        added ability to disable ReplayGain analysis


LAME 3.96 beta    March 7 2004

    Takehiro Tominaga:
        fixed decoding issue
    Aleksander Korzynski:
        changed internal ReplayGain handling
        fixed some issues when ReplayGain is used with resampling
    Robert Hegemann:
        added standard ISO quantization for vbr-new, used at lower quality settings
        faster count_bits for vbr-new
        faster find_scalefac_ave function for vbr-new
        fixed an out of array access in psychoacoustic models; this bug could make some psy calculations worthless and sometimes let lame crash
        fixed an error on silent scalefactor bands; this bug resulted in huffman data overrun problems while decoding, resulting in audible glitches
        fixed a freeformat decoding bug
    Gabriel Bouvigne:
        adjusted short block thresholds
        fixed some array addressing bugs
        made ReplayGain analysis reentrant
    David Chandler: fixed a crash in quantize_xrpow
    Michal Bacik: fixed a crash when using 8kHz
    Goran Markovic: fixed some decoding bugs
    John Edwards: fixed a too small buffer in ReplayGain code


LAME 3.95.1    January 12 2004

    Gabriel Bouvigne:
        fixed a crash when using vbr-new
        changed ReplayGain reference level to 89dB


LAME 3.95    January 11 2004

    Gabriel Bouvigne:
        fixed lowpass values when using vbr with mono files
        faster quantization loops
        faster count_bits
        fixed a buffer requirement error in ACM codec
    Takehiro TOMINAGA:
        fixed mpglib and other decoding support code to prevent the crash when invalid mp3 input
    removed Layer I decoding support
    use FastLog and IEEE 754 hack on PowerPC too (approx. 10 percent faster)


LAME 3.94 beta December 15 2003

    Takehiro Tominaga:
        fixed block switching of nspsytune
        best huffman divide in the inner loop. This should improve the quality, but PAINFULLY slow. So it is not enabled by default. Use -q0 to use it.
        Changed -q option mapping. "-q2" until version 3.93 is now "-q3".
        saving bits by better scalefactor storing
        removed Vorbis support
        substep quantization.This should help breaking the SFB21 bloating problem
        made psychoacoustic model aware of ATH adjustements
        use ATH value as short block masking lower limit
        several fixes in psychoacoustic model
        more robust decoding
    Mark Taylor / Gabriel Bouvigne: fixed issues in VBR header
    Mark Taylor: workaround against some hardware decoder defficiencies
    Aleksander Korzynski: ability to compute the "Radio" ReplayGain and detect clipping on the fly. The ReplayGain value is stored in the Lame tag.
    Gabriel Bouvigne:
        work on presets
        use presets by default for cbr/abr
        use presets by default for vbr
        analog silence detection in partitionned sfb21
        do not compute noise in upper 0 part of the spectrum
        only compute noise in modified scalefactor bands
    Guillaume Lessard:
        nogap related changes
    Alexander Leidinger:
        prevent closing the input fd prematurely if the input is a named pipe


LAME 3.93.1    December 1 2002

    Gabriel Bouvigne:
        preset medium added to the dll interface
        fix for abr/cbr presets
        fix -q0 switch
    Alexander Leidinger: fix link problem on systems where socket() resides in libsocket


LAME 3.93    November 16 2002

    Takehiro Tominaga:
        bit allocation for pre-echo control improved for single channel encodings
        substep noise shaping
        optimizations by changing data structure
        noise shaping model 2 fix
        nspsytune FIR filter clean up
        fix small psymodel bugs(DC current estimation, preecho detection of non-VBR mode, and nspsymode initialization)
        portability fixes for Tru64 UNIX
    Albert Faber: some fixes in the DLL
    Simon Blandford: fixes for channel scaling in mono mode
    Dominique Duvivier: some optimizations and a faster log10 function
    Mark Taylor:
        some tag related fixes in the direct show filter and in the ACM codec
        fixed a mono encoding bug found by Justin Schoeman
        calc_noise bug fix
        other fixes
    Alexander Leidinger:
        update to autoconf 2.53, rewrite some configure tests
        Akos Maroy: determine gcc version even with gcc 3.1
        Andrew Bachmann: compile shared libs on BeOS (and perhaps other arches)
        ultrasparc switches for gcc 3.1
        fixes for SunOS 4.x
        fixes for 64bit arches
        CFLAGS fix for IRIX
        don't override CFLAGS if exptopt isn't requested
    Robert Hegeman:
        some fixes
        some fixes for VBR
    Gabriel Bouvigne:
        --noasm switch. Might help Cyrix/Via users
        presets and alt-presets merged


LAME 3.92    April 14 2002

    Alexander Leidinger:  add non linear psymodel (compile time option, disabled by default), workaround a bug in gcc 3.0.3 (compiler options, based upon suggestions from various people, see archives and changelog for more)
    Steve Lhomme:  ACM wrapper (MS-Windows codec)
    Steve Lhomme:  less memory copying on stereo (interleaved) input
    Takehiro Tominaga: Inter-channel masking, enables with --interch x option
    For buggy versions of gcc compiler (2.96*), back off on some of the advanced compiler options


LAME 3.91    December 29 2001

    Darin Morrison:  Bugfix for --alt-preset (for content with low volume, clean vocals), only important for the "fast standard" preset
    Alexander Leidinger:
        add some missing files to the distribution
        add --alt-preset to the man page


LAME 3.90    December 21 2001

    Many small improvements and bug fixes not added to history
    John Dahlstrom:  more fine tuning on the auto adjustment of the ATH
    Robert Hegemann:  small speed and quality improvements for the old VBR code (--vbr-old).
    Robert Hegemann:  some short block bug fixes
    Robert Hegemann:  Big improvements to --vbr-mtrh, now encodes much more frequencies over 16khz
    Robert Hegemann:  --vbr-new code disabled (outdated and lower quality) and replaced with --vbr-mtrh (Both --vbr-new and --vbr-mtrh now default to mtrh)
    Robert Hegemann:  reordering of --longhelp to give more information, --extrahelp dropped
    Darin Morrison:  Totally revamped and extremely high quality unified preset system and other general quality improvements now available with --alt-presets:
        some improvements to psychoacoustics (vast improvements over default L.A.M.E. modes) when --alt-preset is used including:
            Improved tuning of short block usage.
            Improved quantization selection usage (the -X modes), now adapts between appropriate modes on the fly. Also helps on "dropout" problems and with pre-echo cases.
            Improved joint stereo usage. Thresholds are better tuned now and fix some "dropout" problems L.A.M.E. suffers from on clips like serioustrouble.
            Improved noise shaping usage. Now switches between noise shaping modes on the fly (toggles -Z on and off when appropriate) which allows lower bitrates but without the quality compromise.
            Clips vastly improved over default L.A.M.E. modes (vbr/cbr/abr, including --r3mix): castanets, florida_seq, death2, fatboy, spahm, gbtinc, ravebase, short, florida_seq, hihat, bassdrum, 2nd_vent_clip, serioustrouble, bloodline, and others. No degraded clips known.
            VBR bitrates are now more "stable" with less fluctuation -- not dipping too low on some music and not increasing too high unnecessarily on other music. "--alt-preset standard" provides bitrates roughly within the range of 180-220kbps, often averaging close to 192kbps.
        --alt-presets replace the --dm-presets and "metal" preset is removed and replaced with generic abr and cbr presets.
        --alt-preset extreme (note the 'e') replaces xtreme to help eliminate some confusion
        --alt-preset vbr modes now have a fast option which offers almost no compromise in speed.
        --alt-preset standard (and "fast standard") are now much lower in bitrate, matching --r3mix with an overall average, though offering higher quality especially on difficult test samples.
        --alt-presets are no longer just "presets" as in a collection of switches, instead they are now quality "modes" because of special code level tunings (those mentioned above).
        Use --alt-preset help for more information.
    Roel VdB: more tuning on the --r3mix preset
    Jon Dee, Roel VdB:  INFO tag
    Alexander Leidinger, mp3gain@hotmail.com:  added --scale-l and --scale-r to scale stereo channels independantly
    Takehiro Tominaga:  new noise shaping mode, offering more "cutting edge" shaping according to masking, enabled via -q0
    Mark Taylor:  More work on --nogap
    Gabriel Bouvigne:  Small changes to abr code for more accurate final bitrate
    Gabriel Bouvigne, mp3gain@hotmail.com:  Preliminary ReplayGain analysis code added (not functional yet)
    Gabriel Bouvigne, Alexander Leidinger:  Documentation updates
    John Dahlstrom, DSPguru@math.com:  floating point interface function in the Windows DLL


LAME 3.89beta   July 5 2001

    John Stewart:  long filename support for Win9x/NT.
    Takehiro Tominaga:  LAME can calculate the CRC of VBR header, so now "lame -pv" works fine.
    Robert Hegemann:  Improvements of the new VBR code (--vbr-mtrh).
    Robert Hegemann: New VBR code (--vbr-mtrh) is now defaulted to get more feedback. The VBR speed is now on par with CBR. We will use the old VBR code in the release.
    Gabriel Bouvigne: Change of the maximum frame size limit. LAME should now be more friendly with hardware players.
    Gabriel Bouvigne: Size of VBR is now more balanced according to the -V value.
    Alexander Leidinger: Finished the implementation of the set/get functions.
    John Dahlstrom: LAME now handles 24bits input
    Mark Taylor: bugs in lame --decode causing truncation of mp3 file fixed
    Mark Taylor: preliminary --nogap support
    "Final" API completed: shared library safe!  This API is frozen and should be backwords compatiable with future versions of libmp3lame.so, but we will continue to add new functionality.  

LAME 3.88beta   March 25 2001

    A lot of work that was never added to the History!
    Frank Klemm and Gabriel Bouvigne:  New ATH formula.  Big improvement for high bitrate encodings.
    Takehiro Tominaga: Temporal masking
    Gabriel Bouvigne/Mark Taylor: auto adjustment of ATH
    Robert Hegemann:  Better outer_loop stopping criterion.  Enabled with -q2 or better.
    Robert Hegemann/Naoki Shibata:  slow/carefull noise shaping.  -q3..9:  amplify all distorted bands.  -q2: amplify distorted bands within 50%.  -q1-0:  amplify only most distorted band at each iteration.
    Takehiro Tominaga: Interframe, shortblock temporal masking.
    Takehiro Tominaga:  LAME restructured into a shared library and front end application.  Slight changes to the API. More changes are coming to turn LAME into a true shared library (right now you have to recompile if you upgrade the library :-(
    Naoki Shibata:
        improvements to psychoacoustics (--nspsytune)
        BUG in long block pre echo control fixed (some out of range array access in M/S psychoacoustics)
    Ralf Kempkens:    Visual Basic Script for lame, suggested to put it on your Windows Desktop and you can drag'n'drop Waves to encode on it.
    Alexander Stumpf:    improved lame.bat for 4Dos users
    Mark Taylor: Several bugs fixed in the resampling code.
    Frank Klemm, Robert Hegemann:    added assembler code for CPU feature detection on runtime (MMX, 3DNow, SIMD)
    Takehiro Tominaga: 3DNow FFT code.
    Florian Bome, Alexander Leidinger:    more work on configure stuff
    Alexander Leidinger:   automake/libtool generated Makefiles and TONS of other work.
    Alexander Leidinger:   Much work towards shared library style API.
    Anonymous: New more efficient RTP code.
    Mark Taylor: psycho-acoustic data now computed for all scalefactor bands (up to 24 kHz)
    Mark Taylor, Takehiro Tominaga: All ISO table data replaced by formulas - should improve MPEG2.5 results for which we never had correct table data.

LAME 3.87alpha  September 25 2000

    Mark Taylor:  Bug fixed in LAME/mpglib error recovery when encountering a corrupt  MP3 frame during *decoding*.
    Albert Faber:  added LayerI+II decoding support
    Frank Klemm:  added improved CRC calculation
    Frank Klemm: substantial code cleanup/improvements
    Robert Hegemann:  Bug fixes
        in huffman_init, could lead to segmentation faults (only in rare cases, most likely at lower sample rates)
        M/S switching at lower sample rates (the fact there is no 2nd granule was ignored)
    Robert Hegemann:  speed up in  VBR
    Jarmo Laakkonen:  Amiga/GCC settings for Makefile.unix.
    Magnus Holmgren:  README and Makefile for (free) Borland C++  compiler. Will also compile lame_enc.dll, but this is untested.
    Florian Bome:   LAME finally has a  ./configure script!!

LAME 3.86beta  August 6 2000

    Christopher Wise:  A makefile for DJGPP, the DOS version of gcc.  Now most windows users should be able to compile LAME with minimal effort.
    Robert Hegemann:  old VBR:   fixed some bugs and Takehiro's scalefac_scale feature (not yet on by  default.)  older LAME versions did not allow to spent more than 2500 bits of 4095 possible bits to a granule per channel, now fixed.
    Robert Hegemann:  new VBR:   analog silence treatment like in old VBR
    William Welch:  Improved options for Linux/Alpha gcc and ccc compilers in Makefile.
    Mathew Hendry:  setting appropriate CRC bit for additional Xing-VBR tagging frame
    Don Melton:  added ID3 version 2 TAG support
    John Dahlstrom: fixed bug allowing timing information (for status in command line encoder) to overflow.
    Tamito KAJIYAMA, Fixed several bugs in the LAME/Vorbis interface.
    Mark Taylor:  lame --decode will recognize Album ID tags
    Naoki Shibata:  Additive masking and other improvements to psycho acoustics.  (not yet on by default)

LAME 3.85beta   July 3 2000

    Takehiro Tominaga:  mid/side stereo demasking thresholds updated.
    Takehiro Tominaga: New short block MDCT coefficient data structure.  Should allow for future speed improvements.
    Robert Hegemann:  fixed bug in old VBR routine, the --noath mode messed up the VBR routine resulting in very large files
    Robert Hegemann: found bugs in some sections when using 32 bit floating point.  Default is now back to 64bit floating point.
    Takehiro Tominaga:  Modified PE formula to use ATH.
    S.T.L.:  README.DJGPP - instructions for compiling LAME with DJGPP, the dos version of gcc.

LAME 3.84beta  June 30  2000

    Mark Weinstein:  .wav file output (with --decode option) was writing the wrong filesize in the .wav file.  Now fixed.
    Mark Taylor:  (optional) Vorbis support, both encoding and decoding.  LAME can now produce .ogg files, or even re-encode your entire .ogg collection into mp3.   (Just kidding: it is always a bad idea to convert from one lossy format to another)
    ?: Bug fixed causing VBR to crash under windows.   (pretab[] array overflow)
    Sergey Sapelin: Another bug found in the mpg123 MPEG2 tables.  Now fixed for the mpg123 based decoder in LAME.
    Marco Remondini:  VBR histogram works in win32.  compile with -DBRHIST -DNOTERMCAP
    Takehiro Tominaga:  LAME CBR will now use scalefac_scale to expand the dynamic range of the scalefactors.
    Iwasa Kazmi:  Library improvements:  exit()'s, printf, fprintf's are being replaced by interceptable macros.

LAME 3.83beta  May 19  2000

    Mark Taylor:  Bug in buffering routines:  in some cases, could cause MDCT  to read past end of buffer.  Rare in MPEG2, even more rare for MPEG1, but potentially serious!
    Mark Taylor:  MDCT/polyphase filterbank was not being "primed" properly.  Does not effect output unless you set the encoder delay lower than the default of 576 samples.
    Mark Taylor:  "vdbj" and "Caster"  found several VBR bugs (now fixed):   1.  Analog silence detection only checked frequencies up to 16 kHz.  2.  VBR mode could still somehow avoid -F mode.  3.  VBR mode would ignore noise above 16 kHz (scalefactor band 22), Now calc_noise1 will compute the noise in this band when in VBR mode.  Not calculated in CBR  mode since CBR algorithm has no way of using this information.
    Mark Taylor:  scalefactor band 22 info (masking(=ATH),  noise and energy) now displayed in frame analyzer.
    VBR code ATH tuning was disabled by accident in 3.81, now fixed.
    Mark Taylor:  lame --decode will produce .wav files.  (oops - size is off by a factor of 4)

LAME 3.82beta   May 11 2000

    Robert Hegemann:  Fixed bug in high bitrate joint stereo encodings.
    Naoki Shibata:  new long block MDCT routine

LAME 3.81beta  May 8 2000

    all ISO code removed!
    Takehiro Tominaga and Naoki Shibata:  new window subband routines.
    Naoki Shibata:  Bug fix in mpglib (decoding) lib:  in some cases, MDCT coefficients from previous granule was incorrectly used for the next granule.
    ISO 7680 bit buffer limitation removed.  It can be reactivated with "--strictly-enforce-ISO"  Please report any trouble with high bitrates.

LAME 3.80beta  May 6 2000

    Takehiro Tominaga:  more efficient and faster huffman encoding!
    Takehiro Tominaga and Mark Taylor:  much improved short block compression!
    Tomasz Motylewski and Mark Taylor:  MPEG2.5 now supported!
    Mark Taylor: incorporated Takehiro's bitstream.c!  bitstream.c used by default, but old ISO bitstream code can also be used.
    Scott  Manley and Mark Taylor:  good resampling routine finaly in LAME.  uses a 19 point FIR filter with Blackman window.  Very slow for non integer resampling ratios.
    Iwasa Kazmi:  fixed SIGBUS error:  VBR and id3 tags were using data after it was free()'d.
    Robert Hegemann:  Improved VBR tuning.  #define RH_QUALITY_CONTROL and #RH_SIDE_VBR now the defaults.
    Robert Hegemann:   LAME version string now added to ancillary data.
    Kimmo Mustonen:  VBR histogram support for Amiga.
    Casper Gripenberg:  VBR stats (but not histogram) for DOS verson.
    Robert Hegemann:  rare VBR overflow bug fixed.
    Zack:  -F option strictly enforces the VBR min bitrate.  Without -F, LAME will ignore the minimum bitrate when encoding analog silence.
    Shawn Riley:  User can now specify a compression ratio (--comp <arg>) instead of a bit rate.  Default settings based on a compression ratio of 11.0
    Mark Taylor:  free format bitstreams can be created with --freeformat, and specify any integer bitrate from 8 to 320kbs with -b.
    Mark Taylor: lame be used as a decoder (output raw pcm only):  lame --decode input.mp3 output.pcm

LAME 3.70   April 6 2000

    "LAME 3.69beta" becomes LAME 3.70 "stable"

LAME 3.69beta   April 6 2000

    "spahm":  default mode selection bug fixed.  In some cases, lame was defaulting to regular stereo instead of jstereo when the user did not specify a mode.

LAME 3.68beta  April 4 2000

    Mark Taylor: mono encoding bug in DLL fixed.
    Ingo Saitz: bug in --cwlimit argument parsing fixed.
    Scott Manly: bug in 4-point resample code fixed.

LAME 3.67beta  March 27 2000

    Robert Hegemann:  jstereo now enabled for MPEG2 encodings
    Mark Taylor: old M/S stereo mode which used L/R maskings has been removed.
    Mark Taylor: Xing MPEG2 VBR headers now working.
    Mark Taylor:  When quantized coefficients are all 0 in a band, set scalefactors to 0 also to save a few bits.
    Ingo Saitz:  Problems with framesize calculation when using -f fast-math option fixed.

LAME 3.66beta March 21 2000

    Bug fixes in BladeEnc DLL, possible click in last mp3 frame, VBR historgram display, byteswapping option, ASM quantize routines work for both float and double.

LAME 3.65beta   March 17 2000

    Enabled ASM version of quantize_xrpow() - accidently disabled in lame3.64.

LAME 3.64beta  March 16 2000

    Don Melton:  id3v1.1 tags & id3 bugfixes
    Gabriel Bouvigne:  L/R matching block type fix
    Bug fixed which was allowing quantized values to exceed the maximum when not using -h
    Mark Taylor: Fitlers based on polyphase filterbank.  should be slightly better since the responce is independent of the blocktype, and they are slightly faster.
    Mark Taylor: API:  the API changed slightly - and this should be the final version. There is a new routine: lame_encode_buffer() which takes an arbritray sized input buffer, resamples & filters if necessary, encodes, and returns the mp3buffer.  There are also several new #defines, so it is possible to compile a simple encoding library with no decoding or file I/O or command line parsing.  see the file API for details.
    Mark Taylor: MSVC stuff:  lame.exe (with and without the frame analyzer) and the CDex lame_enc.dll should compile under MSVC.  The MSVC5 project files may need some tweaking.  In particular, you need to make sure LAMEPARSE, LAMESNDFILE and HAVEMPGLIB are defined.  (and HAVEGTK for the GTK stuff).

LAME 3.63beta  February 20  2000

    Robert Hegemann:  FPE with -h fixed?
    Mathey Hendry:  FPE error catching for Cygwin, FPE fix for vbr mode and output to /dev/null
    Jeremy Hall:  Fixed problems with input files where the number of samples is not known.
    Mathew Hendry:  ASM quantize_xrpow() for GNU i386
    Wilfried Behne  quantize_xrpow ()for PowerPC and non-ASM
    Takehiro Tominaga:  GOGO FFTs  (not yet used?)

LAME 3.62beta   February 9 2000

    Iwasa Kazmi:  frame analyzer short block display of single subblocks (press 1,2  or 3)
    Ingo Saitz:  --help option added, with output to stdout
    Alfred Weyers: short block AAC spreading function bug fixed
    Takehiro Tominaga:  new scalefac data structure - improves performance!
    Lionel Bonnet:  Bug fixed in MPEG2 scalefactor routine: scalefactors were being severly limited.
    Takehiro Tominaga:  faster FFT routines from.  These routines are also compatible with the GOGO routines, in case someone is interested in porting them back to LAME.
    Sigbjørn Skjæret, Takehiro Tominaga:  faster pow() code.
    Joachim Kuebart:  Found some unitialized variables that were effecting quality for encodings which did not use the -h option (now fixed).
    Mark Taylor: More modularization work.   It is now possible to use LAME as a library where you can set the encoding parameters directly and do your own file i/o.   The calling program is now it's own mp3 output.  For an example of the LAME API, see main.c, or mp3rtp.c or mp3x.c.  These can all be compiled as stand alone programs which link with libmp3lame.a.
    Felix vos Leitner:  mp3rtp fixes.  mp3rtp is a standalone program which will encode and stream with RTP.
    Robert Hegemann:  Information written to stderr displaying exactly which type of lowpass filter (if any) is being used.
    Iwasa Kazmi:  mpglib (the mpg123 decoder) scsfi decoding fixes.
    Takehiro Tominaga:  More mpglib scsfi decoding fixes.

LAME 3.61beta  January 14 2000

    Mark Taylor: Fixed bug with lowpass filters when using VBR with a 64kbs or lower min bitrate setting.
    Takehiro Tominaga:  more efficient huffman encoding splitting.

LAME 3.60beta   January 9 2000

    Mark Taylor: Distribution now comes with self test.  Needs work to be automated, see 'make test' in Makefile.
    Mark Taylor: AAC spreading function now the default
    Gabriel Bouvigne: updated HTML docs
    Felix von Leitner: compute correct file length from Xing header (if present) when input file is a mp3 file
    Felix von Leitner: mp3rtp (standalone) program now included.  Not yet tested.  mp3rtp ip:port:ttl  <infile>   /dev/null will stream directly to ip:port using  RTP.

LAME 3.59beta  January 4 2000

    Takehiro Tominaga:  --noath option.  Disables ATH maskings.
    Gabriel Bouvigne:  updated HTML docs.
    Iwasa Kazmi:  makefile fixes
    Mark Taylor:  Fixed bug where first frame of data was always overwritten with 0's.  Thanks to 'gol'
    Mark Taylor:  bug fixes in mid/side masking ratios (thanks to Menno Bakker)
    Mark Taylor:  replaced norm_l, norm_s table data with formulas.

LAME 3.58beta  December 13 1999

    Segher Boessenkool:  More accurate quantization procedure!  Enabled with -h.
    Mathew Hendry, Acy Stapp and Takehiro Tominaga: ASM optimizations for quantize_xrpow and quantize_xrpow_ISO.
    Chuck Zenkus:  "encoder inside" logo on web page
    Mark Taylor:   a couple people have asked for this.   Allow LAME to overide VBR_min_bitrate if analog_silence detected.   Analog_silence defined a la Robert:   energy  < ATH.
    An Van Lam: Valid bitrates were being printed for layer 2, not layer 3!
    Ethan Yeo:  Makefile.MSVC updated
    Mark Stephens:  updated all MSVC project files
    Robert Hegemann:  lowpass and highpass filters can be enabled with --lowpass, --highpass
    Mark Taylor:  MS switching is now smoother: ms_ratio average over 4 granules
    Takehiro Tominaga:  Scalefactor pre-emphasis fixed (and now turned back on)
    Takehiro Tominaga:  Bug in M/S maskings:  switch to turn on stereo demasking code was buggy.

LAME 3.57beta  November 22 1999

    Sigbjørn Skjæret, patch to allow encoding from 8bit input files when using LIBSNDFILE
    Mark Taylor: Automatic downsampling to nearest valid samplerate.
    Mark Taylor: Scalefactor bands demarked on MDCT plot in frameanalyzer
    Mark Taylor: Scalefactor preemphasis disabled for now.   The algorithm was often doing more harm than good.

LAME 3.56beta  November 19 1999

    Kimmo Mustonen: portabilty code cleanup.
    Vladimir Marek: id3 genre patch.
    Conrad Sanderson: new applypatch script.
    Mark Taylor: Initial window type now "STOP_TYPE" to reduce initial attenuation.  This is needed because the new encoder delay is so short.  With a NORM_TYPE, the first 240 samples would be attenuated.
    Mark Taylor: Padding at end of file now adjusted (hopefully!) to produce as little padding as possible while still guarantee all input samples are encoded.
    Takehiro Tominaga:  Reduced shortblock extra bit allocation formulas by 10% since new huffman coding is at least 10% more efficient.

LAME 3.55beta  November 11 1999

    Albert Faber:  updated BladeEnc.dll
    Mark Taylor: Simple lowpass filter added to linear downsampling routine.
    Nils Faerber: updated man page.
    Mark Taylor: All floating point variables are delcared FLOAT or  FLOAT8.  Change the definition of FLOAT8 in machine.h to run at 32bit preceision.
    Mark Taylor: Bug (introduced in 3.54beta) in stereo->mono downsampling fixed.

LAME 3.54beta  November 8 1999

    Mark Taylor: Encoder delay is now 48 samples.  Can be adjusted to 1160 to sync with FhG (see ENCDELAY in encoder.h)  This is kind of amazing, since if Takehiro put his MDCT/filterbank routine in a decoder, we could have a total  delay of only 96 samples.
    Mark Taylor: More inconstancies found and fixed in MPEG2 tables.
    Mark Taylor: Resampling from an MP3 input file now works.  But we still dont have a lowpass filter so dont expect good results.

LAME 3.53beta  November 8 1999

    Takehiro Tominaga:  Fixed MPEG2 problem in new MDCT routines.  Takehiro's combined filterbank/MDCT routine is now the default.  Removes all buffering from psymodel.c and the filterbanks/MDCT routines.

LAME 3.52beta  November 8 1999

    By permission of copyright holders of all GPL code in LAME,  all GPL code is now released under a modified version of the LGPL (see the README file)
    By popular demand, all C++ comments changed to C style comments
    Mark Taylor: Linear resampling now works.  Use --resample to set an output samplerate different from the input samplerate.  (doesn't seem to work with mp3 input files, and there is no lowpass filter, so dont expect good results just yet)
    Takehiro Tominaga:  Faster Huffman encoding routines

The following changes are disabled because of MPEG2 problems.  But to try them, set MDCTDELAY=48 in encoder.h, instead of MDCTDELAY=528.:

    Takehiro Tominaga:  New MDCT routines with shorter delay (48 samples instead of 528) and even faster than the old routines.
    Takehiro Tominaga:  Removed extra buffering in psymodel.c

LAME 3.51  November 7 1999

    Takehiro Tominaga: Bug in quantize.c absolute threshold of hearing calculation for non-44.1 kHz input files.

LAME 3.50  November 1 1999

    LAME 3.37beta becomes official LAME 3.50 release

LAME 3.37beta  November 1 1999

    Lionel Bonnet:  Found severe bug in MPEG2 Short block SNR.
    Sergey Sapelin:  VBR Toc improvement.
    Sergey Dubov: fskip() routine
    Conrad Sanderson: replacement for filterbank.c.   Not much faster but amazingly simpler.

LAME 3.36beta  October 25 1999

    Albert Faber:  more MSVC and BladeDLL updates
    Kimmo Mustonen:  Much code cleanup and Amiga updates
    Anton Oleynikov: Borland C updates
    Mark Taylor: More stdin fixes:  For some reason, forward fseek()'s would fail when used on pipes even though it is okay with redirection from "<". So I changed all the forward fseek()'s to use fread().  This should improve stdin support for wav/aiff files.  If you know the input file is raw pcm, you can still use the '-r' option to avoid *all* seeking of any kind.

LAME 3.35beta  October 21 1999

    Leonid Kulakov:  Serious bug in MPEG2 scalefactor band tables fixed.
    Portability patches from:  Anton Oleynikov, Sigbjørn Skjæret, Mathew Hendry, Richard Gorton
    Alfred Weyers: compiler options, updated timestatus.
    Albert Faber:  BladeDll and other updates (new machine.h).
    Monty:  updated Makefile to fix gcc inline math bug.

LAME 3.34beta  October 12 1999

    Mark Taylor: Bug fixed:  minimum bitrate in VBR mode could be ignored for a few frames.
    Mark Taylor: New (minor) VBR tunings.
    Tim Ruddick: New wav/aiff header parsing routines.  Better parsing and fewer fseek()'s.
    Anton Oleynikov:  patches to work with Borland C
    Gabriel Bouvigne:  Experimental voice option enabled with --voice

LAME 3.33beta  October 11 1999

    Robert Hegemann: RH VBR mode now the default and only VBR mode.  The new code will always quantize to 0 distortion and the quality is increased by reducing the masking from the psy-model.  -X0 is still the default for now.
    Robert Hegemann: new -X5 mode
    Mathew Hendry: New timing code, removes the need for HAVETIMES
    Mathew Hendry:  assembler quantize_xrpow for Windows
    Iwasa Kazmi:  stdin/stdout patch for Windows
    Mark Taylor: New option: "--athonly" will ignore the psy-model output and use only the absolute threshold of hearing for the masking.

LAME 3.32beta  October 8 1999

    Takehiro Tominaga:  faster long block spreading function convolution for non 44.1 kHz sampling frequencies, and faster short block spreading function convolution for all sampling frequencies.
    Takehiro Tominaga:  Completly rewritten huffman table selection and count_bits().  More efficient table selection results in many more bits per frame.
    Takehiro Tominaga:  More efficient scalefac compress setting.
    Mike Cheng: new calc_noise2()
    Alfred Weyers: patch for timestatus() seconds rollover

LAME 3.31beta  September 28 1999

    Albert Faber:  updated his BladeDLL code.  This allows LAME to be compiled into a BladeEnc compatiable .dll.
    Mike Cheng: faster l3psycho_ener() routine.
    Sigbjørn Skjæret: more code cleanup.

LAME  3.30beta  September 27 1999

    Conrad Sanderson:  ID3 tag code added (type 'lame' for instructions)
    new mdct.c from Mike Cheng (no faster, but much cleaner code)
    Mathew Hendry: Microsoft nmake makefile and a couple other changes for MSVC
    More modulization work:  One input sound file interface handles mp3's, uncompressed audio, with or without LIBSNDFILE.  Fixes (hopefully) a bunch of file I/O bugs introduced in 3.29 (Mark Taylor)
    LAME will now print valid samplerate/bitrate combinations (Mark Taylor)
    stdin/stdout fix for OS/2 (Paul Hartman)
    For mp3 input files, totalframes estimated based on filesize and first frame bitrate. (Mark Taylor)
    Updated all functions with new style prototypes.  (Sigbjørn Skjæret)

LAME 3.29beta  September 21 1999

    Bug in bigv_bitcount fixed.  Loop.c was overestimating the number of bits needed, resulting in wasted bits every frame.  (Leonid A. Kulakov)
    Bug in *_choose_table() fixed   These routines would not sellect the optimal Huffman table in some cases.   (Leonid A. Kulakov)
    Tuning of ATH normalization (macik)
    Removed unused variables and fixed function prototypes (Sigbjørn Skjæret)
    Sami Farin sent a  .wav  file that  LAME built in support choked on.   I added a slightly more sophisticated wav header parsing to handle this, but if you have trouble, use libsndfile.
    Resampling hooks and options added.  Buffering and resampling routines need to be written.
    LAME will now take an mp3 file as input.  When resampling code is working, LAME will be able to (for example) convert a high bitrate stereo mp3 to a low bitrate mono mp3 for streaming.

LAME 3.28beta  September 15 1999

    Serious bug fixed in high frequency MDCT coefficients.  Huffman coding was reversing the order of the count1 block quadruples.   (Leonid A. Kulakov)
    nint() problems under Tru64 unix fixed and preprocessor variable HAVE_NINT removed.  (Bob Bell)
    Compiler warning fixes and code cleanup   (Sigbjørn Skjæret, Lionel Bonnet)
    USAGE file now includes suggestions for downsampling.  For low bitrate encodings, proper downsampling can give dramatically better results.  (John Hayward-Warburton)

LAME 3.27beta  September 12 1999

    Several bugs in encode.c and l3bitstream.c fixed by Lionel Bonnet.
    Bugs in new VBR (#define RH) formula for mono input file and mid/side encoding fixed.

LAME 3.26beta  September 10 1999

    The "-m m" option (mono .mp3 file) will automatically mix left and right channels if the input file is stereo.  (Alfred Weyers)
    New quant_compare algorithm (method for deciding which of two quantizations is better) enabled with -X4 (Greg Maxwell)
    New mid/side VBR bit allocation formula.  Mid channel bits are set by the quality requirements, and then the side channel uses a reduced number of bits (in a proportion coming from the fixed bitrate code).  This might not be optimal, but it should be pretty good and no one knows what the optimal solution should be.  (Greg Maxwell)
    New VBR (#define RH) tunings based on detailed listening tests by Macik and Greg Maxwell.
    Sigbjørn Skjæret fixed several compiler warnings (which turned out to be potential bugs)
    Takehiro Tominaga fixed a low bitrate bug in reduce_side()
    Alfred Weyers fixed some buffer overflows.
    New ATH (absolute threshold of hearing) formula replaces buggy ISO code, and adds  analog silence treatment  (removal of coefficients below below ATH).   These are turned on by default but have not been fully tested.  (Robert Hegemann)
    Bug in short block spreading function fixed.  (Robert Hegemann)

LAME 3.25beta  August 22 1999

    Sigbjørn Skjæret fixed a zero byte malloc call.  This bug  was introduced in 3.24 and causes problems on non Linux systems.
    Bit allocation routines would sometimes allocate more than 4095 bits to one channel of one granule.  A couple of people reported problems that might be caused by this, especially at higher bitrates.
    Nils Faerber updated the man page and fixed many of the compiler warnings.

LAME 3.24beta   August 15 1999

    This release contains the following new code (for developers) which is disabled by default:
    Robert Hegemann:  Completely overhauled VBR code.  Now computes exact number of bits required for the given qualty and then quantized with the appropriate bitrate.
    Several new quantization quality measures.

LAME 3.23beta  August 8 1999

    Very nice continuously updated VBR histogram display from Iwasa Kazmi.  (disabled with --nohist).
    More modulerization work.  The encoding engine can now be compiled into libmp3lame, but the interface is awkward.
    Bug fixed in FFT Hann window formula (Leonid A. Kulakov).
    New LAME logo on the download page.  Created by Chris Michalisles.
    Several VBR algorithm improvements from Robert Hegemann.  New quantization noise metrics and VBR quality measure takes into account mid/side encoding.  Should produce smaller files with the same quality, especially when using jstereo.

LAME 3.22beta  July 27 1999

    Downsampling (stereo to mono) bug with MPEG2 fixed.  (Mike Oliphant)
    Downsampling now merges L & R channels - before it only took the L channel.
    More modularization and code cleanup from Albert Faber and myself.
    Input filesize limit removed for raw pcm input files.  For other file types, LAME will still only read the first 2^32 samples, (27 hours of playing time at 44.1 kHz).

LAME 3.21beta  July 26 1999

    Correct Mid/Side masking thresholds for JSTEREO mode!  This is enabled with -h.  It  makes LAME about 20% slower since it computes psycho-acoustics for L,R Mid and Side channels.
    "Analog silence" threshold added.  Keeps VBR from upping the bitrate during very quite passages.  (Robert.Hegemann)
    New VBR quality setting from Robert Hegemann.  It is based on the idea that distortion at lower bit rates sounds worse than at higher bitrates, and so the allowed distortion (VBR quality setting) is proportional to the bitrate.  Because of this, default minimum bitrate is now 32kbs.
    Expermental subblock gain code enabled with -Z.
    New "-r" option for raw pcm input files.  With -r, LAME will not do any fseek()'s or look for wav and aiff headers on the input file.
    Bug fixes in mp3x (frame analyzer) for viewing frames near end of the file.
    Bug fixed to allow setting the sampling rate of raw pcm input files.

LAME 3.20beta  July 19 1999

    Bug in get_audio.c fixed.  Libsndfile wrappers would not compile (Miguel Revilla  Rodriguez)
    Nils Faerber found some unitialized variables and some wierd extranous computations in filter_subband, now fixed.  This was causing seg faults on some machines.

LAME 3.19beta  July 18 1999

    Oops!  Robert Hegemann immediatly found a bug in the new  (old -Z option) quantization code.  calc_noise1 was not returning tot_noise, so non ms-stereo frames were buggy.

LAME 3.18beta  July 17 1999

    Many psycho-acoustic bug fixes.  Dan Nelson discovered a bug in MPEG2: For short blocks, the code assumes 42 partition bands.  MPEG1 sometimes has less, MPEG2 can have more.  In MPEG1, this bug would not have effected the output if your compiler initializes static variables to 0 on creation.  In MPEG2 it leads to array out-of-bounds access errors. Finally, there was a related bug in MPEG1/MPEG2, short & long blocks where the energy above 16 kHz was all added to partition band 0. (the lowest frequeny partition band!)
    The -Z option (Gabriel Bouvigne's idea of using total quantization noise to choose between two quantizations with the same value of "over") is now the default.  I believe this helps remove the trilling sound in Jan's testsignal4.wav.  The quality of testsignal2.wav and testsignal4.wav are now better than Xing and getting closer to FhG.
    Bug fixes in frame & sample count for downsampling mode. (ben "jacobs")
    Patches to improve modulization.  (ben "jacobs")

LAME 3.17beta  July 11 1999

    substantial code cleanup towards goal of making LAME more modular.

LAME 3.16beta  July 11 1999

    New tunings of window switching, and better bit allocation based on pe.  (Jan Rafaj.  improves both testsignal2.wav and testsignal4.wav).
    Bug in mid/side quantization when side channel was zero fixed.  (Albert Faber)
    Removed some extranous computations in l3psy.c (Robert Hegemann)
    More detailed timing status info, including hours display. (Sakari Ailus) and percentage indicator (Conrad Sanderson).
    Window_subband and calc_noise1,calc_noise2 speedups.  Quantize_xrpow speedup should be significant on non GNU/intel systems. (Mike Cheng)
    Better initial guess for VBR bitrate.  Should speed up VBR encoding.  (Gabriel Bouvigne)
    More advanced .wav header parsing.  fixes bugs involving click in first frame. (Robert.Hegemann)
    Correct filesize and total frame computation when using LIBSNDFILE (ben "jacobs")
    Click in last frame (buffering problem) when using libsndfile fixed.
    Audio I/O code overhauled.  There is now a uniform audio i/o interface to libsndfile or the LAME built in wav/aiff routines.  All audio i/o code localized to get_audio.c.

LAME 3.15beta

    times()/clock() problem fixed for non-unix OS.  (Ben "Jacobs")
    Fixed uninitialized pe[] when using fast mode.  (Ben "Jacobs")

LAME 3.13  June 24 1999

    Patches for BeOS from Gertjan van Ratingen.
    Makefile info for OS/2 Warp 4.0  (from dink.org).
    Status display now based on wall clock time, not cpu time.
    mem_alloc no longer allocates twice as much memory as needed (Jan Peman).

3.12pre9

    Updated BLADEDLL code to handle recent changes (Albert Faber).
    Bug fixed in parsing options when not using GTK (Albert Faber).
    MPEG2 Layer III psycho acoustics now working.
    Improved huffman encoding Chris Matrakidis. (10% faster).  I dont know how he finds these improvements!  LAME with full quality now encodes faster than real time on my PII 266.
    Fixed time display when encoding takes more than 60 minutes.

3.12pre8

    New mid/side stereo criterion.  LAME will use mid/side stereo only when the difference between L & R masking thresholds (averaged over all scalefactors) is less then 5db.  In several test samples it does a very good job mimicking the FhG encoder.
    Bug in mid/side stereo fixed:  independent variation of mid & side channel scalefactors disabled.  Because of the way outer_loop is currently coded, when encoding mid/side coefficietns using left/right thresholds, you have to vary the scalefactors simultaneously.
    Bug in side/mid energy ratio calculation fixed. (Thanks to Robert Hegemann)
    Default mode is stereo (not jstereo) if bitrate is chosen as 192kbs or higher.  Tero Auvinen first pointed out that FhG seems to think at 160kbs, their encoder is so good it doesn't need jstereo tricks. Since LAME is not as good as FhG, I am going to claim that 192kbs LAME is so good it doens't need jstereo tricks, and thus it is disabled by default.
    WAV header parsing for big-endian machines, and automatic detection of big-endian machines.  (Thanks to  Sigbjørn Skjæret).
    added 56 sample delay to sync LAME with FhG.
    MP3x (frame analyzer) can now handle MPEG2 streams.

3.12pre7

    MPEG2 layer III now working!  lower bit rates (down to 8kbs) and 3 more sampling frequencies:  16000, 22050, 24000Hz. Quality is poor - the psy-model does not yet work with these sampling frequencies.
    Fixed "ERROR: outer_loop(): huff_bits < 0." bug when using VBR.
    bash and sh scripts to run LAME on multiple files now included.  (from Robert Hegemann and Gerhard Wesp respectively)
    bug fix in encoding times for longer files from  (Alvaro Martinez Echevarria)
    yet another segfault in the frame analyzer fixed.
    ISO psy-model/bit allocation routines removed.  This allowed makeframe() to be made much simpler, and most of the complicated buffering is now gone. Eventually I would like the encoding engine to be a stand alone library.

3.12pre6

    Better VBR tuning.  Find minimum bitrate with distortion less than the allows maximum.  A minimum bit rate is imposed on frames with short blocks (where the measured distortion can not be trusted).   A minimum frame bitrate can be specified with -b, default=64kbs.
    LIBSNDFILE support.  With libsndfile, LAME can encode almost all sound formats.  Albert Faber did the work for this, including getting libsndfile running under win32.
    CRC checksum now working!   (Thanks to Johannes Overmann )
    frame analyzer will now work with mono .mp3 files
    more code tweeks from Jan Peman.
    Compaq-Alpha(Linux) fixes and speedups from Nils Faerber.
    Faster bin_search_StepSize from Juha Laukala.
    Faster quantize() from Mike Cheng
    Faster quantize_xrpow() from Chris Matrakidis.  xrpow_flag removed since this option is now on by default.
    Fixed .wav header parsing from Nils Faerber.
    Xing VBR frame info header code from Albert Faber.   "Xing" and "LAME 3.12" embedded in first frame.
    Bug in VBR bit allocation based on "over" value fixed.

LAME 3.11  June 3 1999

    Almost all warnings (-Wall) now fixed!  (Thanks to Jan Peman)
    More coding improvements from Gabriel Bouvigne and Warren Toomey.
    VBR  (variable bit rate).   Increases bit rate for short blocks and for frames where the number of bands containing audible distortion is greater than a given value.  Much tuning needs to be done.
    Patch to remove all atan() calls from James Droppo.

LAME 3.10 May 30 1999

    Fast mode (-f)  disables psycho-acoustic model for real time encoding on older machines.  Thanks to Lauri Ahonen who first sent a patch for this.
    New bit reservoir usage scheme to accommodate the new pre-echo detection formulas.
    Tuning of AWS and ENER_AWS pre-echo formulas by Gabriel Bouvigne and myself.  They work great!  now on by default.
    In jstereo, force blocktypes for left & right channels to be identical.  FhG seems to do this.  It can be disabled with "-d".
    Patches to compile MP3x under win32 (Thanks to Albert Faber).
    bin_serach_stepsize limited to a quantizationStepSize of  -210 through 45.
    outer_loop()  will now vary Mid & Side scalefactors independently.  Can lead to better quantizations, but it is slower (twice as many quantizations to look at).  Running with "-m f" does not need this and will run at the old speed
    Bug in inner_loop would allow quantizations larger than allowed.  (introduced in lame3.04, now fixed.)
    Updated HTML documentation from Gabriel Bouvigne.
    Unix  man page from William Schelter.
    numlines[] bug fixed.  (Thanks to Rafael Luebbert, MPecker author).
    Quantization speed improvements from Chirs Matrakidis.
    When comparing quantizations with the same number of bands with audible distortion, use the one with the largest scalefactors, not the first one outer_loop happened to find.
    Improved defination of best quantization when using -f (fast mode).
    subblock code now working.  But no algorithm to choose subblock gains yet.
    Linux now segfaults on floating point exceptions.  Should prevent me from releasing binaries that crash on other operating systems.

LAME 3.04 May 22 1999

    Preliminary documentation from Gabriel Bouvigne.
    I wouldn't have thought it was possible, but now there are even more speed improvements from Chris Matrakidis!  Removed one FFT when using joint stereo, and many improvements in loop.c.
    "Fake" ms_stereo mode renamed "Force" ms_stereo since it forces mid/side stereo on all frames.  For some music this is said to be a problem, but for most music mode is probably better than the default jstereo because it uses specialized mid/side channel masking thresholds.
    Small bugs in Force ms_stereo mode fixed.
    Compaq Alpha fixes from Nathan Slingerland.
    Some new experimental pre-echo detection formulas in l3psy.c (#ifdef AWS and #ifdef ENER_AWS, both off by default.  Thanks to Gabriel Bouvigne and Andre Osterhues)
    Several bugs in the syncing of data displayed by mp3x (the frame analyzer) were fixed.
    highq (-h) option added.  This turns on things (just one so far) that should sound better but slow down LAME.

LAME 3.03 May 18 1999

    Faster (20%) & cleaner FFT (Thanks to Chris Matrakidis  http://www.geocities.com/ResearchTriangle/8869/fft_summary.html)
    mods so it works with VC++ (Thanks to Gabriel Bouvigne, www.mp3tech.org)
    MP3s marked "original" by default  (Thanks to Gabriel Bouvigne, www.mp3tech.org)
    Can now be compiled into a BladeEnc compatible .DLL   (Thanks to  Albert Faber, CDex author)
    Patches for "silent mode" and stdin/stdout  (Thanks to Lars Magne Ingebrigtsen)
    Fixed rare bug: if a long_block is sandwiched between two short_blocks, it must be changed to a short_block, but the short_block ratios have not been computed in l3psy.c.  Now always compute short_block ratios just in case.
    Fixed bug with initial quantize step size when many coefficients are zero.  (Thanks to Martin Weghofer).
    Bug fixed in MP3x display of audible distortion.
    improved status display (Thanks to Lauri Ahonen).

LAME 3.02 May 12 1999

    encoder could use ms_stereo even if channel 0 and 1 block types were different.  (Thanks to Jan Rafaj)
    added -k option to disable the 16 kHz cutoff at 128kbs.  This cutoff is never used at higher bitrates. (Thanks to Jan Rafaj)
    modified pe bit allocation formula to make sense at bit rates other than 128kbs.
    fixed l3_xmin initialization problem which showed up under FreeBSD.  (Thanks to Warren Toomey)

LAME 3.01 May 11 1999

    max_name_size increased to 300  (Thanks to Mike Oliphant)
    patch to allow seeks on input file (Thanks to Scott Manley)
    fixes for mono modes (Thanks to everyone who pointed this out)
    overflow in calc_noise2 fixed
    bit reservoir overflow when encoding lots of frames with all zeros  (Thanks to Jani Frilander)

LAME 3.0 May 10 1999

    added GPSYCHO (developed by Mark Taylor)
    added MP3x (developed by Mark Taylor)
    LAME now maintained by Mark Taylor

November 8 1998

    Version 2.1f released
    50% faster filter_subband() routine in encode.c contributed by James Droppo

November 2 1998

    Version 2.1e released.
    New command line switch -a auto-resamples a stereo input file to mono.
    New command line switch -r resamples from 44.1 kHz to 32 kHz [this switch doesn't work really well. Very tinny sounding output files. Has to do with the way I do the resampling probably]
    Both of these were put into the ISO code in the encode.c file, and are simply different ways of filling the input buffers from a file.

October 31 1998

    Version 2.1d released
    Fixed memory alloc in musicin.c (for l3_sb_sample)
    Added new command line switch (-x) to force swapping of byte order
    Cleaned up memory routines in l3psy.c. All the mem_alloc() and free() routines where changed so that it was only done once and not every single time the routine was called.
    Added a compile time switch -DTIMER that includes all timing info. It's a switch for the time being until some other people have tested on their system. Timing code has a tendency to do different things on different platforms.

October 18 1998

    Version 2.1b released.
    Fixed up bug: all PCM files were being read as WAV.
    Played with the mem_alloc routine to fix crash under amigaos (just allocating twice as much memory as needed). Might see if we can totally do without this routine. Individual malloc()s where they are needed instead
    Put Jan Peman's quality switch back in. This reduces quality via the '-q <int>' switch. Fun speedup which is mostly harmless if you're not concerned with quality.
    Compiling with amiga-gcc works fine

October 16 1998

    Version 2.1a released. User input/output has been cleaned up a bit. WAV file reading is there in a very rudimentary sense ie the program will recognize the header and skip it, but not read it. The WAV file is assumed to be 16bit stereo 44.1 kHz.

October 6 1998

    Version 2.1 released with all tables now incorporated into the exe. Thanks to Lars Magne Ingebrigtseni

October 4 1998

    In response to some concerns about the quality of the encoder, I have rebuilt the encoder from scratch and carefully compared output at all stages with the output of the unmodified ISO encoder.
    Version 2.0 of LAME is built from the ISO source code (dist10), and incorporates modifications from myself and the 8hz effort. The output file from LAME v2.0 is identical to the output of the ISO encoder for my test file. Since I do not have heaps of time, I left the ISO AIFF file reader in the code, and did not incorporate a WAV file reader.
    Added section on quality.

October 1 1998

    Updated web page and released LAME v1.0

Up to September 1998

Working on the 8hz source code...

    Patched the 8hz source code
    45% faster than original source (on my freebsd p166).
        m1 - sped up the mdct.c and quantize() functions [MDCTD, MDCTD2, LOOPD]
        m2 - sped up the filter_subband routine using Stephane Tavenard's work from musicin [FILTST]
        m2 - minor cleanup of window_subband [WINDST2]
        m2 - Cleaned up a few bits in l3psy.c. Replaced a sparse matrix multiply with a hand configured unrolling [PSYD]
        m3 - (amiga only) Added in the asm FFT for m68k (based on sources from Henryk Richter and Stephane Tavenard)
        m4 - raw pcm support back in
        m5 - put in a byte-ordering switch for raw PCM reading (just in case)
        m6 - reworked the whole fft.c file. fft now 10-15% faster.
        m7 - totally new fft routine. exploits fact that this is a real->complex fft. About twice as fast as previous fastest fft (in m6). (C fft routine is faster than the asm one on an m68k!)
        m8
            Now encodes from stdin. Use '-' as the input filename. Thanks to Brad Threatt
            Worked out that the 1024point FFT only ever uses the first 6 phi values, and the first 465 energy values. Saves a bunch of calculations.
            Added a speed-up/quality switch. Speed is increased but quality is decreased slightly. My ears are bad enough not to be able to notice the difference in quality at low settings :). Setting '-q 1' improves speed by about 10%. '-q 100' improves speed by about 26%. Enoding of my test track goes from 111s (at default '-q 0') to 82s (at -q 100). Thanks to Jan Peman for this tip.
        m9 - fixed an error in l3psy.c. numlines[] is overwritten with incorrect data. Added a new variable numlines_s[] to fix this. Thanks again to Jan Peman.
        m10 - Down to 106 seconds by selecting a few more compiler options. Also added a pow20() function in l3loop.c to speed up (ever so slightly) calls to pow(2.0, x)
        m11
            No speedups. Just cleaned up some bits of the code.
            Changed K&R prototyping to 'normal' format. Thanks to Steffan Haeuser for his help here.
            Changed some C++ style comments to normal C comments in huffman.c
            Removed the #warning from psy_data.h (it was getting annoying!)
            Removed reference in bitstream.c to malloc.h. Is there a system left where malloc.h hasn't been superceded by stdlib.h?
    In Progess:
        my PSYD hack for the spreading functions is only valid for 44.1 kHz - Should really put in a "if freq = 44.1 kHz" switch for it. Someone might want to extend the speedup for 48 and 32 kHz.
        Putting in Jan Peman's quantanf_init speedup.

