> > 
> > It's not the fade that is the problem, it's the mdct aliasing.
> > 
> 
> I disagree.  There may be some problems created by the *filterbank*,
> but the only attenuantion caused by the MDCT will be the first 96
> samples.  Here's an example:
> 
[...SNIP...]

> granule 2 is the first granule that is encoded.  granule 1 is

I assume you mean 1+2 is the first encoded?  1 granule = 1152 samples.
Overlapping and stuff.

> the ficticious previous granule that doesn't really exisit, except
> that the output of the decoder for granule 2 is going to be combined with
> the data in the buffer which would have held the decoded output of
> granule 1.  I will assume the decoder initializes this buffer with
> zeros.  
> 
> Lets ignore quantization.  The lapped MDCT followed
> by the IMDCT is lossless.  That means that the IMDCT output
> from granule 2  when added to the IMDCT output from granule 1
> is indentical to the input.  
> 

Ok. But, unfortunately, we _can't_ ignore quantization, because we have a
_terribly_ bad granule-pair to encode: granule 2 contains sound which is
not just fading in, granule 1 is zeroed, so our encoding will be decoded
quite badly if there is _any_ quantization. And in the 1st block you output,
you don't have any bitreservoir to save you, either, I'm afraid.

> In our case, the decoder just sets the granule 1 IMDCT output to all
> 0's because it never actually computes this and is just initializing a
> buffer.  But the output of granule 2 IMDCT is computed correctly.
> 
> output = granule_1_ouput + granule_2_output
> 
> granule_1_output:  encoder uses all 0's, which is incorrect since
>                    the MDCT (if it was performed) would have seen
>                    some of the data in granule 2.  
>                   
> granule_2_outptu:  correct
> 
> Therefor, the output will be correct *except* where it uses data from
> granule 1, but this can effect at most the first 96 samples.

I don't understand this. I would think it would affect 0 samples?

> 
> However, the polyphase filterbank is another story, and this
> is something I hadn't thought about when I claimed only
> the first 96 samples will be attenuated:
> 
> The data (with first 96 samples corrupt) is then sent to the 
> inverse polyphase filterbank.  I dont know much about how this
> albatross works, but I think it has an effective window length of 
> 512.  So the bad data in the first 96 samples can corrupt
> samples up to 96+512.  

You can eliminate the poly bank delay as well, I think.

> 
> Any idea how bad this corruption is?  

The poly phase bank uses quite steep filters. Basically, the poly bank
is a 512 point fft, then a window (almost rectangular), fft back, dct.

> 
> btw, you cant check in it lame because it looks like the
> filterbank (although the delay is only 48), is not "primed"
> correctly, so the first 286 samples will be ignored.
> I will fix this and post more about it next...
> 
> Mark
> 
> --
> MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )
> 

--
MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )

Reply via email to