I spent most of sunday trying out Gabriel's l3psy.c, and tuning all
the new adaptive window switching code in LAME. (now on the web site,
lame3.05pre2.tar.gz).
I dont like to do listening tests if I can avoid them, so I went
through castanets.wav, else3.wav and testsignal2.wav frame by
frame comparing FhG and LAME.
I used the energy surge ideas in that paper that Andre translated to
detect initial pre-echo events that would otherwise be missed
(especially in testsignal2.wav). I tuned it so that it would detect
almost all of the initial shortblocks detected by FhG, and not be
fooled by the potential shortblocks in else3.wav that are ignored by
FhG. Then I used Gabriel's AWS code, (slightly modified because I had
to move the channel loop inside l3psy.c for other reasons). Once a
short block is detected, this makes it easier to trigger short blocks
a few frames afterwards, again picking up extra short blocks that LAME
would otherwise miss.
Here are the results:
castanets.wav: FhG: 116 shortblocks
LAME3.05pre2 80 shortblocks
else3.wav: FhG: 16 shortblocks
LAME3.05pre2: 17 shortblocks.
5 granules did not use short_blocks where FhG did
6 granules used short_blocks where FhG didn't
testsignal2.wav FhG: 39 shortblocks
LAME3.05pre2: 36 shortblocks
7 granules did not use short_blocks where FhG did
4 granules used short_blocks where FhG didn't
The tunings I tried that would trigger more shortblocks in castanets.wav
usually made else3.wav and testsignal.wav significantly worse, so
I thought the above was a good compromise.
Mark
--
MP3 ENCODER mailing list