no edit summary
'''Ogg Skeleton''' provides structuring information for multitrack [[Ogg]] files. It is compatible with Ogg [[Theora]] and provides extra clues for synchronization and content negotiation such as language selection. Skeleton version 4.0 also provides keyframe indexes to enable optimal seeking over high-latency connections, such as the internet.
Ogg is a generic container format, enabling interleaving of several tracks of frame-wise encoded content in a time-multiplexed manner. As an example, an Ogg physical bitstream could encapsulate several tracks of video encoded in Theora and multiple tracks of audio encoded in Speex or Vorbis or FLAC at the same time. A player that decodes such a bitstream could then, for example, play one video channel as the main video playback, alpha-blend another one on top of it (e.g. a caption track), play a main Vorbis audio together with several FLAC audio tracks simultaneously (e.g. as sound effects), and provide a choice of Speex channels (e.g. providing commentary in different languages). Such a file is generally possible to create with Ogg, it is however not possible to generically parse such a file, seek on it, understand what codecs are contained in such a file, and dynamically handle and play back such content.
=== Previous version ===
The previous version of Ogg Skeleton was version 3, and its specification can be found on the wiki page [[Ogg Skeleton]], or at [http://svn.annodex.net/standards/draft-pfeiffer-oggskeleton-current.txt http://svn.annodex.net/standards/draft-pfeiffer-oggskeleton-current.txt].
=== How to describe the logical bitstreams within an Ogg container? ===
The Skeleton logical bitstream starts with an ident header that contains information about all of the logical bitstreams and is mapped into the Skeleton bos page.
The first 8 bytes provide the magic identifier "fishead\0".
After the fishead follows a set of secondary header packets, each of which contains information about one logical bitstream. These secondary header packets are identified by an 8 byte code of "fisbone\0". The Skeleton logical bitstream has no actual content packets. Its
eos page is included into the stream before any data pages of the other logical bitstreams appear and contains a packet of length 0.
The fishead ident header looks as follows ([http://annodex.org/w/images/3/39/FishHeads.JPG inspiration]):
* the bos pages of all the other logical bistreams come next (a requirement of Ogg)
* the secondary header pages of all logical bitstreams come next, including Skeleton's secondary header packets (the fisbone and index packets)
* the Skeleton
eos page end the control section of the Ogg stream before any content pages of any of the other logical bitstreams appear.
== Development ==
* Mozilla Firefox 4
The following projects currently support Ogg Skeleton 3
.1, support for Ogg Skeleton 4 is planned:
* speexenc (with --skeleton) & speexdec
* the Ogg Directshow filters: see [http://www.illiminable.com/ogg/ illiminable]