TooLAME 02l - 2 March 2003

  • Major psychoacoustic model overhauls
    • For more detail, see psycho models
    • Psychoacoustic Model 3
      • Psycho3 is a reimplementation of the psychoacoustic model 1 from the ISO standard. Pretty much totally rewritten from the ground up, following the nomenclature of the ISO standard.
      • Uses arrays for keeping tone/noise labels rather than the really hard to grok pointer-stuff from the dist10 code.
      • Uses Painter + Spanias' Formula for the ATH rather than the tables from the standard.
      • Uses LAME's freq-to-bark conversion to construct the critical bands.
      • Future: Needs a proper geometric mean for weighting the noise. Needs one more function added to the decimation routines which would eliminate maskers within 0.5 dB of each other.
      • Eliminated all the ISO/dist10 tables. Everything is from equations or built from scratch.
    • Psychoacoustic Model 4
      • A reimplementation of psychoacoustic model 2.
      • Eliminated all the ISO/dist10 tables. Everything (ath, bark, critical bands) is from equations or built from scratch
      • FUTURE: For psycho model 2 and 4 there's some really bad "warbling" and "Davros" type noise. Depending on the loudness of your sound sample, this can get really annoying. I don't know where it's coming from.
    • Psychoacoustic Model 0
      • This model uses the ATH and the scalefactors for each subband to build an approximate SMR for each subband at nearly zero cost.
      • Based upon an idea mentioned in "Low power mpeg/audio encoders using simplified psychoacoustic model and fast bit allocation" by Hyen-O Oh et al.
      • For the amount of effort that this psycho model puts in, the results are pretty good.
      • Future: Add some parameters to the equation to allow it to be tweaked on the fly.
    • Psychoacoustic Model -1
      • This is the old "fast" psychoacoustic model ("-f").
      • All it does is copy over a static set of pre-calculated SMR values
      • Sounds OK for most stuff.
  • New bitstream encoding routines (encode_new.c)
    • All the old tables.c/alloc_table stuff is now superfluous.
    • All tables are now at the top of encode_new.c
    • The tables have quite a bit of indirection to get to the value that you need (but really not any more indirection than the old alloc_table stuff). Probably need to add some more docs to say what's going on.
    • These new routines are the default, but you can remove the "NEWENCODE" definition and use the old ones (just in case).
    • The new routines will become the default in the next release.
  • More speed
    • All the trig stuff for psychomodel 4 is now done with tables instead of calculating exact values.
    • The exact trig values aren't really used directly in the encoder. They're sort of averaged over a couple of iterations and used as a predictor of uncertainty. So being off a few thousandths won't really affect anything.

TooLAME 02k - 16 February 2003

  • Some great speedups with a combined filtersubband and windowsubband (Ricardo Schelp ricardoschelp at arnet.com.ar)
  • Cleaned up the psycho model calling (should be easier to add your own psycho model if you felt like having a hack)
  • DAB Extensions are now of variable length controlled by an argument to the -D switch (Nicolas Croiset - ncroiset at vdl.fr)
  • Fixed raw PCM reading to no longer miss the first 40 bytes. (MFC)
  • No longer a 4GB limit when reading from stdin (or if your filesys supports) (Nicolas)
  • Tweaks to the end of the bitstream to allow concatentation of mp2 files (Nicolas)
  • Finally (?) fixed the segfaults using psy model 1 (Nicolas et al)

TooLAME 02j - 12 Feb 2003

  • Definitely LGPL now.
  • encode.c - VBR mode has been stabilised to work correctly for all sampling frequencies (README.VBR has more details)
  • get_audio.c has become audio_read.c - cleaned up that really dodgy wave header parsing. (thanks to Philippe Jouguet - philippe.jouguet at vdl.fr and Henrik Herranen - leopold at vlsi.fi)
  • spelling fix for 'extension' - Philippe again
  • psycho_I.c - Speedup for "% 1408" calcs "-DSAMI_P1" sami.sallinen at g-cluster.com (about 4% overall speedup for me)
  • subband.c - Pointer arithmetic for filter subband "-DSAMI_SB" (sami again) (doesn't give any advantage over gcc3.2 on my system)
  • psycho_II.c
    • enabled the use of gcc's _sincos(). "-DSINCOS -D_GNU_SOURCE" about a 5% overall speed-up in encoding (Philippe again)
    • added the LSF frequencies so that you can use psy model 2 with LSF (good old Philippe)
  • verbosity - added a '-t' flag to set the 'talkativity' level needed for transcode plugin (Andreas neukoetter - anti at webhome.de)
  • toolame.c - LSF files should now select a valid default bitrate by default. (96kbps)