Hi all,
some of you may know me already, I am the main developer of LiVES (http://lives.sourceforge.net), contributor to frei0r (http://en.wikipedia.org/wiki/Frei0r), and videojack (http://videojack.sourceforge.net), amongst other things.

This year I will be working on a GSOC project for vlc. The aim of the project is to rewrite the vlc ogg demuxer. I am quite familiar with ogg/theora, but part of this work will also involve looking at the ogg/dirac format. I am hoping also that what I learn from this experience will help with porting dirac more fully into LiVES as well.

I had a brief look at the dirac in ogg pdf, and a few things are still not clear to me.


Section 6.1:

" It is advisable that, the first packet after the logical stream BOS page contains an additional Dirac Se-
quence Header data unit to facilitate random access.

What is a Dirac Sequence Header, and how does it facilitate random access ?

Section 6.2:

"It is advisable to flush the Ogg page after each encapsulation unit"

Does this mean that if an encapsulation unit (==packet ?) finishes on a page, the rest of the page data is irrelevant ?

Section 6.3:

" The granule position applies to the picture contained within the first packet that terminates in
an Ogg page;"

This seems to contradict section 6.2, above, and:

"In a logical stream of Dirac, an Ogg page should not terminate multiple Ogg packets."

" The granule position applies to the picture contained within the first packet that terminates in
an Ogg page"

so that would be the opposite of theora, where the granulepos denotes the *last* frame decoded in the packet ? Again, this seems to contradict the earlier sentence "an Ogg page should not terminate multiple ogg packets".

Now, looking at annex A, it would appear that the "sync point" varies from picture to picture. So the question here is, if a picture doesn't have a granulepos, how can one tell where the sync point for it is ?

Finally, it says:

"How to find the appropriate sync point for a particular picture: the dt of the sync point is: dt - dist; this may be
converted to the higher order bits of granule position: (dt - dist) กก 31; the lower order bits are undefined."

What does "the lower order bits are undefined mean", and what is this symbol กก ?

Thanks in advance,