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