From: Mark Taylor <[EMAIL PROTECTED]>
Subject: Re: [MP3 ENCODER] pre-echo control for short block ?
Date: Thu, 23 Mar 2000 20:20:39 -0700

> > 
> > Hello,
> > 
> > (Though this question may have been answered several times,)
> > In psycho.c,
> > --- 
> >    /* pre-echo control */
> >    /* rpelev=2.0, rpelev2=16.0 */
> >    temp_1 = Min(ecb, Min(rpelev*nb_1[chn][b],rpelev2*nb_2[chn][b]) );
> >    thr[b] = Max( qthr_l[b], temp_1 ); 
> >    nb_2[chn][b] = nb_1[chn][b];
> >    nb_1[chn][b] = ecb;
> > ---
> > 
> > Why don't LAME do same treatment against a short block ?
> > Should we consider a case of switching long block and
> > short block ?
> > 
> > 
> > Iwasa Kazmi
> > [EMAIL PROTECTED]
> > --
> > MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )
> > 
> 
> 
> Here's what I *think* is going on, but I'd be interested in
> hearing other opinions:
> 
> This is as described in the ISO MPEG1 psymodel.  I believe it
> was a technique used before window switching (short & long blocks)
> was developed, so it may not be necessary anymore.  It would
> be interesting to check to see if it is still used in AAC. 
> 
> Take the maskings for frame N.  If there was a big increase
> (by a factor of 2 from frame N-1 or a factor of 16 from
> frame N-2) then the model takes this as the sign of
> some kind of attack.  An attack generates a lot of masking,
> but this masking should only be used behind the attack.
> 
> For a long block, the attack might be at the end of the frame.  In
> that case, we dont want the masking from the attack to mask the
> signicant part of the signal before the attack - this will cause
> pre-echo.  It would be okay to use the masking for the
> part of the component after the attack, but in a long block
> we are only allowed one masking curve, so the model plays
> it safe and reduces the masking a little.
> 
> If the attack is large enough, the encoder will switch to short
> blocks, where the frame is divided into 3 blocks, each with their own
> masking functions.  If the attack occurs at the end of the frame, it
> will show up only in the third block.  It sill generates a large
> amound of masking, but this masking is only applied in the third
> block.  The first and second blocks have their own masking functions
> which are not contaminated by the attack in the third block.
> 
> 
> Mark
> 

I minded another point.
A block which has large surge seems to have influence on the
previous block.  (Is it caused from overlap of MDCT blocks ?)
If the previous block also has a large surge, this influence would
not be a problem. On the other hand, if previous block is silent,
the noise from current block would become an audible noise.
I thought the pre-echo control would be effective for this
problem.


I have another question about short block.
I heard that short block should be started 1 or 2 blocks early.
I don't know the reason of it, but FhG seems to do it.
FhG seems to stop the short blocks 1 or 2 blocks later.
Is this trick effective for something ?
I modified lame.c and psycho.c so that current block type is
changed according to the next block type.
But I couldn't find any improvements.


Iwasa Kazmi
[EMAIL PROTECTED]
--
MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )

Reply via email to