>
> I am looking for a ducumentation of ms-joint stereo.
> I've already patche lamer with ms-joint stereo support
> and it sound great - but i am not sure whether i am right.
>
> My questions are:
> (from the lamer-hompage:)
> MS_stereo processing
> ...
> Sparsing of channel
> In every scalefactor band sb all paris of small values (Si + Si+1) are set
> to zero:
> ---
> Is Si a scalefactor band or a ordinary subband?
> Is it necessary to recalculate the the allowed distortion?
>
I've only tried using ordinary subbands - and I couldn't get it to
work. In something like castanets.wav, it will remove 90% of the side
channel and sound bad. If you try it with scalefactor bands, let me
know how it works. I dont think you would have to recalculate the
allowed distortion since that is done with FFTs of the original PCM
data and it wouldn't see the changes from the sparsing? The one
question I have is should you use allowed distortions for the L & R
channels? Then to compute the noise in you have to first reconstruct
L/R out of M/S (the current lame3.0 implementation). The other way is
to compute M/S allowed distortions (in lame3.0 with the -m f option).
Right now this is a hack, but it will probably eventually be the
default.
> I'va also found a small bug in calc-noise(loop.c/line 970):
>
> for ( sfb = cod_info->sfb_smax; sfb < 12; sfb++ )
> IMHO:
> for ( sfb = 0; .....
>
I dont think that is a bug. cod_info->sfb_smax and
cod_info->sfb_lmax are a confusing way to tell the routines in loop.c
if they should be using the short_block loops or the long_block loops
when computing something like noise or scalefactors.
By the way, do you know what is going on with subbands in sfb=12? (or
21 for long blocks). I remove them at 128kbs,but leave them in at
higher bitrates (that idea is taken from looking at FhG output with
the frame analyzer). These coefficients always have a scalefactor of
0, and the noise calculation ignores them.
> And there is a big problem with the outer loop at low bitrates(192k-) :
> (loop.c)
"big problem" is an understatement! Check out
the MPEG2 J. Audio Eng. Soc. 1997 paper. It has a description
of a better outer_loop which is what I use. It makes a big
difference. Ignoreing all scalefactors basically means
that outer_loop is not really a loop? in the MPEG2 paper,
they claim the inner_loop/outer_loop combo is
"...known to produce very good audio quality".
Mark