Ogg: Difference between revisions
Jump to navigation
Jump to search
Martin.leese (talk | contribs) m (→Projects using Ogg: Typos) |
|||
Line 11: | Line 11: | ||
* Simple mechanism to ease limited editing, such as a simplified concatenation mechanism. | * Simple mechanism to ease limited editing, such as a simplified concatenation mechanism. | ||
* Detection of corruption, recapture after error and direct, random access to data at arbitrary positions in the bitstream. | * Detection of corruption, recapture after error and direct, random access to data at arbitrary positions in the bitstream. | ||
== Codecs using Ogg == | |||
* [[OggCELT|CELT]] | |||
* [[CMML]] | |||
* [[FLAC]] ([http://flac.sourceforge.net/ogg_mapping.html Ogg mapping]) | |||
* [[OggKate|Kate]] | |||
* [[OggPCM|PCM]] | |||
* [[Ogg Skeleton|Skeleton]] | |||
* [[Speex]] ([[OggSpeex|Ogg mapping]]) | |||
* [[Theora]] ([[OggTheora|Ogg mapping]]) | |||
* [[Vorbis]] ([[OggVorbis|Ogg mapping]]) | |||
* [[OggWrit|Writ]] | |||
== Projects using Ogg == | == Projects using Ogg == | ||
* [[Icecast]] | * [[Icecast]] | ||
* [http://www.annodex.net/ Annodex] | |||
* [http://www.annodex.net/ | |||
== Ogg page format == | == Ogg page format == |
Revision as of 17:26, 13 February 2008
The Ogg transport bitstream is designed to provide framing, error protection and seeking structure for higher-level codec streams that consist of raw, unencapsulated data packets, such as the Vorbis audio codec or Theora video codec.
Name
Ogg derives from "ogging", jargon from the computer game Netrek. Ogg is not an acronym and should not be mentioned as "OGG".
Design constraints for Ogg bitstreams
- True streaming; we must not need to seek to build a 100% complete bitstream.
- Use no more than approximately 1-2% of bitstream bandwidth for packet boundary marking, high-level framing, sync and seeking.
- Specification of absolute position within the original sample stream.
- Simple mechanism to ease limited editing, such as a simplified concatenation mechanism.
- Detection of corruption, recapture after error and direct, random access to data at arbitrary positions in the bitstream.
Codecs using Ogg
- CELT
- CMML
- FLAC (Ogg mapping)
- Kate
- PCM
- Skeleton
- Speex (Ogg mapping)
- Theora (Ogg mapping)
- Vorbis (Ogg mapping)
- Writ
Projects using Ogg
Ogg page format
The LSb (least significant bit) comes first in the Bytes. Fields with more than one byte length are encoded LSB (least significant byte) first.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | capture_pattern: Magic number for page start "OggS" | 0-3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | version | header_type | granule_position | 4-7 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | 8-11 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | bitstream_serial_number | 12-15 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | page_sequence_number | 16-19 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | CRC_checksum | 20-23 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |page_segments | segment_table | 24-27 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | 28- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Development Libraries
The Ogg encapsulation format can be handled with the following libraries:
- libogg: libogg svn (C, cross-platform) Low-level Ogg parsing and writing.
- liboggz: liboggz svn or liboggz (C, cross-platform) liboggz wraps libogg and provides features such as seeking.
- the Ogg Directshow filters: see illiminable (C++, Win32)
- HOgg (pure Haskell)
- JOrbis (pure Java) contains com.jcraft.jogg
- Mutagen (pure Python)