tooLAME changes

# 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)