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 (™) of Xiph.Org.<br/> 2298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels These pages © 1994 - 2005 Xiph.Org. All rights reserved. 2318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</div> 2328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels 2338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</body> 2348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels</html> 235