[ghost-dev] Quantization of sine params

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Sat Jul 15 19:51:11 PDT 2006


> 1. Group the sinusoids in each frame as
> {F1,2*F1,3*F1,4*F1,...},{F2,2*F2,3*F2,4*F2,...} and so on. So this
> takes care of the harmonic nature of the sinusoids.  

That would seem to make sense, assuming there is sufficient
harmonicity...

> 2. Compare the groups for the current frame with the groups used for
> the previous frame. If there is a new group appearing send it. If
> there are some haromonics added or removed from the groups for
> previous frame send that as well. Else don't send any new information
> to the decoder. Also take care of the situation where a group in the
> current frame is  {(F1+f),2*(F1+f),3*(F1+f),4*(F1+f),...}. But in most
> of the cases it has been found that it is better to start sending a
> new group altogether rather than sending these shifts (f).

Well, it would seem like there would always be a shift (even if small),
no?

> Problems faced for this model: The harmonics do not fit into a
> simplisitc model of (n*F1). it is rather (n*F1+f) is some cases. I
> guess we will have to have the key-frame concepts here to avoid
> inter-frame dependencies, as you suggested.

Yes, I think we'll have key frames, or even better we'll resync the
sinusoids in different frames so that we don't have bursts in bit-rate
that you usually get with keyframes.

> As of now I am testing this model based on how frequently I have to
> send extra information to teh decoder. 
> 
> Amplitude Quantization
> ----------------------
> I was trying to obtain some patterns for the amplitude deviations for
> each sine component. But could not really see a pattern like
> exponential decay in most cases. Except for the obvious
> time-differential coding I could not try anything else. I am kind of
> unsure about how to go ahead here.

Can you try with the simpler model (cos/sine instead of
cos/sine/tcos/tsine) and see if there's a better pattern?

> As for quantization I have not done anything yet.
> 
> Other methods tried:
> -------------------
> 1. Sorting. Does not seem to yield much. As you pointed out, just for
> the sake of amplitude quantization the pattern of appearance of
> sinusoids is sacrificed here. So not much progress with this

I would also expect that sorting by frequency would be better than
sorting by amplitude.

> 2. Quantize frequencies of a few selected sinusoids and recreate other
> values using interpolation: Idea was to sampe the frequency curve in
> each frame and send only a few selected tones to the decoder. th rest
> of the tones will be obtained using interpolation from them. But the
> harmonic grouping seem to work better than this.

Can you explain this a bit more?

> Still to be tried
> ---------------
> 1. Removal of non-perceptible sinusoids based on psych model.  

I guess we'll always quantize the amplitude with a resolution
corresponding to the psy model, so if the amplitude < masking curve,
then it'll simply be quantized as zero.

> PS: I didnt quite get what you meant by encode-simulation.

What I mean is that for testing purposes, it's always easier to just
have the encoder quantize some parameter and reconstruct that part
without having to quantize everything and produce a bit-stream. For
example, you can extract sinusoids, remove them from the signal,
quantize/unquantize them, and then add it back to the residual. 

	Jean-Marc



More information about the ghost-dev mailing list