Notice

Please be aware that much of the software linked to or mentioned on this forum is niche and therefore infrequently downloaded. Lots of anti-virus scanners and so-called malware detectors like to flag infrequently downloaded software as bad until it is either downloaded enough times, or its developer actually bothers with getting each individual release allow listed by every single AV vendor. You can do many people a great favor when encountering such a "problem" example by submitting them to your AV vendor for examination. For almost everything on this forum, it is a false positive.
Topic: Global gain, scale factors, signal, quantization (Read 4074 times)
0 Members and 1 Guest are viewing this topic.

Global gain, scale factors, signal, quantization

2003-08-26 11:01:47
This could belong to both mp3 and aac forums, so I am asking here.

My question is about how to quantize (and dequantize) the signal. I have some doubts regarding how factors are interacting with each others.

*global gain and scalefactors:
How is the scaling done?
Is the scaling done by (global gain * scalefactor) or by (global gain - scalefactor)?

*scaling:
What is scaled, signal or quantizer step size?

Global gain, scale factors, signal, quantization

Quote
*global gain and scalefactors:
How is the scaling done?
Is the scaling done by (global gain * scalefactor) or by (global gain - scalefactor)?

It should be:

actual_local_sf = global_gain - stored_local_sf;

Where - actual local sf would be an actual scaling factor for the particual band, and stored_local_sf would be a value stored in the encoded bitstream.

Quote
*scaling:
What is scaled, signal or quantizer step size?

During encoding, MDCT floating-point signal is scaled according to the quantizer step size, and the scaled representation is quantized (converted to integer domain).

Global gain, scale factors, signal, quantization

I think that I am still missing a part:

let's call ix the mdct output signal (floating point), do we quantize:
actual_local_sf * ix  ? (of course actual_local_sf is varying between sf bands)

Global gain, scale factors, signal, quantization

Quote
I think that I am still missing a part:

let's call ix the mdct output signal (floating point), do we quantize:
actual_local_sf * ix  ? (of course actual_local_sf is varying between sf bands)

do for every frequency coef w:
QuantSignal[w] = NINT( pow( ix[w] / actual_local_sf, 0.75 ) - 0.0946 )

Where:

int QuantSignal[w]  --> integerized, quantized value of spectrum
float ix[w] --> input MDCT signal, floating point
actual_local_sf --> global_gain - scale_factor[sfb]

Global gain, scale factors, signal, quantization

Thank you very much for those clarifications Ivan.

Global gain, scale factors, signal, quantization

Quote
QuantSignal[w] = NINT( pow( ix[w] / actual_local_sf, 0.75 ) - 0.0946 )

Ah, yes - I forgot

So, it can be seen that if you increase scale_factor[sb],  the actual_local_sf value will be decreased (actual_local_sf = global_gain - scale_factor[sb]), and the quantized signal will be amplified - and therefore closer to the original MDCT signal.

That's why in the loop iteration process, the distorted bands get amplified and re-checked for distortion.

Global gain, scale factors, signal, quantization

Language is strange sometimes.
It seems to me that by increasing the scale_factor (so decreasing the global scale value) the signal is not really amplified but less devided.
Overall it is equivalent, but still strange.

(I was asking those clarifications because I was wondering about the sfb21 strangeness)