cleanup doc index; make format similar to website
[platform/upstream/libvorbis.git] / doc / draft-ietf-avt-vorbis-rtp-00.txt
1
2
3 AVT Working Group                                                P. Kerr
4 Internet-Draft                                                  Xiph.Org
5 Expires: August 1, 2005                                 January 31, 2005
6
7
8                       draft-ietf-avt-vorbis-rtp-00
9               RTP Payload Format for Vorbis Encoded Audio
10
11 Status of this Memo
12
13    This document is an Internet-Draft and is subject to all provisions
14    of section 3 of RFC 3667.  By submitting this Internet-Draft, each
15    author represents that any applicable patent or other IPR claims of
16    which he or she is aware have been or will be disclosed, and any of
17    which he or she become aware will be disclosed, in accordance with
18    RFC 3668.
19
20    Internet-Drafts are working documents of the Internet Engineering
21    Task Force (IETF), its areas, and its working groups.  Note that
22    other groups may also distribute working documents as
23    Internet-Drafts.
24
25    Internet-Drafts are draft documents valid for a maximum of six months
26    and may be updated, replaced, or obsoleted by other documents at any
27    time.  It is inappropriate to use Internet-Drafts as reference
28    material or to cite them other than as "work in progress."
29
30    The list of current Internet-Drafts can be accessed at
31    http://www.ietf.org/ietf/1id-abstracts.txt.
32
33    The list of Internet-Draft Shadow Directories can be accessed at
34    http://www.ietf.org/shadow.html.
35
36    This Internet-Draft will expire on August 1, 2005.
37
38 Copyright Notice
39
40    Copyright (C) The Internet Society (2005).
41
42 Abstract
43
44    This document describes an RTP payload format for transporting Vorbis
45    encoded audio.  It details the RTP encapsulation mechanism for raw
46    Vorbis data and details the delivery mechanisms for the decoder
47    probability model, referred to as a codebook, metadata and other
48    setup information.
49
50    Also included within the document are the necessary details for the
51    use of Vorbis with MIME and Session Description Protocol (SDP).
52
53
54
55 Kerr                     Expires August 1, 2005                 [Page 1]
56 \f
57 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
58
59
60 Editors Note
61
62    All references to RFC XXXX are to be replaced by references to the
63    RFC number of this memo, when published.
64
65 Table of Contents
66
67    1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
68      1.1   Terminology  . . . . . . . . . . . . . . . . . . . . . . .  3
69    2.  Payload Format . . . . . . . . . . . . . . . . . . . . . . . .  3
70      2.1   RTP Header . . . . . . . . . . . . . . . . . . . . . . . .  3
71      2.2   Payload Header . . . . . . . . . . . . . . . . . . . . . .  5
72      2.3   Payload Data . . . . . . . . . . . . . . . . . . . . . . .  6
73      2.4   Example RTP Packet . . . . . . . . . . . . . . . . . . . .  7
74    3.  Frame Packetizing  . . . . . . . . . . . . . . . . . . . . . .  8
75      3.1   Example Fragmented Vorbis Packet . . . . . . . . . . . . .  8
76      3.2   Packet Loss  . . . . . . . . . . . . . . . . . . . . . . . 11
77    4.  Configuration Headers  . . . . . . . . . . . . . . . . . . . . 12
78      4.1   In-band Header Transmission  . . . . . . . . . . . . . . . 12
79        4.1.1   Setup Header . . . . . . . . . . . . . . . . . . . . . 13
80        4.1.2   Codebook Header  . . . . . . . . . . . . . . . . . . . 13
81        4.1.3   Metadata Header  . . . . . . . . . . . . . . . . . . . 15
82      4.2   Packed Headers Delivery  . . . . . . . . . . . . . . . . . 16
83        4.2.1   Packed Headers IANA Considerations . . . . . . . . . . 19
84      4.3   Codebook Caching . . . . . . . . . . . . . . . . . . . . . 20
85      4.4   Loss of Configuration Headers  . . . . . . . . . . . . . . 20
86    5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 20
87      5.1   Mapping MIME Parameters into SDP . . . . . . . . . . . . . 21
88    6.  Congestion Control . . . . . . . . . . . . . . . . . . . . . . 22
89    7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 23
90    8.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 23
91    9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 23
92    9.1   Normative References . . . . . . . . . . . . . . . . . . . . 23
93    9.2   Informative References . . . . . . . . . . . . . . . . . . . 24
94        Author's Address . . . . . . . . . . . . . . . . . . . . . . . 24
95        Intellectual Property and Copyright Statements . . . . . . . . 25
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 Kerr                     Expires August 1, 2005                 [Page 2]
112 \f
113 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
114
115
116 1.  Introduction
117
118    Vorbis is a general purpose perceptual audio codec intended to allow
119    maximum encoder flexibility, thus allowing it to scale competitively
120    over an exceptionally wide range of bitrates.  At the high
121    quality/bitrate end of the scale (CD or DAT rate stereo, 16/24 bits),
122    it is in the same league as MPEG-2 and MPC.  Similarly, the 1.0
123    encoder can encode high-quality CD and DAT rate stereo at below 48k
124    bits/sec without resampling to a lower rate.  Vorbis is also intended
125    for lower and higher sample rates (from 8kHz telephony to 192kHz
126    digital masters) and a range of channel representations (monaural,
127    polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255
128    discrete channels).
129
130    Vorbis encoded audio is generally encapsulated within an Ogg format
131    bitstream [1], which provides framing and synchronization.  For the
132    purposes of RTP transport, this layer is unnecessary, and so raw
133    Vorbis packets are used in the payload.
134
135 1.1  Terminology
136
137    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
138    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
139    document are to be interpreted as described in RFC 2119 [2].
140
141 2.  Payload Format
142
143    For RTP based transportation of Vorbis encoded audio the standard RTP
144    header is followed by a 5 octet payload header, then the payload
145    data.  The payload headers are used to associate the Vorbis data with
146    its associated decoding codebooks as well as indicating if the
147    following packet contains fragmented Vorbis data and/or the the
148    number of whole Vorbis data frames.  The payload data contains the
149    raw Vorbis bitstream information.
150
151 2.1  RTP Header
152
153    The format of the RTP header is specified in [3] and shown in Figure
154    1.  This payload format uses the fields of the header in a manner
155    consistent with that specification.
156
157
158
159
160
161
162
163
164
165
166
167 Kerr                     Expires August 1, 2005                 [Page 3]
168 \f
169 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
170
171
172        0                   1                   2                   3
173        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
174       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
175       |V=2|P|X|  CC   |M|     PT      |       sequence number         |
176       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
177       |                           timestamp                           |
178       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
179       |           synchronization source (SSRC) identifier            |
180       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
181       |            contributing source (CSRC) identifiers             |
182       |                              ...                              |
183       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
184
185                           Figure 1: RTP Header
186
187    The RTP header begins with an octet of fields (V, P, X, and CC) to
188    support specialized RTP uses (see [3] and [4] for details).  For
189    Vorbis RTP, the following values are used.
190
191    Version (V): 2 bits
192
193    This field identifies the version of RTP.  The version used by this
194    specification is two (2).
195
196    Padding (P): 1 bit
197
198    Padding MAY be used with this payload format according to section 5.1
199    of [3].
200
201    Extension (X): 1 bit
202
203    The Extension bit is used in accordance with [3].
204
205    CSRC count (CC): 4 bits
206
207    The CSRC count is used in accordance with [3].
208
209    Marker (M): 1 bit
210
211    Set to zero.  Audio silence suppression not used.  This conforms to
212    section 4.1 of [11].
213
214    Payload Type (PT): 7 bits
215
216    An RTP profile for a class of applications is expected to assign a
217    payload type for this format, or a dynamically allocated payload type
218    SHOULD be chosen which designates the payload as Vorbis.
219
220
221
222
223 Kerr                     Expires August 1, 2005                 [Page 4]
224 \f
225 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
226
227
228    Sequence number: 16 bits
229
230    The sequence number increments by one for each RTP data packet sent,
231    and may be used by the receiver to detect packet loss and to restore
232    packet sequence.  This field is detailed further in [3].
233
234    Timestamp: 32 bits
235
236    A timestamp representing the sampling time of the first sample of the
237    first Vorbis packet in the RTP packet.  The clock frequency MUST be
238    set to the sample rate of the encoded audio data and is conveyed
239    out-of-band as a SDP attribute.
240
241    SSRC/CSRC identifiers:
242
243    These two fields, 32 bits each with one SSRC field and a maximum of
244    16 CSRC fields, are as defined in [3].
245
246 2.2  Payload Header
247
248    After the RTP Header section the following five octets are the
249    Payload Header.  This header is split into a number of bitfields
250    detailing the format of the following payload data packets.
251
252        0                   1                   2                   3
253        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
254       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
255       |                          Codebook Ident                       |
256       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
257       |C|F|VDT|# pkts.|
258       +-+-+-+-+-+-+-+-+
259
260                         Figure 2: Payload Header
261
262    Codebook Ident: 32 bits
263
264    This 32 bit field is used to associate the Vorbis data to a decoding
265    Codebook.  It is created by making a CRC32 checksum of the codebook
266    required to decode the particular Vorbis audio stream.
267
268    Continuation (C): 1 bit
269
270    Set to one if this is a continuation of a fragmented packet.
271
272    Fragmented (F): 1 bit
273
274    Set to one if the payload contains complete packets or if it contains
275    the last fragment of a fragmented packet.
276
277
278
279 Kerr                     Expires August 1, 2005                 [Page 5]
280 \f
281 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
282
283
284    Vorbis Data Type (VDT): 2 bits
285
286    This field sets the packet payload type for the Vorbis data.  There
287    are currently four type of Vorbis payloads.
288
289       0 = Raw Vorbis payload
290       1 = Vorbis Setup payload
291       2 = Vorbis Codebook payload
292       3 = Vorbis Metadata payload
293
294    The last 4 bits are the number of complete packets in this payload.
295    This provides for a maximum number of 15 Vorbis packets in the
296    payload.  If the packet contains fragmented data the number of
297    packets MUST be set to 0.
298
299 2.3  Payload Data
300
301    Raw Vorbis packets are unbounded in length currently, although at
302    some future point there will likely be a practical limit placed on
303    them.  Typical Vorbis packet sizes are from very small (2-3 bytes) to
304    quite large (8-12 kilobytes).  The reference implementation [10]
305    typically produces packets less than ~800 bytes, except for the
306    codebook header packets which are ~4-12 kilobytes.  Within an RTP
307    context the maximum Vorbis packet size, including the RTP and payload
308    headers, SHOULD be kept below the path MTU to avoid packet
309    fragmentation.
310
311        0                   1                   2                   3
312        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
313       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
314       |            length             |       vorbis packet data     ..
315       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
316
317                      Figure 3: Payload Data Header
318
319    Each Vorbis payload packet starts with a two octet length header,
320    which is used to represent the size of the following data payload,
321    followed by the raw Vorbis data.
322
323    For payloads which consist of multiple Vorbis packets the payload
324    data consists of the packet length followed by the packet data for
325    each of the Vorbis packets in the payload.
326
327    The Vorbis packet length header is the length of the Vorbis data
328    block only and does not count the length field.
329
330    The payload packing of the Vorbis data packets SHOULD follow the
331    guidelines set-out in [4] where the oldest packet occurs immediately
332
333
334
335 Kerr                     Expires August 1, 2005                 [Page 6]
336 \f
337 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
338
339
340    after the RTP packet header.
341
342    Channel mapping of the audio is in accordance with BS.  775-1 ITU-R
343    [13].
344
345 2.4  Example RTP Packet
346
347    Here is an example RTP packet containing two Vorbis packets.
348
349    RTP Packet Header:
350
351        0                   1                   2                   3
352        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
353       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
354       | 2 |0|0|  0    |0|      PT     |       sequence number         |
355       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
356       |               timestamp (in sample rate units)                |
357       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
358       |           synchronisation source (SSRC) identifier            |
359       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
360       |            contributing source (CSRC) identifiers             |
361       |                              ...                              |
362       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
363
364                  Figure 4: Example Packet (RTP Headers)
365
366    Payload Data:
367
368        0                   1                   2                   3
369        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
370       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
371       |                        Codebook Ident                         |
372       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
373       |0|1| 0 | 2 pks |             length            | vorbis data  ..
374       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
375       ..                        vorbis data                           |
376       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
377       |            length             |   next vorbis packet data    ..
378       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
379       ..                        vorbis data                           |
380       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
381
382                 Figure 5: Example Packet (Payload Data)
383
384    The payload data section of the RTP packet starts with the 32 bit
385    Codebook Ident field followed by the one octet configuration header,
386    which has the number of Vorbis frames set to 2.  Each of the Vorbis
387    data frames is prefixed by the two octet length field.
388
389
390
391 Kerr                     Expires August 1, 2005                 [Page 7]
392 \f
393 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
394
395
396 3.  Frame Packetizing
397
398    Each RTP packet contains either one complete Vorbis packet, one
399    Vorbis packet fragment, or an integer number of complete Vorbis
400    packets (up to a max of 15 packets, since the number of packets is
401    defined by a 4 bit value).
402
403    Any Vorbis data packet that is less than path MTU SHOULD be bundled
404    in the RTP packet with as many Vorbis packets as will fit, up to a
405    maximum of 15.  Path MTU is detailed in [6] and [7].
406
407    If a Vorbis packet is larger than 65535 octets it MUST be fragmented.
408    A fragmented packet has a zero in the last four bits of the payload
409    header.  Each fragment after the first will also set the Continued
410    (C) bit to one in the payload header.  The RTP packet containing the
411    last fragment of the Vorbis packet will have the Fragmented (F) bit
412    set to one.  To maintain the correct sequence for fragmented packet
413    reception the timestamp field of fragmented packets MUST be the same
414    as the first packet sent, with the sequence number incremented as
415    normal for the subsequent RTP packets.
416
417 3.1  Example Fragmented Vorbis Packet
418
419    Here is an example fragmented Vorbis packet split over three RTP
420    packets.  Each packet contains the standard RTP headers as well as
421    the 5 octet Vorbis headers.
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447 Kerr                     Expires August 1, 2005                 [Page 8]
448 \f
449 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
450
451
452       Packet 1:
453
454        0                   1                   2                   3
455        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
456       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
457       |V=2|P|X|  CC   |M|     PT      |           1000                |
458       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
459       |                             xxxxx                             |
460       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
461       |           synchronization source (SSRC) identifier            |
462       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
463       |            contributing source (CSRC) identifiers             |
464       |                              ...                              |
465       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
466       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
467       |                        Codebook Ident                         |
468       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
469       |0|0| 0 |      0|             length            | vorbis data  ..
470       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
471       ..                        vorbis data                           |
472       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
473
474              Figure 6: Example Fragmented Packet (Packet 1)
475
476    In this packet the initial sequence number is 1000 and the timestamp
477    is xxxxx.  The Continuation (C) bit is set to one, indicating it is
478    not the continuation of a fragmented bit, and the Fragmentation (F)
479    is set to 0 indicating it is a fragmented packet.  The number of
480    packets field is set to 0, and as the payload is raw Vorbis data the
481    VDT field is set to 0.
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503 Kerr                     Expires August 1, 2005                 [Page 9]
504 \f
505 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
506
507
508       Packet 2:
509
510        0                   1                   2                   3
511        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
512       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
513       |V=2|P|X|  CC   |M|     PT      |           1001                |
514       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
515       |                             xxxxx                             |
516       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
517       |           synchronization source (SSRC) identifier            |
518       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
519       |            contributing source (CSRC) identifiers             |
520       |                              ...                              |
521       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
522       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
523       |                        Codebook Ident                         |
524       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
525       |1|0| 0 |      0|             length            | vorbis data  ..
526       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
527       ..                        vorbis data                           |
528       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
529
530              Figure 7: Example Fragmented Packet (Packet 2)
531
532    The C bit is set to 1 and the number of packets field is set to 0.
533    For large Vorbis fragments there can be several of these type of
534    payload packets.  The maximum packet size SHOULD be no greater than
535    the path MTU, including all RTP and payload headers.  The sequence
536    number has been incremented by one but the timestamp field remains
537    the same as the initial packet.
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559 Kerr                     Expires August 1, 2005                [Page 10]
560 \f
561 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
562
563
564       Packet 3:
565
566        0                   1                   2                   3
567        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
568       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
569       |V=2|P|X|  CC   |M|     PT      |           1002                |
570       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
571       |                             xxxxx                             |
572       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
573       |           synchronization source (SSRC) identifier            |
574       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
575       |            contributing source (CSRC) identifiers             |
576       |                              ...                              |
577       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
578       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
579       |                        Codebook Ident                         |
580       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
581       |1|1| 0 |      0|             length            | vorbis data  ..
582       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
583       ..                        vorbis data                           |
584       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
585
586              Figure 8: Example Fragmented Packet (Packet 3)
587
588    This is the last Vorbis fragment packet.  The C and F bits are set
589    and the packet count remains set to 0.  As in the previous packets
590    the timestamp remains set to the first packet in the sequence and the
591    sequence number has been incremented.
592
593 3.2  Packet Loss
594
595    As there is no error correction within the Vorbis stream, packet loss
596    will result in a loss of signal.  Packet loss is more of an issue for
597    fragmented Vorbis packets as the client will have to cope with the
598    handling of the C and F flags.  If we use the fragmented Vorbis
599    packet example above and the first packet is lost the client SHOULD
600    detect that the next packet has the packet count field set to 0 and
601    the C bit is set and MUST drop it.  The next packet, which is the
602    final fragmented packet, SHOULD be dropped in the same manner, or
603    buffered.  Feedback reports on lost and dropped packets MUST be sent
604    back via RTCP.
605
606    If a particular multicast session has a large number of participants
607    care must be taken to prevent an RTCP feedback implosion, [9], in the
608    event of packet loss from a large number of participants.
609
610    Loss of any of the configuration headers, detailed below, is dealt
611    with in the Loss of Configuration Headers Section later.
612
613
614
615 Kerr                     Expires August 1, 2005                [Page 11]
616 \f
617 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
618
619
620 4.  Configuration Headers
621
622    Unlike other mainstream audio codecs Vorbis has no statically
623    configured probability model, instead it packs all entropy decoding
624    configuration, VQ and Huffman models into a self-contained codebook.
625    This codebook block also requires additional identification
626    information detailing the number of audio channels, bitrates and
627    other information used to initialise the Vorbis stream.
628
629    To decode a Vorbis stream three configuration header blocks are
630    needed.  The first header indicates the sample and bitrates, the
631    number of channels and the version of the Vorbis encoder used.  The
632    second header contains the decoders probability model, or codebook
633    and the third header details stream metadata.
634
635    As the RTP stream may change certain configuration data mid-session
636    there are two different methods for delivering this configuration
637    data to a client, in-band and SDP which is detailed below.  SDP
638    delivery is used to set-up an initial state for the client
639    application and in-band is used to change state during the session.
640    The changes may be due to different metadata or codebooks as well as
641    different bitrates of the stream.
642
643    Out of the two delivery vectors the use of an SDP attribute to
644    indicate an URI where the configuration and codebook data can be
645    obtained is preferred as they can be fetched reliably using TCP.  The
646    in-band codebook delivery SHOULD only be used in situations where the
647    link between the client is unidirectional or if the SDP-based
648    information is not available.
649
650    Synchronizing the configuration and codebook headers to the RTP
651    stream is critical.  The 32 bit Codebook Ident field is used to
652    indicate when a change in the stream has taken place.  The client
653    application MUST have in advance the correct configuration and
654    codebook headers and if the client detects a change in the Ident
655    value and does not have this information it MUST NOT decode the raw
656    Vorbis data.
657
658 4.1  In-band Header Transmission
659
660    The three header data blocks are sent in-band with the packet type
661    bits set to match the payload type.  Normally the codebook and
662    configuration headers are sent once per session if the stream is an
663    encoding of live audio, as typically the encoder state will not
664    change, but the encoder state can change at the boundary of chained
665    Vorbis audio files.  Metadata can be sent at the start as well as any
666    time during the life of the session.  Clients MUST be capable of
667    dealing with periodic re-transmission of the configuration headers.
668
669
670
671 Kerr                     Expires August 1, 2005                [Page 12]
672 \f
673 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
674
675
676 4.1.1  Setup Header
677
678    A Vorbis Setup header is indicated with the payload type field set to
679    1.  The Vorbis version MUST be set to zero to comply with this
680    document.  The fields Sample Rate, Bitrate Maximum/Nominal/Minimum
681    and Num Audio Channels are set in accordance with [11] with the bsz
682    fields above referring to the blocksize parameters.  The framing bit
683    is not used for RTP transportation and so applications constructing
684    Vorbis files MUST take care to set this if required.
685
686        0                   1                   2                   3
687        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
688       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
689       |V=2|P|X|  CC   |M|     PT      |             xxxx              |
690       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
691       |                             xxxxx                             |
692       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
693       |           synchronization source (SSRC) identifier            |
694       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
695       |            contributing source (CSRC) identifiers             |
696       |                              ...                              |
697       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
698       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
699       |                          Codebook Ident                       |
700       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
701       |0|1| 2 |      1| bsz 0 | bsz 1 |       Num Audio Channels      |
702       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
703       |                        Vorbis Version                         |
704       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
705       |                       Audio Sample Rate                       |
706       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
707       |                        Bitrate Maximum                        |
708       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
709       |                        Bitrate Nominal                        |
710       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
711       |                        Bitrate Minimum                        |
712       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
713
714                          Figure 9: Setup Header
715
716
717 4.1.2  Codebook Header
718
719    If the payload type field is set to 2, this indicates the packet
720    contains Codebook data.
721
722    The configuration information detailed below MUST be completely
723    intact, as a client can not decode a stream with an incomplete or
724
725
726
727 Kerr                     Expires August 1, 2005                [Page 13]
728 \f
729 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
730
731
732    corrupted codebook set.
733
734    A 16 bit codebook length field precedes the codebook datablock.  The
735    length field  allows for codebooks to be up to 64K in size.  Packet
736    fragmentation, as per the Vorbis data, MUST be performed if the
737    codebooks size exceeds path MTU.  The Codebook Ident field MUST be
738    set to match the associated codebook needed to decode the Vorbis
739    stream.
740
741    The Codebook Ident is the CRC32 checksum of the codebook and is used
742    to detect a corrupted codebook as well as associating it with its
743    Vorbis data stream.  This Ident value MUST NOT be set to the value of
744    the current stream if this header is being sent before the boundary
745    of the chained file has been reached.  If a checksum failure is
746    detected then this is considered to be a failure and MUST be reported
747    to the client application.
748
749        0                   1                   2                   3
750        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
751       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
752       |V=2|P|X|  CC   |M|     PT      |             xxxx              |
753       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
754       |                             xxxxx                             |
755       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
756       |           synchronization source (SSRC) identifier            |
757       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
758       |            contributing source (CSRC) identifiers             |
759       |                              ...                              |
760       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
761       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
762       |                           Codebook Ident                      |
763       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
764       |0|1| 2 |      1|           Codebook Length                     |
765       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
766       |    length     |           Codebook                           ..
767       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
768       ..                          Codebook                            |
769       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
770
771                        Figure 10: Codebook Header
772
773
774 4.1.2.1  Codebook CRC32 Generation
775
776    In order for different implementations of Vorbis RTP clients and
777    servers to interoperate with each other a common format for the
778    production of the CRC32 hash is required.  The polynomial is
779    X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0.
780
781
782
783 Kerr                     Expires August 1, 2005                [Page 14]
784 \f
785 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
786
787
788    The following C code function SHOULD be used by implementations, if
789    not then the code responsible for generating the CRC32 value MUST use
790    the polynomial function above.
791
792    unsigned int crc32 (int length, unsigned char *crcdata)
793    {
794        int index, loop;
795        unsigned int byte, crc, mask;
796
797        index = 0;
798        crc = 0xFFFFFFFF;
799
800        while (index < length) {
801            byte = crcdata [index];
802            crc = crc ^ byte;
803
804            for (loop = 7; loop >= 0; loop--) {
805                mask = -(crc & 1);
806                crc = (crc >> 1) ^ (0xEDB88320 & mask);
807            }
808            index++;
809        }
810        return ~crc;
811    }
812
813
814 4.1.3  Metadata Header
815
816    With the payload type flag set to 3, this indicates that the packet
817    contain the comment metadata, such as artist name, track title and so
818    on.  These metadata messages are not intended to be fully descriptive
819    but to offer basic track/song information.  This message MUST be sent
820    at the start of the stream, together with the setup and codebook
821    headers, even if it contains no information.  During a session the
822    metadata associated with the stream may change from that specified at
823    the start, e.g.  a live concert broadcast changing acts/scenes, so
824    clients MUST have the ability to receive Metadata header blocks.
825    Details on the format of the comments can be found in the Vorbis
826    documentation [12].
827
828    The format for the data takes the form of a 32 bit codec vendors name
829    length field followed by the name encoded in UTF-8.  The next 32 bit
830    field denotes the number of user comments.  Each of the user comments
831    is prefixed by a 32 bit length field followed by the comment text.
832
833
834
835
836
837
838
839 Kerr                     Expires August 1, 2005                [Page 15]
840 \f
841 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
842
843
844        0                   1                   2                   3
845        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
846       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
847       |V=2|P|X|  CC   |M|     PT      |             xxxx              |
848       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
849       |                             xxxxx                             |
850       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
851       |           synchronization source (SSRC) identifier            |
852       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
853       |            contributing source (CSRC) identifiers             |
854       |                              ...                              |
855       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
856       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
857       |                          Codebook Ident                       |
858       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
859       |0|1| 3 |      1|          Vendor string length                 |
860       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
861       |    length     |          Vendor string                       ..
862       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
863       |                    User comments list length                  |
864       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
865       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
866       |                       User comment length                     |
867       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
868       |                          User comment                        ..
869       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
870       ..                         User comment                         |
871       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
872
873                        Figure 11: Metadata Header
874
875
876 4.2  Packed Headers Delivery
877
878    As mentioned above the RECOMMENDED delivery vector for Vorbis
879    configuration data is via an SDP attribute as this retrieval method
880    can be performed using a reliable transport protocol.
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895 Kerr                     Expires August 1, 2005                [Page 16]
896 \f
897 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
898
899
900       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
901       |                     Number of packed headers                  |
902       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
903       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
904       |                          Packed header                        |
905       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
906       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
907       |                          Packed header                        |
908       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
909
910                    Figure 12: Packed Headers Overview
911
912    As the RTP headers are not required for this method of delivery the
913    structure of the configuration data is slightly different.  The
914    packed header starts with a 32 bit count field which details the
915    number of packed headers that are contained in the bundle.  Next is
916    the packed header payload for each chained Vorbis file.
917
918        0                   1                   2                   3
919        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
920       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
921       |                         Header Length                         |
922       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
923       |                        Codebook Ident                         |
924       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
925       |                         Setup Header                         ..
926       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
927       ..                        Setup Header                          |
928       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
929       |                        Codebook Header                       ..
930       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
931       ..                       Codebook Header                        |
932       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
933       |                        Metadata Header                       ..
934       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
935       ..                       Metadata Header                        |
936       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
937
938                     Figure 13: Packed Headers Detail
939
940    The key difference between the in-band format is there is no need for
941    the payload header octet and Codebook Ident field.  Below are
942    examples of the packed headers format.
943
944
945
946
947
948
949
950
951 Kerr                     Expires August 1, 2005                [Page 17]
952 \f
953 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
954
955
956        0                   1                   2                   3
957        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
958       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
959       |0|1| 2 |      1| bsz 0 | bsz 1 |       Num Audio Channels      |
960       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
961       |                        Vorbis Version                         |
962       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
963       |                       Audio Sample Rate                       |
964       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
965       |                        Bitrate Maximum                        |
966       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
967       |                        Bitrate Nominal                        |
968       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
969       |                        Bitrate Minimum                        |
970       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
971
972                      Figure 14: Packed Setup Header
973
974    The alignment of the packed Setup Header is slightly different from
975    the RTP payload type as the payload header is not used.
976
977        0                   1                   2                   3
978        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
979       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
980       |                        Codebook Length                        |
981       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
982       |                           Codebook                           ..
983       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
984       ..                          Codebook                            |
985       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
986
987                    Figure 15: Packed Codebook Header
988
989    The packed Codebook header also has a slightly different structure to
990    that of the RTP payload type.  The Codebook Ident field that is
991    normally part of this structure is moved to the second field of the
992    overall packed structure.
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007 Kerr                     Expires August 1, 2005                [Page 18]
1008 \f
1009 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
1010
1011
1012        0                   1                   2                   3
1013        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
1014       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1015       |                      Vendor string length                     |
1016       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1017       |                         Vendor string                         |
1018       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1019       |                    User comments list length                  |
1020       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1021       |                User comment length / User comment            ..
1022       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1023
1024                    Figure 16: Packed Metadata Header
1025
1026    The packed Metadata header also as a slightly different structure to
1027    that of the RTP payload type with the payload header not being used.
1028
1029 4.2.1  Packed Headers IANA Considerations
1030
1031    The following IANA considerations MUST only be applied to the packed
1032    headers.
1033
1034    MIME media type name: audio
1035
1036    MIME subtype: vorbis-config
1037
1038    Required Parameters:
1039
1040    None.
1041
1042    Optional Parameters:
1043
1044    None.
1045
1046    Encoding considerations:
1047
1048    This type is only defined for transfer via HTTP as specified in RFC
1049    XXXX.
1050
1051    Security Considerations:
1052
1053    See Section 6 of RFC 3047.
1054
1055    Interoperability considerations: none
1056
1057    Published specification:
1058
1059    See RFC XXXX for details.
1060
1061
1062
1063 Kerr                     Expires August 1, 2005                [Page 19]
1064 \f
1065 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
1066
1067
1068    Applications which use this media type:
1069
1070    Vorbis encoded audio, configuration data.
1071
1072    Additional information: none
1073
1074    Person & email address to contact for further information:
1075
1076    Phil Kerr: <phil@plus24.com>
1077
1078    Intended usage: COMMON
1079
1080    Author/Change controller:
1081
1082    Author: Phil Kerr
1083
1084    Change controller: IETF AVT Working Group
1085
1086 4.3  Codebook Caching
1087
1088    Codebook caching allows clients that have previously connected to a
1089    stream to re-use the associated codebooks and configuration data.
1090    When a client receives a codebook it may store it locally and can
1091    compare the CRC32 key with that of the new stream and begin decoding
1092    before it has received any of the headers.
1093
1094 4.4  Loss of Configuration Headers
1095
1096    Unlike the loss of raw Vorbis payload data, loss of a configuration
1097    header can lead to a situation where it will not be possible to
1098    successfully decode the stream.
1099
1100    Out of the three headers, loss of either the Codebook or Setup
1101    headers MUST result in the halting of stream decoding.  Loss of the
1102    Metadata header SHOULD NOT be regarded as fatal for decoding.  Loss
1103    of any of the headers SHOULD be reported to the client as well as a
1104    loss report sent via RTCP.
1105
1106 5.  IANA Considerations
1107
1108    MIME media type name: audio
1109
1110    MIME subtype: vorbis
1111
1112    Required Parameters:
1113
1114    header indicates the URI of the decoding configuration headers.
1115
1116
1117
1118
1119 Kerr                     Expires August 1, 2005                [Page 20]
1120 \f
1121 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
1122
1123
1124    Optional Parameters:
1125
1126    None.
1127
1128    Encoding considerations:
1129
1130    This type is only defined for transfer via RTP as specified in RFC
1131    XXXX.
1132
1133    Security Considerations:
1134
1135    See Section 6 of RFC 3047.
1136
1137    Interoperability considerations: none
1138
1139    Published specification:
1140
1141    See the Vorbis documentation [11] for details.
1142
1143    Applications which use this media type:
1144
1145    Audio streaming and conferencing tools
1146
1147    Additional information: none
1148
1149    Person & email address to contact for further information:
1150
1151    Phil Kerr: <phil@plus24.com>
1152
1153    Intended usage: COMMON
1154
1155    Author/Change controller:
1156
1157    Author: Phil Kerr
1158
1159    Change controller: IETF AVT Working Group
1160
1161 5.1  Mapping MIME Parameters into SDP
1162
1163    The information carried in the MIME media type specification has a
1164    specific mapping to fields in the Session Description Protocol (SDP)
1165    [5], which is commonly used to describe RTP sessions.  When SDP is
1166    used to specify sessions the mapping are as follows:
1167
1168    o  The MIME type ("audio") goes in SDP "m=" as the media name.
1169
1170    o  The MIME subtype ("VORBIS") goes in SDP "a=rtpmap" as the encoding
1171       name.
1172
1173
1174
1175 Kerr                     Expires August 1, 2005                [Page 21]
1176 \f
1177
1178    o  The parameter "rate" also goes in "a=rtpmap" as clock rate.
1179
1180    o  The parameter "channels" also goes in "a=rtpmap" as channel count.
1181
1182    o  The parameter "header" goes in the SDP "a=fmpt" attribute.
1183
1184    If the stream comprises chained Vorbis files the configuration and
1185    codebook headers for each file SHOULD be packaged together and passed
1186    to the client using the headers attribute if all the files to be
1187    played are known in advance.
1188
1189    The Vorbis configuration specified in the header attribute MUST
1190    contain all of the configuration data and codebooks needed for the
1191    life of the session.
1192
1193    The port value is specified by the server application bound to the
1194    address specified in the c attribute.  The bitrate value and channels
1195    specified in the rtpmap attribute MUST match the Vorbis sample rate
1196    value.  An example is found below.
1197
1198       c=IN IP4/6
1199       m=audio  RTP/AVP 98
1200       a=rtpmap:98 VORBIS/44100/2
1201       a=fmtp:98 header=<URL of configuration header>
1202
1203    Note that the payload format (encoding) names are commonly shown in
1204    upper case.  MIME subtypes are commonly shown in lower case.  These
1205    names are case-insensitive in both places.  Similarly, parameter
1206    names are case-insensitive both in MIME types and in the default
1207    mapping to the SDP a=fmtp attribute.  The exception regarding case
1208    sensitivity is the configuration header URL which MUST be regarded as
1209    being case sensitive.
1210
1211    The answer to any offer, [8], MUST NOT change the URL specified in
1212    the header attribute.
1213
1214 6.  Congestion Control
1215
1216    Vorbis clients SHOULD send regular receiver reports detailing
1217    congestion.  A mechanism for dynamically downgrading the stream,
1218    known as bitrate peeling, will allow for a graceful backing off of
1219    the stream bitrate.  This feature is not available at present so an
1220    alternative would be to redirect the client to a lower bitrate stream
1221    if one is available.
1222
1223    If a particular multicast session has a large number of participants
1224    care must be taken to prevent an RTCP feedback implosion, [9], in the
1225    event of congestion.
1226
1227
1228
1229
1230
1231 Kerr                     Expires August 1, 2005                [Page 22]
1232 \f
1233 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
1234
1235
1236 7.  Security Considerations
1237
1238    RTP packets using this payload format are subject to the security
1239    considerations discussed in the RTP specification [3].  This implies
1240    that the confidentiality of the media stream is achieved by using
1241    encryption.  Because the data compression used with this payload
1242    format is applied end-to-end, encryption may be performed on the
1243    compressed data.  Where the size of a data block is set care MUST be
1244    taken to prevent buffer overflows in the client applications.
1245
1246 8.  Acknowledgments
1247
1248    This document is a continuation of draft-moffitt-vorbis-rtp-00.txt.
1249    The MIME type section is a continuation of
1250    draft-short-avt-rtp-vorbis-mime-00.txt
1251
1252    Thanks to the AVT, Ogg Vorbis Communities / Xiph.org including Steve
1253    Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia, Pascal
1254    Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John Lazzaro,
1255    Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry Short,
1256    Mike Smith, Michael Sparks, Magnus Westerlund.
1257
1258 9.  References
1259
1260 9.1  Normative References
1261
1262    [1]  Pfeiffer, S., "The Ogg Encapsulation Format Version 0", RFC
1263         3533.
1264
1265    [2]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
1266         Levels", RFC 2119.
1267
1268    [3]  Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson,
1269         "RTP: A Transport Protocol for real-time applications", RFC
1270         3550.
1271
1272    [4]  Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
1273         Conferences with Minimal Control.", RFC 3551.
1274
1275    [5]  Handley, M. and V. Jacobson, "SDP: Session Description
1276         Protocol", RFC 2327.
1277
1278    [6]  Mogul et al., J., "Path MTU Discovery", RFC 1063.
1279
1280    [7]  McCann et al., J., "Path MTU Discovery for IP version 6", RFC
1281         1981.
1282
1283    [8]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
1284
1285
1286
1287 Kerr                     Expires August 1, 2005                [Page 23]
1288 \f
1289 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
1290
1291
1292         Session Description Protocol (SDP)", RFC 3264.
1293
1294    [9]  Ott, J., Wenger, S., Sato, N., Burmeister, C. and J. Rey,
1295         "Extended RTP Profile for RTCP-based Feedback (RTP/AVPF)",
1296         Internet Draft (draft-ietf-avt-rtcp-feedback-11: Work in
1297         progress).
1298
1299 9.2  Informative References
1300
1301    [10]  "libvorbis: Available from the Xiph website,
1302          http://www.xiph.org".
1303
1304    [11]  "Ogg Vorbis I specification:  Codec setup and packet decode.
1305          Available from the Xiph website, http://www.xiph.org".
1306
1307    [12]  "Ogg Vorbis I specification:  Comment field and header
1308          specification.  Available from the Xiph website,
1309          http://www.xiph.org".
1310
1311    [13]  "ITU (1992-1994) ITU-R Recommendation BS. 775-1 Multi-channel
1312          stereophonic sound system with or without accompanying
1313          picture. International Telecommunications Union.  Available
1314          from the ITU website, http://www.itu.int".
1315
1316
1317 Author's Address
1318
1319    Phil Kerr
1320    Xiph.Org
1321
1322    EMail: phil@plus24.com
1323    URI:   http://www.xiph.org/
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343 Kerr                     Expires August 1, 2005                [Page 24]
1344 \f
1345 Internet-Draft        draft-ietf-avt-vorbis-rtp-00          January 2005
1346
1347
1348 Intellectual Property Statement
1349
1350    The IETF takes no position regarding the validity or scope of any
1351    Intellectual Property Rights or other rights that might be claimed to
1352    pertain to the implementation or use of the technology described in
1353    this document or the extent to which any license under such rights
1354    might or might not be available; nor does it represent that it has
1355    made any independent effort to identify any such rights.  Information
1356    on the procedures with respect to rights in RFC documents can be
1357    found in BCP 78 and BCP 79.
1358
1359    Copies of IPR disclosures made to the IETF Secretariat and any
1360    assurances of licenses to be made available, or the result of an
1361    attempt made to obtain a general license or permission for the use of
1362    such proprietary rights by implementers or users of this
1363    specification can be obtained from the IETF on-line IPR repository at
1364    http://www.ietf.org/ipr.
1365
1366    The IETF invites any interested party to bring to its attention any
1367    copyrights, patents or patent applications, or other proprietary
1368    rights that may cover technology that may be required to implement
1369    this standard.  Please address the information to the IETF at
1370    ietf-ipr@ietf.org.
1371
1372
1373 Disclaimer of Validity
1374
1375    This document and the information contained herein are provided on an
1376    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1377    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1378    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1379    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1380    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1381    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1382
1383
1384 Copyright Statement
1385
1386    Copyright (C) The Internet Society (2005).  This document is subject
1387    to the rights, licenses and restrictions contained in BCP 78, and
1388    except as set forth therein, the authors retain all their rights.
1389
1390
1391 Acknowledgment
1392
1393    Funding for the RFC Editor function is currently provided by the
1394    Internet Society.
1395
1396
1397
1398
1399 Kerr                     Expires August 1, 2005                [Page 25]
1400 \f