18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<html>
38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<head>
48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<title>Ogg Vorbis Documentation</title>
78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<style type="text/css">
98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbody {
108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  margin: 0 18px 0 18px;
118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  padding-bottom: 30px;
128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-family: Verdana, Arial, Helvetica, sans-serif;
138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  color: #333333;
148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-size: .8em;
158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsa {
188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  color: #3366cc;
198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsimg {
228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  border: 0;
238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#xiphlogo {
268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  margin: 30px 0 16px 0;
278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#content p {
308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  line-height: 1.4;
318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsh1, h1 a, h2, h2 a, h3, h3 a {
348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-weight: bold;
358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  color: #ff9900;
368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  margin: 1.3em 0 8px 0;
378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsh1 {
408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-size: 1.3em;
418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsh2 {
448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-size: 1.2em;
458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsh3 {
488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-size: 1.1em;
498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsli {
528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  line-height: 1.4;
538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#copyright {
568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  margin-top: 30px;
578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  line-height: 1.5em;
588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  text-align: center;
598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  font-size: .8em;
608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  color: #888888;
618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  clear: both;
628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</style>
648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</head>
668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<body>
688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<div id="xiphlogo">
708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</div>
728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h1>Ogg Vorbis encoding format documentation</h1>
748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p><img src="wait.png" alt="wait"/>As of writing, not all the below document
768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslinks are live. They will be populated as we complete the documents.</p>
778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Documents</h2>
798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="packet.html">Vorbis packet structure</a></li>
828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="envelope.html">Temporal envelope shaping and blocksize</a></li>
838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="mdct.html">Time domain segmentation and MDCT transform</a></li>
848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="resolution.html">The resolution floor</a></li>
858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="residuals.html">MDCT-domain fine structure</a></li>
868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="probmodel.html">The Vorbis probability model</a></li>
908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="bitpack.html">The Vorbis bitpacker</a></li>
918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="oggstream.html">Ogg bitstream overview</a></li>
958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="framing.html">Ogg logical bitstream and framing spec</a></li>
968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="vorbis-stream.html">Vorbis packet->Ogg bitstream mapping</a></li>
978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="programming.html">Programming with libvorbis</a></li>
1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Description</h2>
1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>Ogg Vorbis is a general purpose compressed audio format
1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor high quality (44.1-48.0kHz, 16+ bit, polyphonic) audio and music
1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsat moderate fixed and variable bitrates (40-80 kb/s/channel). This
1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsplaces Vorbis in the same class as audio representations including
1098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsMPEG-1 audio layer 3, MPEG-4 audio (AAC and TwinVQ), and PAC.</p>
1108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>Vorbis is the first of a planned family of Ogg multimedia coding
1128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsformats being developed as part of the Xiph.org Foundation's Ogg multimedia
1138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsproject. See <a href="http://www.xiph.org/">http://www.xiph.org/</a>
1148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor more information.</p>
1158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h2>Vorbis technical documents</h2>
1178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>A Vorbis encoder takes in overlapping (but contiguous) short-time
1198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssegments of audio data. The encoder analyzes the content of the audio
1208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsto determine an optimal compact representation; this phase of encoding
1218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsis known as <em>analysis</em>. For each short-time block of sound,
1228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthe encoder then packs an efficient representation of the signal, as
1238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdetermined by analysis, into a raw packet much smaller than the size
1248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrequired by the original signal; this phase is <em>coding</em>.
1258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsLastly, in a streaming environment, the raw packets are then
1268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstructured into a continuous stream of octets; this last phase is
1278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<em>streaming</em>. Note that the stream of octets is referred to both
1288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsas a 'byte-' and 'bit-'stream; the latter usage is acceptible as the
1298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstream of octets is a physical representation of a true logical
1308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbit-by-bit stream.</p>
1318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>A Vorbis decoder performs a mirror image process of extracting the
1338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsoriginal sequence of raw packets from an Ogg stream (<em>stream
1348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdecomposition</em>), reconstructing the signal representation from the
1358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsraw data in the packet (<em>decoding</em>) and them reconstituting an
1368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsaudio signal from the decoded representation (<em>synthesis</em>).</p>
1378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>The <a href="programming.html">Programming with libvorbis</a>
1398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdocuments discuss use of the reference Vorbis codec library
1408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(libvorbis) produced by the Xiph.org Foundation.</p>
1418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>The data representations and algorithms necessary at each step to
1438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsencode and decode Ogg Vorbis bitstreams are described by the below
1448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdocuments in sufficient detail to construct a complete Vorbis codec.
1458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsNote that at the time of writing, Vorbis is still in a 'Request For
1468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsComments' stage of development; despite being in advanced stages of
1478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdevelopment, input from the multimedia community is welcome.</p>
1488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h3>Vorbis analysis and synthesis</h3>
1508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>Analysis begins by seperating an input audio stream into individual,
1528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsoverlapping short-time segments of audio data. These segments are
1538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthen transformed into an alternate representation, seeking to
1548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepresent the original signal in a more efficient form that codes into
1558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsa smaller number of bytes. The analysis and transformation stage is
1568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthe most complex element of producing a Vorbis bitstream.</p>
1578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>The corresponding synthesis step in the decoder is simpler; there is
1598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsno analysis to perform, merely a mechanical, deterministic
1608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsreconstruction of the original audio data from the transform-domain
1618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepresentation.</p>
1628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
1648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="packet.html">Vorbis packet structure</a>:
1658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsDescribes the basic analysis components necessary to produce Vorbis
1668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspackets and the structure of the packet itself.</li>
1678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="envelope.html">Temporal envelope shaping and blocksize</a>:
1688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsUse of temporal envelope shaping and variable blocksize to minimize
1698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstime-domain energy leakage during wide dynamic range and spectral energy
1708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsswings. Also discusses time-related principles of psychoacoustics.</li>
1718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="mdct.html">Time domain segmentation and MDCT transform</a>:
1728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsDivision of time domain data into individual overlapped, windowed
1738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsshort-time vectors and transformation using the MDCT</li>
1748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="resolution.html">The resolution floor</a>: Use of frequency
1758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdoamin psychoacoustics, and the MDCT-domain noise, masking and resolution
1768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfloors</li>
1778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="residuals.html">MDCT-domain fine structure</a>: Production,
1788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsquantization and massaging of MDCT-spectrum fine structure</li>
1798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
1808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h3>Vorbis coding and decoding</h3>
1828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>Coding and decoding converts the transform-domain representation of
1848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthe original audio produced by analysis to and from a bitwise packed
1858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsraw data packet. Coding and decoding consist of two logically
1868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsorthogonal concepts, <em>back-end coding</em> and <em>bitpacking</em>.</p>
1878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p><em>Back-end coding</em> uses a probability model to represent the raw numbers
1898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsof the audio representation in as few physical bits as possible;
1908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfamiliar examples of back-end coding include Huffman coding and Vector
1918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsQuantization.</p>
1928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p><em>Bitpacking</em> arranges the variable sized words of the back-end
1948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscoding into a vector of octets without wasting space. The octets
1958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsproduced by coding a single short-time audio segment is one raw Vorbis
1968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspacket.</p>
1978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
1998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="probmodel.html">The Vorbis probability model</a></li>
2008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="bitpack.html">The Vorbis bitpacker</a>: Arrangement of 
2018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvariable bit-length words into an octet-aligned packet.</li>
2028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
2038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<h3>Vorbis streaming and stream decomposition</h3>
2058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<p>Vorbis packets contain the raw, bitwise-compressed representation of a
2078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssnippet of audio. These packets contain no structure and cannot be
2088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstrung together directly into a stream; for streamed transmission and
2098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstorage, Vorbis packets are encoded into an Ogg bitstream.</p>
2108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<ul>
2128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="oggstream.html">Ogg bitstream overview</a>: High-level
2138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdescription of Ogg logical bitstreams, how logical bitstreams
2148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(of mixed media types) can be combined into physical bitstreams, and
2158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrestrictions on logical-to-physical mapping. Note that this document is
2168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsnot specific only to Ogg Vorbis.</li>
2178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="framing.html">Ogg logical bitstream and framing
2188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsspec</a>: Low level, complete specification of Ogg logical
2198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbitstream pages. Note that this document is not specific only to Ogg
2208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsVorbis.</li>
2218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<li><a href="vorbis-stream.html">Vorbis bitstream mapping</a>:
2228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsSpecifically describes mapping Vorbis data into an
2238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsOgg physical bitstream.</li>
2248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</ul>
2258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels<div id="copyright">
2278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  The Xiph Fish Logo is a
2288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  trademark (&trade;) of Xiph.Org.<br/>
2298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
2318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</div>
2328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</body>
2348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</html>
235