[vorbis] some more Spec questions

Carsten Haese carsten at uniqsys.com
Tue Apr 29 06:52:26 PDT 2003



On Tue, 2003-04-29 at 09:15, Sebastian Gesemann wrote:
> Hi, Segher !
> 
> On Tue, 29 Apr 2003, Segher Boessenkool wrote:
> 
> [...]
> > Hrm, it seems they can't be, yes.  What does libvorbis do here?
> [...]
> > Either that, or the cosine of that, modulo some scaling.
> > Again, see what libvorbis does here.
> [...]
> > You can always see what libvorbis does -- its decoder is better
> > tested than the one in the specification ;)
> 
> So the libVorbis code is the REAL specification here, huh ?

No, the specification is the real specification, but it was written down
after the reference implementation (which was made from specs in Monty's
head). The reference implementation is therefore much better tested and
more likely to be correct. Please keep in mind that the specification is
the work of a human being, and therefore it may contain errors. It takes
people like you to help debug the specification, and I'm sure your
efforts are appreciated.

> Hmmm.... If've the impression, that i'm not taken seriously.
> It was my intention to build a vorbis decoder by NOT looking at
> the libVorbis code in order to
> - be able to tell wether it's possible to build it by only using
>   the specification or not
> - help improving the specification (which I think is an important
>   task)
> - be able to say that i've build it WITHOUT looking at the
>   libVorbis source, which should be a real proof for the
>   first item.
> 
> Actually, I expected the people who are responsible for the spec
> to answer my questions without any "look at libVorbis", because
> I thought, that the correctness of the spec isn't important to
> just me rather to all the people.
> It should not have been much work to answer my questions for those
> who are involved with vorbis.

I can only guess that Segher's intention was to help you help yourself,
but requiring you to look at the reference implementation to clarify the
specs is indeed not helpful if you want to verify the specs
independently. You could, of course, look at the source code to clarify
the specs, correct the specs, and then forget or disregard the source
code and still come up with an independent implementation as long as you
don't copy chunks from the reference implementation, but I understand
your desire for "purity".

So, in order to keep you from looking at the source code, I have looked
at the source code myself, and here is what I have found. According to
the reference implementation, step 7 of floor 0 header decode should
read as follows:
|  7) if any of [floor0_order], [floor0_rate],
|     [floor0_bark_map_size], or [floor0_number_of_books] are
|     less than one, the stream is not decodable

Note that [floor0_amplitude_bits] and [floor0_amplitude_offset] are not
checked, and the check on [floor0_number_of_books] is still always
false. This may or may not be a bug in the code, but only Monty would be
able to answer that.

Regarding your question about omega in the floor 0 curve computation,
your guess is consistent with the reference implementation.

Hope this helps,

Carsten Haese
Ogg Traffic Editor, Xiph.org Foundation

<p>--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Vorbis mailing list