Simon Hanukaev
2009-May-31 16:58 UTC
[Vorbis-dev] Bit allocation dependetnt on masking threshold and floor1 inverse dB lookup table
Hi, We are two students doing project with Vorbis audio compression for our B.Sc studies. 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 Thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/vorbis-dev/attachments/20090531/61476de3/attachment.htm