Hi Everyone,
Here is a description of the new mid/side stereo switching
criterion (in lame3.12pre8). (text on the web page too)
Just to clarify the mid/side stereo and jstereo terms that I find myself
using interchangeably:
There are two stereo modes, "stereo" and "jstereo". "stereo" is just
the normal independent coding of left & right channels. "jstereo"
means the frames may use normal stereo, stereo, mid/side stereo or
intensity stereo. (FhG and LAME never use intensity stereo). In
jstereo mode, the encoder has to decide for each frame if it should be
encoded stereo or mid/side stereo.
mid/side stereo encodes the mid and side channels instead of left and
right. It allocates more bits to the mid channel than the side
channel. For signals without a lot of stereo separation, there will
be very little information in the side channel and this trick will
improve bandwidth. If the left & right channels differ by a lot, then
the side channel will contain a lot of information. Errors encoding
this information will show up as noise in *both* the left & right
channels after decoding.
The new ms_stereo switch uses mid/side stereo only when the difference
between L & R masking thresholds (averaged over all scalefactors) is
less then 5db. This algorithm is based on the one given in the
mid/side encoding paper (see References on www.sulaco.org/mp3). In
several test samples it does an amazing job mimicking the FhG
encoder (see below).
I believe the idea behind this is the following: If one channel has
much less noise masking in a certain band, than masked noise in one
channel that is spread to the other channel (by mid/side stereo) may
no longer be masked. If both channels have the same masking, then the
noise spread between both channels will be equally well masked.
regular stereo frames:
Fools.wav: (1180 frames)
FhG frames 794-805,903
new LAME frames 794-804,870,903,967,1018
old LAME over 500 frames used regular stereo
IfYouCould.wav: (80 frames)
FhG 44,52,61
new LAME 43,44,52,60,61 (like FhG, 2 extra)
old LAME 34,63,66,67 (completely unlike FhG)
mstest.wav: (156 frames) (from Scott Miller)
FhG: 138 frames use regular stereo
new LAME 139 frames use regular stereo
old LAME 8 frames use regular stereo
t1.wav: 160 frames (from Nils Faerber)
FhG: 40-43, 81-84, 122-125, 145-151
new LAME: 39-42, 81-84, 121-125, 149
old LAME: constant inappropriate toggling of ms_stereo
Castanets.wav: (253 frames)
All encoders use all ms_stereo for all frames
else3.wav: 217 frames
All encoders use all ms_stereo for all frames
--
MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )