[ogg-dev] page syncing and magic OggS
giles at xiph.org
Thu Dec 7 10:59:29 PST 2006
On Thu, Dec 07, 2006 at 03:18:02PM +0000, Ian Malone wrote:
> Pages have to start with 'OggS', but this could also turn
> up elsewhere in the bitstream, so is there a simple strategy
> using the libogg API to find out which ones are the start of
Yes, 'OggS' can occur randomly. So to be more sure, you can parse the
subsequent bytes as a header. Calculate the offset to the start of the
next ogg page and see if the 'OggS' sequence occurs there as well. You
can also verify the CRC for the page as an additional check.
ogg_sync_pageseek() does the CRC check, and scans for the next 'OggS' if
it does not succeed, so by calling it repeatedly you can scan through
the stream finding pages.
Note that ogg_sync_pageout does this automatically. You can check the
return code to identify any holes or corrupt pages in the data stream.
More information about the ogg-dev