Mercurial > hg > sv-dependency-builds
comparison src/libvorbis-1.3.3/doc/oggstream.html @ 1:05aa0afa9217
Bring in flac, ogg, vorbis
author | Chris Cannam |
---|---|
date | Tue, 19 Mar 2013 17:37:49 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:c7265573341e | 1:05aa0afa9217 |
---|---|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |
2 <html> | |
3 <head> | |
4 | |
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/> | |
6 <title>Ogg Vorbis Documentation</title> | |
7 | |
8 <style type="text/css"> | |
9 body { | |
10 margin: 0 18px 0 18px; | |
11 padding-bottom: 30px; | |
12 font-family: Verdana, Arial, Helvetica, sans-serif; | |
13 color: #333333; | |
14 font-size: .8em; | |
15 } | |
16 | |
17 a { | |
18 color: #3366cc; | |
19 } | |
20 | |
21 img { | |
22 border: 0; | |
23 } | |
24 | |
25 #xiphlogo { | |
26 margin: 30px 0 16px 0; | |
27 } | |
28 | |
29 #content p { | |
30 line-height: 1.4; | |
31 } | |
32 | |
33 h1, h1 a, h2, h2 a, h3, h3 a { | |
34 font-weight: bold; | |
35 color: #ff9900; | |
36 margin: 1.3em 0 8px 0; | |
37 } | |
38 | |
39 h1 { | |
40 font-size: 1.3em; | |
41 } | |
42 | |
43 h2 { | |
44 font-size: 1.2em; | |
45 } | |
46 | |
47 h3 { | |
48 font-size: 1.1em; | |
49 } | |
50 | |
51 li { | |
52 line-height: 1.4; | |
53 } | |
54 | |
55 #copyright { | |
56 margin-top: 30px; | |
57 line-height: 1.5em; | |
58 text-align: center; | |
59 font-size: .8em; | |
60 color: #888888; | |
61 clear: both; | |
62 } | |
63 </style> | |
64 | |
65 </head> | |
66 | |
67 <body> | |
68 | |
69 <div id="xiphlogo"> | |
70 <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.Org"/></a> | |
71 </div> | |
72 | |
73 <h1>Ogg logical and physical bitstream overview</h1> | |
74 | |
75 <h2>Ogg bitstreams</h2> | |
76 | |
77 <p>Ogg codecs use octet vectors of raw, compressed data | |
78 (<em>packets</em>). These compressed packets do not have any | |
79 high-level structure or boundary information; strung together, they | |
80 appear to be streams of random bytes with no landmarks.</p> | |
81 | |
82 <p>Raw packets may be used directly by transport mechanisms that provide | |
83 their own framing and packet-separation mechanisms (such as UDP | |
84 datagrams). For stream based storage (such as files) and transport | |
85 (such as TCP streams or pipes), Vorbis and other future Ogg codecs use | |
86 the Ogg bitstream format to provide framing/sync, sync recapture | |
87 after error, landmarks during seeking, and enough information to | |
88 properly separate data back into packets at the original packet | |
89 boundaries without relying on decoding to find packet boundaries.</p> | |
90 | |
91 <h2>Logical and physical bitstreams</h2> | |
92 | |
93 <p>Raw packets are grouped and encoded into contiguous pages of | |
94 structured bitstream data called <em>logical bitstreams</em>. A | |
95 logical bitstream consists of pages, in order, belonging to a single | |
96 codec instance. Each page is a self contained entity (although it is | |
97 possible that a packet may be split and encoded across one or more | |
98 pages); that is, the page decode mechanism is designed to recognize, | |
99 verify and handle single pages at a time from the overall bitstream.</p> | |
100 | |
101 <p>Multiple logical bitstreams can be combined (with restrictions) into a | |
102 single <em>physical bitstream</em>. A physical bitstream consists of | |
103 multiple logical bitstreams multiplexed at the page level and may | |
104 include a 'meta-header' at the beginning of the multiplexed logical | |
105 stream that serves as identification magic. Whole pages are taken in | |
106 order from multiple logical bitstreams and combined into a single | |
107 physical stream of pages. The decoder reconstructs the original | |
108 logical bitstreams from the physical bitstream by taking the pages in | |
109 order from the physical bitstream and redirecting them into the | |
110 appropriate logical decoding entity. The simplest physical bitstream | |
111 is a single, unmultiplexed logical bitstream with no meta-header; this | |
112 is referred to as a 'degenerate stream'.</p> | |
113 | |
114 <p><a href="framing.html">Ogg Logical Bitstream Framing</a> discusses | |
115 the page format of an Ogg bitstream, the packet coding process | |
116 and logical bitstreams in detail. The remainder of this document | |
117 specifies requirements for constructing finished, physical Ogg | |
118 bitstreams.</p> | |
119 | |
120 <h2>Mapping Restrictions</h2> | |
121 | |
122 <p>Logical bitstreams may not be mapped/multiplexed into physical | |
123 bitstreams without restriction. Here we discuss design restrictions | |
124 on Ogg physical bitstreams in general, mostly to introduce | |
125 design rationale. Each 'media' format defines its own (generally more | |
126 restrictive) mapping. An 'Ogg Vorbis Audio Bitstream', for example, has a | |
127 specific physical bitstream structure. | |
128 An 'Ogg A/V' bitstream (not currently specified) will also mandate a | |
129 specific, restricted physical bitstream format.</p> | |
130 | |
131 <h3>additional end-to-end structure</h3> | |
132 | |
133 <p>The <a href="framing.html">framing specification</a> defines | |
134 'beginning of stream' and 'end of stream' page markers via a header | |
135 flag (it is possible for a stream to consist of a single page). A | |
136 stream always consists of an integer number of pages, an easy | |
137 requirement given the variable size nature of pages.</p> | |
138 | |
139 <p>In addition to the header flag marking the first and last pages of a | |
140 logical bitstream, the first page of an Ogg bitstream obeys | |
141 additional restrictions. Each individual media mapping specifies its | |
142 own implementation details regarding these restrictions.</p> | |
143 | |
144 <p>The first page of a logical Ogg bitstream consists of a single, | |
145 small 'initial header' packet that includes sufficient information to | |
146 identify the exact CODEC type and media requirements of the logical | |
147 bitstream. The intent of this restriction is to simplify identifying | |
148 the bitstream type and content; for a given media type (or across all | |
149 Ogg media types) we can know that we only need a small, fixed | |
150 amount of data to uniquely identify the bitstream type.</p> | |
151 | |
152 <p>As an example, Ogg Vorbis places the name and revision of the Vorbis | |
153 CODEC, the audio rate and the audio quality into this initial header, | |
154 thus simplifying vastly the certain identification of an Ogg Vorbis | |
155 audio bitstream.</p> | |
156 | |
157 <h3>sequential multiplexing (chaining)</h3> | |
158 | |
159 <p>The simplest form of logical bitstream multiplexing is concatenation | |
160 (<em>chaining</em>). Complete logical bitstreams are strung | |
161 one-after-another in order. The bitstreams do not overlap; the final | |
162 page of a given logical bitstream is immediately followed by the | |
163 initial page of the next. Chaining is the only logical->physical | |
164 mapping allowed by Ogg Vorbis.</p> | |
165 | |
166 <p>Each chained logical bitstream must have a unique serial number within | |
167 the scope of the physical bitstream.</p> | |
168 | |
169 <h3>concurrent multiplexing (grouping)</h3> | |
170 | |
171 <p>Logical bitstreams may also be multiplexed 'in parallel' | |
172 (<em>grouped</em>). An example of grouping would be to allow | |
173 streaming of separate audio and video streams, using different codecs | |
174 and different logical bitstreams, in the same physical bitstream. | |
175 Whole pages from multiple logical bitstreams are mixed together.</p> | |
176 | |
177 <p>The initial pages of each logical bitstream must appear first; the | |
178 media mapping specifies the order of the initial pages. For example, | |
179 Ogg A/V will eventually specify an Ogg video bitstream with | |
180 audio. The mapping may specify that the physical bitstream must begin | |
181 with the initial page of a logical video bitstream, followed by the | |
182 initial page of an audio stream. Unlike initial pages, terminal pages | |
183 for the logical bitstreams need not all occur contiguously (although a | |
184 specific media mapping may require this; it is not mandated by the | |
185 generic Ogg stream spec). Terminal pages may be 'nil' pages, | |
186 that is, pages containing no content but simply a page header with | |
187 position information and the 'last page of bitstream' flag set in the | |
188 page header.</p> | |
189 | |
190 <p>Each grouped bitstream must have a unique serial number within the | |
191 scope of the physical bitstream.</p> | |
192 | |
193 <h3>sequential and concurrent multiplexing</h3> | |
194 | |
195 <p>Groups of concurrently multiplexed bitstreams may be chained | |
196 consecutively. Such a physical bitstream obeys all the rules of both | |
197 grouped and chained multiplexed streams; the groups, when unchained , | |
198 must stand on their own as a valid concurrently multiplexed | |
199 bitstream.</p> | |
200 | |
201 <h3>multiplexing example</h3> | |
202 | |
203 <p>Below, we present an example of a grouped and chained bitstream:</p> | |
204 | |
205 <p><img src="stream.png" alt="stream"/></p> | |
206 | |
207 <p>In this example, we see pages from five total logical bitstreams | |
208 multiplexed into a physical bitstream. Note the following | |
209 characteristics:</p> | |
210 | |
211 <ol> | |
212 <li>Grouped bitstreams begin together; all of the initial pages | |
213 must appear before any data pages. When concurrently multiplexed | |
214 groups are chained, the new group does not begin until all the | |
215 bitstreams in the previous group have terminated.</li> | |
216 | |
217 <li>The pages of concurrently multiplexed bitstreams need not conform | |
218 to a regular order; the only requirement is that page <tt>n</tt> of a | |
219 logical bitstream follow page <tt>n-1</tt> in the physical bitstream. | |
220 There are no restrictions on intervening pages belonging to other | |
221 logical bitstreams. (Tying page appearance to bitrate demands is one | |
222 logical strategy, ie, the page appears at the chronological point | |
223 where decode requires more information).</li> | |
224 </ol> | |
225 | |
226 <div id="copyright"> | |
227 The Xiph Fish Logo is a | |
228 trademark (™) of Xiph.Org.<br/> | |
229 | |
230 These pages © 1994 - 2005 Xiph.Org. All rights reserved. | |
231 </div> | |
232 | |
233 </body> | |
234 </html> |