[Vorbis-dev] Bit allocation dependetnt on masking threshold and floor1 inverse dB lookup table
semenh at gmail.com
Sun May 31 09:58:37 PDT 2009
We are two students doing project with Vorbis audio compression for our B.Sc
We have two questions:
Our first question related to the floor1 inverse dB lookup table.
As we understood the floor values encoded as offset integers (Y) from 1 to
256 and then used as index in the floor1_inverse_dB_table to get an
encoded value. This value (denoted as X) is inverse of linear frequency so
20*log10(1/X) is dB value. In the basic case if Y is 256 then X =
floor1_inverse_dB_table(256) = 1 and the dB value is 0. The encoded value X
then multipled by residue and then we get the PCM value.
Our question is why these X values are inversed? Let's say that we have
frequncy samples near 50 dB and want to set the floor at 50 dB so the
residue values will take less bit to encode. For 50 dB, the linear frequency
value is 316.22 and inversed value is 0.0032487691. So to get the residue
value we need to divide the real frequency value by inversed floor value,
what gives much bigger number. For example 53dB is 446.68 in linear scale
divided by 0.0032487691 gives much bigger value. Why is it done in that way
and how it helps to reduce bits when used with masking thresholds?
The second question is related to the bit allocation of frequency bins
dependent on masking thresholds.
Do you have some good reference on how to allocate minimum number of bits
for some frequency value dependent on masking threshold in that area? For
example if we have partition where masking threshold is 50dB = 316 and some
tone with 55dB = 562. How can we decide on how many bits can we use for
mantissa of that value (562) without reducing the sound quality?
We will appreciate your quick response
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vorbis-dev