[Vorbis] Floor1 doubts...

Eldhelrim eldhelrim at gmail.com
Wed Nov 11 13:52:30 PST 2009


2009/11/11 <xiphmont at xiph.org>


> This mostly restates the same idea several different ways that are
> equivalent and I'm not sure where you're confused.  So let's step back
> a second...
>
> The floor encodes a continuous function and the values of that
> function are meant to be used as multipliers/ratios.  Linear floor
> multiplied by residue gives you a spectrum.
>
> The floor is encoded on a logarithmic scale (not actually decibels in
> fact, but decibels are easy to understand, so the spec discusses this
> in terms of decoding the encoded floor to decibels, then doing a
> decibel->linear conversion).  Unitless decibels are just ratios.  1 ==
> 0db, 2 == 6dB, 4 = 12dB. The coversion is a simple 20log10(linear).
>
> Is that helpful?
>
> Monty
>

Yes, that helped, but I'm afraid my doubt is still rounding my head... I'll
try to explain it better...

The top linear value (the values in FLOOR1_fromdB_LOOKUP table) is 1, so,
the top value for the floor, in dB, is 0 (20log10(0) = 1), but, in your AES
paper I mencioned in my previous post, it's said that the floor is the
superposition of the tonal and noise masks, so, the top _mask_ value is
0dB... So I think that what I really don't understand is how can be that the
greatest value this _mask_ can get is 0dB... This is why I asked about the
reference value used (the p0 from 20log(p1/p0) that I was mentioning in the
other post).

Maybe if I explain what is my best current "bet" about how this works
(despite yo might think I'm gone crazy... ;)) could help you tell me where I
am wrong, or if I've understood something right at all...:

1) Given a frequency line (mdct bin) of the audio signal, take its value as
p0.
2) Use this p0 as the reference value to obtain the floor that frequency.
That would make the top value of the floor, be 0dB [or the greater linear
value to be 1, which is the main reason why I've thought this], unless the
mask is greater than the signal...
3) Convert the floor dB value to linear and use it to divide the
corresponding mdct coefficient to get the corresponding residue.

I apologize because I'm sure that the best way of understanding this may be
reading the code functions used to obtain the floor (_vp_noisemask,
_vp_tonemask and the functions within), but I've tried it and it is a bit
hard for me (they are no much comments and I'm not an audio expert, so it
takes me much time to figure out what some parts of the code do...).

Thank you very much for trying to help me.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/vorbis/attachments/20091111/ed373c05/attachment.htm 


More information about the Vorbis mailing list