Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.txt @ 16

Last change on this file since 16 was 16, checked in by landauf, 16 years ago

added libvorbis

File size: 53.7 KB
Line 
1
2
3
4AVT Working Group                                             L. Barbato
5Internet-Draft                                                  Xiph.Org
6Expires: December 27, 2007                                  Jun 25, 2007
7
8
9                      draft-ietf-avt-rtp-vorbis-06
10              RTP Payload Format for Vorbis Encoded Audio
11
12Status of this Memo
13
14   By submitting this Internet-Draft, each author represents that any
15   applicable patent or other IPR claims of which he or she is aware
16   have been or will be disclosed, and any of which he or she becomes
17   aware will be disclosed, in accordance with Section 6 of BCP 79.
18
19   Internet-Drafts are working documents of the Internet Engineering
20   Task Force (IETF), its areas, and its working groups.  Note that
21   other groups may also distribute working documents as Internet-
22   Drafts.
23
24   Internet-Drafts are draft documents valid for a maximum of six months
25   and may be updated, replaced, or obsoleted by other documents at any
26   time.  It is inappropriate to use Internet-Drafts as reference
27   material or to cite them other than as "work in progress."
28
29   The list of current Internet-Drafts can be accessed at
30   http://www.ietf.org/ietf/1id-abstracts.txt.
31
32   The list of Internet-Draft Shadow Directories can be accessed at
33   http://www.ietf.org/shadow.html.
34
35   This Internet-Draft will expire on December 27, 2007.
36
37Copyright Notice
38
39   Copyright (C) The IETF Trust (2007).
40
41Abstract
42
43   This document describes an RTP payload format for transporting Vorbis
44   encoded audio.  It details the RTP encapsulation mechanism for raw
45   Vorbis data and details the delivery mechanisms for the decoder
46   probability model, referred to as a codebook and other setup
47   information.
48
49   Also included within this memo are media type registrations, and the
50   details necessary for the use of Vorbis with the Session Description
51   Protocol (SDP).
52
53
54
55Barbato                 Expires December 27, 2007               [Page 1]
56
57Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
58
59
60Editors 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
66Table of Contents
67
68   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
69     1.1.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  3
70   2.  Payload Format . . . . . . . . . . . . . . . . . . . . . . . .  3
71     2.1.  RTP Header . . . . . . . . . . . . . . . . . . . . . . . .  3
72     2.2.  Payload Header . . . . . . . . . . . . . . . . . . . . . .  5
73     2.3.  Payload Data . . . . . . . . . . . . . . . . . . . . . . .  6
74     2.4.  Example RTP Packet . . . . . . . . . . . . . . . . . . . .  7
75   3.  Configuration Headers  . . . . . . . . . . . . . . . . . . . .  8
76     3.1.  In-band Header Transmission  . . . . . . . . . . . . . . .  9
77       3.1.1.  Packed Configuration . . . . . . . . . . . . . . . . .  9
78     3.2.  Out of Band Transmission . . . . . . . . . . . . . . . . . 11
79       3.2.1.  Packed Headers . . . . . . . . . . . . . . . . . . . . 11
80     3.3.  Loss of Configuration Headers  . . . . . . . . . . . . . . 12
81   4.  Comment Headers  . . . . . . . . . . . . . . . . . . . . . . . 12
82   5.  Frame Packetization  . . . . . . . . . . . . . . . . . . . . . 13
83     5.1.  Example Fragmented Vorbis Packet . . . . . . . . . . . . . 14
84     5.2.  Packet Loss  . . . . . . . . . . . . . . . . . . . . . . . 16
85   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 17
86     6.1.  Packed Headers IANA Considerations . . . . . . . . . . . . 19
87   7.  SDP related considerations . . . . . . . . . . . . . . . . . . 20
88     7.1.  Mapping Media Type Parameters into SDP . . . . . . . . . . 20
89       7.1.1.  SDP Example  . . . . . . . . . . . . . . . . . . . . . 21
90     7.2.  Usage with the SDP Offer/Answer Model  . . . . . . . . . . 21
91   8.  Congestion Control . . . . . . . . . . . . . . . . . . . . . . 22
92   9.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
93     9.1.  Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 22
94   10. Security Considerations  . . . . . . . . . . . . . . . . . . . 23
95   11. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 23
96   12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23
97     12.1. Normative References . . . . . . . . . . . . . . . . . . . 23
98     12.2. Informative References . . . . . . . . . . . . . . . . . . 24
99   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24
100   Intellectual Property and Copyright Statements . . . . . . . . . . 25
101
102
103
104
105
106
107
108
109
110
111Barbato                 Expires December 27, 2007               [Page 2]
112
113Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
114
115
1161.  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 quality/
121   bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is
122   in the same league as AAC.  Vorbis is also intended for lower and
123   higher sample rates (from 8kHz telephony to 192kHz digital masters)
124   and a range of channel representations (monaural, polyphonic, stereo,
125   quadraphonic, 5.1, ambisonic, or up to 255 discrete channels).
126
127   Vorbis encoded audio is generally encapsulated within an Ogg format
128   bitstream [11], which provides framing and synchronization.  For the
129   purposes of RTP transport, this layer is unnecessary, and so raw
130   Vorbis packets are used in the payload.
131
1321.1.  Terminology
133
134   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
135   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
136   document are to be interpreted as described in RFC 2119 [1].
137
138
1392.  Payload Format
140
141   For RTP based transport of Vorbis encoded audio the standard RTP
142   header is followed by a 4 octets payload header, then the payload
143   data.  The payload headers are used to associate the Vorbis data with
144   its associated decoding codebooks as well as indicating if the
145   following packet contains fragmented Vorbis data and/or the number of
146   whole Vorbis data frames.  The payload data contains the raw Vorbis
147   bitstream information.  There are 3 types of Vorbis payload data, an
148   RTP packet MUST contain just one of them at a time.
149
1502.1.  RTP Header
151
152   The format of the RTP header is specified in [2] and shown in Figure
153   Figure 1.  This payload format uses the fields of the header in a
154   manner consistent with that specification.
155
156
157
158
159
160
161
162
163
164
165
166
167Barbato                 Expires December 27, 2007               [Page 3]
168
169Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
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 [2] and [3] 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 [2].
200
201   Extension (X): 1 bit
202
203   The Extension bit is used in accordance with [2].
204
205   CSRC count (CC): 4 bits
206
207   The CSRC count is used in accordance with [2].
208
209   Marker (M): 1 bit
210
211   Set to zero.  Audio silence suppression not used.  This conforms to
212   section 4.1 of [13].
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
223Barbato                 Expires December 27, 2007               [Page 4]
224
225Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
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 [2].
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 out-
239   of-band (e.g. as a SDP parameter).
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 [2].
245
2462.2.  Payload Header
247
248   The 4 octets following the RTP Header section are the Payload Header.
249   This header is split into a number of bitfields detailing the format
250   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      |                     Ident                     | F |VDT|# pkts.|
256      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
257
258                         Figure 2: Payload Header
259
260   Ident: 24 bits
261
262   This 24 bit field is used to associate the Vorbis data to a decoding
263   Configuration.  It is stored as network byte order integer.
264
265   Fragment type (F): 2 bits
266
267   This field is set according to the following list
268
269      0 = Not Fragmented
270      1 = Start Fragment
271      2 = Continuation Fragment
272      3 = End Fragment
273
274   Vorbis Data Type (VDT): 2 bits
275
276
277
278
279Barbato                 Expires December 27, 2007               [Page 5]
280
281Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
282
283
284   This field specifies the kind of Vorbis data stored in this RTP
285   packet.  There are currently three different types of Vorbis
286   payloads.  Each packet MUST contain only a single type of Vorbis
287   payload (e.g. you MUST not aggregate configuration and comment
288   payload in the same packet)
289
290      0 = Raw Vorbis payload
291      1 = Vorbis Packed Configuration payload
292      2 = Legacy Vorbis Comment payload
293      3 = Reserved
294
295   The packets with a VDT of value 3 MUST be ignored
296
297   The last 4 bits represent the number of complete packets in this
298   payload.  This provides for a maximum number of 15 Vorbis packets in
299   the payload.  If the packet contains fragmented data the number of
300   packets MUST be set to 0.
301
3022.3.  Payload Data
303
304   Raw Vorbis packets are currently unbounded in length, application
305   profiles will likely define a practical limit.  Typical Vorbis packet
306   sizes range from very small (2-3 bytes) to quite large (8-12
307   kilobytes).  The reference implementation [12] typically produces
308   packets less than ~800 bytes, except for the setup header packets
309   which are ~4-12 kilobytes.  Within an RTP context, to avoid
310   fragmentation, the Vorbis data packet size SHOULD be kept
311   sufficiently small so that after adding the RTP and payload headers,
312   the complete RTP packet is smaller than the path MTU.
313
314       0                   1                   2                   3
315       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
316      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
317      |            length             |       vorbis packet data     ..
318      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
319
320                       Figure 3: Payload Data Header
321
322   Each Vorbis payload packet starts with a two octet length header,
323   which is used to represent the size in bytes of the following data
324   payload, followed by the raw Vorbis data padded to the nearest byte
325   boundary, as explained by the vorbis specification [13].  The length
326   value is stored as network byte order integer.
327
328   For payloads which consist of multiple Vorbis packets the payload
329   data consists of the packet length followed by the packet data for
330   each of the Vorbis packets in the payload.
331
332
333
334
335Barbato                 Expires December 27, 2007               [Page 6]
336
337Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
338
339
340   The Vorbis packet length header is the length of the Vorbis data
341   block only and does not count the length field.
342
343   The payload packing of the Vorbis data packets MUST follow the
344   guidelines set-out in [3] where the oldest packet occurs immediately
345   after the RTP packet header.  Subsequent packets, if any, MUST follow
346   in temporal order.
347
348   Channel mapping of the audio is in accordance with the Vorbis I
349   Specification [13].
350
3512.4.  Example RTP Packet
352
353   Here is an example RTP packet containing two Vorbis packets.
354
355   RTP Packet Header:
356
357       0                   1                   2                   3
358       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
359      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
360      | 2 |0|0|  0    |0|      PT     |       sequence number         |
361      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
362      |               timestamp (in sample rate units)                |
363      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
364      |           synchronisation source (SSRC) identifier            |
365      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
366      |            contributing source (CSRC) identifiers             |
367      |                              ...                              |
368      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
369      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
370      |                     Ident                     | 0 | 0 | 2 pks |
371      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
372      |            length             |          vorbis data         ..
373      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
374      ..                        vorbis data                           |
375      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
376      |            length             |   next vorbis packet data    ..
377      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
378      ..                        vorbis data                          ..
379      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
380      ..               vorbis data                    |
381      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
382
383                    Figure 4: Example Raw Vorbis Packet
384
385   The payload data section of the RTP packet begins with the 24 bit
386   Ident field followed by the one octet bitfield header, which has the
387   number of Vorbis frames set to 2.  Each of the Vorbis data frames is
388
389
390
391Barbato                 Expires December 27, 2007               [Page 7]
392
393Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
394
395
396   prefixed by the two octets length field.  The Packet Type and
397   Fragment Type are set to 0.  The Configuration that will be used to
398   decode the packets is the one indexed by the ident value.
399
400
4013.  Configuration Headers
402
403   Unlike other mainstream audio codecs Vorbis has no statically
404   configured probability model.  Instead, it packs all entropy decoding
405   configuration, Vector Quantization and Huffman models into a data
406   block that must be transmitted to the decoder along with the
407   compressed data.  A decoder also requires information detailing the
408   number of audio channels, bitrates and similar information to
409   configure itself for a particular compressed data stream.  These two
410   blocks of information are often referred to collectively as the
411   "codebooks" for a Vorbis stream, and are nominally included as
412   special "header" packets at the start of the compressed data.  In
413   addition, the Vorbis I specification [13] requires the presence of a
414   comment header packet which gives simple metadata about the stream,
415   but this information is not required for decoding the frame sequence.
416
417   Thus these two codebook header packets must be received by the
418   decoder before any audio data can be interpreted.  These requirements
419   pose problems in RTP, which is often used over unreliable transports.
420
421   Since this information must be transmitted reliably and, as the RTP
422   stream may change certain configuration data mid-session, there are
423   different methods for delivering this configuration data to a client,
424   both in-band and out-of-band which is detailed below.  SDP delivery
425   is typically used to set up an initial state for the client
426   application.  The changes may be due to different codebooks as well
427   as different bitrates of the stream.
428
429   The delivery vectors in use can be specified by an SDP attribute to
430   indicate the method and the optional URI where the Vorbis Packed
431   Configuration (Section 3.1.1) Packets could be fetched.  Different
432   delivery methods MAY be advertised for the same session.  The in-band
433   Configuration delivery SHOULD be considered as baseline, out-of-band
434   delivery methods that don't use RTP will not be described in this
435   document.  For non chained streams, the Configuration recommended
436   delivery method is inline the Packed Configuration (Section 3.1.1) in
437   the SDP as explained in the IANA considerations (Section 7.1).
438
439   The 24 bit Ident field is used to map which Configuration will be
440   used to decode a packet.  When the Ident field changes, it indicates
441   that a change in the stream has taken place.  The client application
442   MUST have in advance the correct configuration and if the client
443   detects a change in the Ident value and does not have this
444
445
446
447Barbato                 Expires December 27, 2007               [Page 8]
448
449Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
450
451
452   information it MUST NOT decode the raw Vorbis data associated until
453   it fetches the correct Configuration.
454
4553.1.  In-band Header Transmission
456
457   The Packed Configuration (Section 3.1.1) Payload is sent in-band with
458   the packet type bits set to match the Vorbis Data Type.  Clients MUST
459   be capable of dealing with fragmentation and periodic re-transmission
460   of the configuration headers.
461
4623.1.1.  Packed Configuration
463
464   A Vorbis Packed Configuration is indicated with the Vorbis Data Type
465   field set to 1.  Of the three headers defined in the Vorbis I
466   specification [13], the identification and the setup MUST be packed
467   as they are, while the comment header MAY be replaced with a dummy
468   one.  The packed configuration follows a generic way to store xiph
469   codec configurations: The first field stores the number of the
470   following packets minus one (count field), the next ones represent
471   the size of the headers (length fields), the headers immediately
472   follow the list of length fields.  The size of the last header is
473   implicit.  The count and the length fields are encoded using the
474   following logic: the data is in network order, every byte has the
475   most significant bit used as flag and the following 7 used to store
476   the value.  The first N bit are to be taken, where N is number of
477   bits representing the value modulo 7, and stored in the first byte.
478   If there are more bits, the flag bit is set to 1 and the subsequent
479   7bit are stored in the following byte, if there are remaining bits
480   set the flag to 1 and the same procedure is repeated.  The ending
481   byte has the flag bit set to 0.  In order to decode it is enough to
482   iterate over the bytes until the flag bit set to 0, for every byte
483   the data is added to the accumulated value multiplied by 128.  The
484   headers are packed in the same order they are present in ogg:
485   identification, comment, setup.
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503Barbato                 Expires December 27, 2007               [Page 9]
504
505Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
506
507
508       0                   1                   2                   3
509       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
510      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
511      |V=2|P|X|  CC   |M|     PT      |             xxxx              |
512      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
513      |                             xxxxx                             |
514      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
515      |           synchronization source (SSRC) identifier            |
516      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
517      |            contributing source (CSRC) identifiers             |
518      |                              ...                              |
519      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
520      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
521      |                      Ident                    | 1 | 0 |      0|
522      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
523      |           length              | n. of headers |    length1    |
524      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
525      |    length2    |                  Identification              ..
526      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
527      ..                        Identification                       ..
528      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
529      ..                        Identification                       ..
530      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
531      ..                        Identification                       ..
532      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
533      ..               Identification                 |    Comment   ..
534      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
535      ..                            Comment                          ..
536      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
537      ..                            Comment                          ..
538      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
539      ..                            Comment                          ..
540      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
541      ..           Comment            |             Setup            ..
542      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
543      ..                            Setup                            ..
544      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
545      ..                            Setup                            ..
546      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
547
548                   Figure 5: Packed Configuration Figure
549
550   The Ident field is set with the value that will be used by the Raw
551   Payload Packets to address this Configuration.  The Fragment type is
552   set to 0 since the packet bears the full Packed configuration, the
553   number of packet is set to 1.
554
555
556
557
558
559Barbato                 Expires December 27, 2007              [Page 10]
560
561Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
562
563
5643.2.  Out of Band Transmission
565
566   This section, as stated above, does not cover all the possible out-
567   of-band delivery methods since they rely on different protocols and
568   are linked to specific applications.  The following packet definition
569   SHOULD be used in out-of-band delivery and MUST be used when
570   Configuration is inlined in the SDP.
571
5723.2.1.  Packed Headers
573
574   As mentioned above the RECOMMENDED delivery vector for Vorbis
575   configuration data is via a retrieval method that can be performed
576   using a reliable transport protocol.  As the RTP headers are not
577   required for this method of delivery the structure of the
578   configuration data is slightly different.  The packed header starts
579   with a 32 bit (network ordered) count field which details the number
580   of packed headers that are contained in the bundle.  Next is the
581   Packed header payload for each chained Vorbis stream.
582
583      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
584      |                     Number of packed headers                  |
585      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
586      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
587      |                          Packed header                        |
588      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
589      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
590      |                          Packed header                        |
591      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
592
593                     Figure 6: Packed Headers Overview
594
595   Since the Configuration Ident and the Identification Header are fixed
596   length there is only a 2 byte length tag to define the length of the
597   packed headers.
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615Barbato                 Expires December 27, 2007              [Page 11]
616
617Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
618
619
620       0                   1                   2                   3
621       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
622      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
623      |                   Ident                       |    length    ..
624      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
625      ..              | n. of headers |    length1    |    length2   ..
626      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
627      ..              |             Identification Header            ..
628      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
629      .................................................................
630      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
631      ..              |         Comment Header                       ..
632      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
633      .................................................................
634      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
635      ..                        Comment Header                        |
636      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
637      |                          Setup Header                        ..
638      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
639      .................................................................
640      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
641      ..                         Setup Header                         |
642      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
643
644                      Figure 7: Packed Headers Detail
645
646   The key difference between the in-band format and this one, is that
647   there is no need for the payload header octet.  In this figure the
648   comment has a size bigger than 127 bytes.
649
6503.3.  Loss of Configuration Headers
651
652   Unlike the loss of raw Vorbis payload data, loss of a configuration
653   header can lead to a situation where it will not be possible to
654   successfully decode the stream.
655
656   Loss of Configuration Packet results in the halting of stream
657   decoding.
658
659
6604.  Comment Headers
661
662   With the Vorbis Data Type flag set to 2, this indicates that the
663   packet contain the comment metadata, such as artist name, track title
664   and so on.  These metadata messages are not intended to be fully
665   descriptive but to offer basic track/song information.  Clients MAY
666   ignore it completely.  The details on the format of the comments can
667   be found in the Vorbis documentation [13].
668
669
670
671Barbato                 Expires December 27, 2007              [Page 12]
672
673Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
674
675
676       0                   1                   2                   3
677       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
678      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
679      |V=2|P|X|  CC   |M|     PT      |             xxxx              |
680      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
681      |                             xxxxx                             |
682      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
683      |           synchronization source (SSRC) identifier            |
684      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
685      |            contributing source (CSRC) identifiers             |
686      |                              ...                              |
687      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
688      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
689      |                      Ident                    | 0 | 2 |      1|
690      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
691      |            length             |            Comment           ..
692      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
693      ..                           Comment                           ..
694      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
695      ..                           Comment                            |
696      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
697
698                         Figure 8: Comment Packet
699
700   The 2 bytes length field is necessary since this packet could be
701   fragmented.
702
703
7045.  Frame Packetization
705
706   Each RTP packet contains either one Vorbis packet fragment, or an
707   integer number of complete Vorbis packets (up to a maximum of 15
708   packets, since the number of packets is defined by a 4 bit value).
709
710   Any Vorbis data packet that is less than path MTU SHOULD be bundled
711   in the RTP packet with as many Vorbis packets as will fit, up to a
712   maximum of 15, except when such bundling would exceed an
713   application's desired transmission latency.  Path MTU is detailed in
714   [6] and [7].
715
716   A fragmented packet has a zero in the last four bits of the payload
717   header.  The first fragment will set the Fragment type to 1.  Each
718   fragment after the first will set the Fragment type to 2 in the
719   payload header.  The RTP packet containing the last fragment of the
720   Vorbis packet will have the Fragment type set to 3.  To maintain the
721   correct sequence for fragmented packet reception the timestamp field
722   of fragmented packets MUST be the same as the first packet sent, with
723   the sequence number incremented as normal for the subsequent RTP
724
725
726
727Barbato                 Expires December 27, 2007              [Page 13]
728
729Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
730
731
732   packets.  The length field shows the fragment length.
733
7345.1.  Example Fragmented Vorbis Packet
735
736   Here is an example fragmented Vorbis packet split over three RTP
737   packets.  Each packet contains the standard RTP headers as well as
738   the 4 octets Vorbis headers.
739
740      Packet 1:
741
742       0                   1                   2                   3
743       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
744      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
745      |V=2|P|X|  CC   |M|     PT      |           1000                |
746      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
747      |                            12345                              |
748      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
749      |           synchronization source (SSRC) identifier            |
750      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
751      |            contributing source (CSRC) identifiers             |
752      |                              ...                              |
753      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
754      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
755      |                       Ident                   | 1 | 0 |      0|
756      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
757      |             length            |            vorbis data       ..
758      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
759      ..                        vorbis data                           |
760      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
761
762              Figure 9: Example Fragmented Packet (Packet 1)
763
764   In this packet the initial sequence number is 1000 and the timestamp
765   is 12345.  The Fragment type is set to 1, the number of packets field
766   is set to 0, and as the payload is raw Vorbis data the VDT field is
767   set to 0.
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783Barbato                 Expires December 27, 2007              [Page 14]
784
785Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
786
787
788      Packet 2:
789
790       0                   1                   2                   3
791       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
792      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
793      |V=2|P|X|  CC   |M|     PT      |           1001                |
794      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
795      |                             12345                             |
796      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
797      |           synchronization source (SSRC) identifier            |
798      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
799      |            contributing source (CSRC) identifiers             |
800      |                              ...                              |
801      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
802      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
803      |                       Ident                   | 2 | 0 |      0|
804      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
805      |             length            |          vorbis data         ..
806      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
807      ..                        vorbis data                           |
808      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
809
810              Figure 10: Example Fragmented Packet (Packet 2)
811
812   The Fragment type field is set to 2 and the number of packets field
813   is set to 0.  For large Vorbis fragments there can be several of
814   these type of payload packets.  The maximum packet size SHOULD be no
815   greater than the path MTU, including all RTP and payload headers.
816   The sequence number has been incremented by one but the timestamp
817   field remains the same as the initial packet.
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839Barbato                 Expires December 27, 2007              [Page 15]
840
841Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
842
843
844      Packet 3:
845
846       0                   1                   2                   3
847       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
848      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
849      |V=2|P|X|  CC   |M|     PT      |           1002                |
850      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
851      |                             12345                             |
852      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
853      |           synchronization source (SSRC) identifier            |
854      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
855      |            contributing source (CSRC) identifiers             |
856      |                              ...                              |
857      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
858      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
859      |                      Ident                    | 3 | 0 |      0|
860      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
861      |             length            |          vorbis data         ..
862      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
863      ..                        vorbis data                           |
864      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
865
866              Figure 11: Example Fragmented Packet (Packet 3)
867
868   This is the last Vorbis fragment packet.  The Fragment type is set to
869   3 and the packet count remains set to 0.  As in the previous packets
870   the timestamp remains set to the first packet in the sequence and the
871   sequence number has been incremented.
872
8735.2.  Packet Loss
874
875   As there is no error correction within the Vorbis stream, packet loss
876   will result in a loss of signal.  Packet loss is more of an issue for
877   fragmented Vorbis packets as the client will have to cope with the
878   handling of the Fragment Type.  In case of loss of fragments the
879   client MUST discard all the remaining fragments and decode the
880   incomplete packet.  If we use the fragmented Vorbis packet example
881   above and the first packet is lost the client MUST detect that the
882   next packet has the packet count field set to 0 and the Fragment type
883   2 and MUST drop it.  The next packet, which is the final fragmented
884   packet, MUST be dropped in the same manner.  If the missing packet is
885   the last, the received two fragments will be kept and the incomplete
886   vorbis packet decoded.
887
888   Loss of any of the Configuration fragment will result in the loss of
889   the full Configuration packet with the result detailed in the Loss of
890   Configuration Headers (Section 3.3) section.
891
892
893
894
895Barbato                 Expires December 27, 2007              [Page 16]
896
897Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
898
899
9006.  IANA Considerations
901
902   Type name:  audio
903
904   Subtype name:  vorbis
905
906   Required parameters:
907
908      rate:  indicates the RTP timestamp clock rate as described in RTP
909         Profile for Audio and Video Conferences with Minimal Control.
910         [3]
911
912      channels:  indicates the number of audio channels as described in
913         RTP Profile for Audio and Video Conferences with Minimal
914         Control. [3]
915
916      delivery-method:  indicates the delivery methods in use, the
917         possible values are: inline, in_band, out_band, MAY be included
918         multiple times
919
920      configuration:  the base64 [9] representation of the Packed
921         Headers (Section 3.2.1).  It MUST follow the associated
922         delivery-method parameter ("inline").
923
924   Optional parameters:
925
926      configuration-uri:  the URI [4] of the configuration headers in
927         case of out of band transmission.  In the form of
928         "protocol://path/to/resource/", depending on the specific
929         method, a single configuration packet could be retrived by its
930         Ident number, or multiple packets could be aggregated in a
931         single stream.  Such aggregates MAY be compressed using either
932         bzip2 [16] or gzip [14].  A sha1 [10] checksum MAY be provided
933         for aggregates.  In this latter case the URI will end with the
934         aggregate name, followed by its compressed extension if
935         applies, a "!" and the base64 [9] representation of the
936         sha1hash of the above mentioned compressed aggregated as in:
937         "protocol://path/to/resource/aggregated.bz2!sha1hash".  The
938         trailing '/' discriminates which of two methods are in use.
939         The configuration-uri MUST follow the associated delivery
940         method parameter ("out_band").  Non hierarchical protocols and
941         protocols using for special purposes the '!' separator MAY
942         point just to a resource aggregate using their specific syntax.
943
944
945
946
947
948
949
950
951Barbato                 Expires December 27, 2007              [Page 17]
952
953Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
954
955
956   Encoding considerations:
957
958      This media type is framed and contains binary data.
959
960   Security considerations:
961
962      See Section 10 of RFC XXXX.
963
964   Interoperability considerations:
965
966      None
967
968   Published specification:
969
970      RFC XXXX [RFC Editor: please replace by the RFC number of this
971      memo, when published]
972
973      Ogg Vorbis I specification: Codec setup and packet decode.
974      Available from the Xiph website, http://www.xiph.org
975
976   Applications which use this media type:
977
978      Audio streaming and conferencing tools
979
980   Additional information:
981
982      None
983
984   Person & email address to contact for further information:
985
986      Luca Barbato: <lu_zero@gentoo.org> IETF Audio/Video Transport
987      Working Group
988
989   Intended usage:
990
991      COMMON
992
993   Restriction on usage:
994
995      This media type depends on RTP framing, and hence is only defined
996      for transfer via RTP [2]
997
998   Author:
999
1000      Luca Barbato
1001
1002
1003
1004
1005
1006
1007Barbato                 Expires December 27, 2007              [Page 18]
1008
1009Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1010
1011
1012   Change controller:
1013
1014      IETF AVT Working Group delegated from the IESG
1015
1016
10176.1.  Packed Headers IANA Considerations
1018
1019   The following IANA considerations MUST only be applied to the packed
1020   headers.
1021
1022   Type name:  audio
1023
1024   Subtype name:  vorbis-config
1025
1026   Required parameters:
1027
1028      None
1029
1030   Optional parameters:
1031
1032      None
1033
1034   Encoding considerations:
1035
1036      This media type contains binary data.
1037
1038   Security considerations:
1039
1040      See Section 10 of RFC XXXX.
1041
1042   Interoperability considerations:
1043
1044      None
1045
1046   Published specification:
1047
1048      RFC XXXX [RFC Editor: please replace by the RFC number of this
1049      memo, when published]
1050
1051   Applications which use this media type:
1052
1053      Vorbis encoded audio, configuration data.
1054
1055   Additional information:
1056
1057      None
1058
1059
1060
1061
1062
1063Barbato                 Expires December 27, 2007              [Page 19]
1064
1065Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1066
1067
1068   Person & email address to contact for further information:
1069
1070      Luca Barbato: <lu_zero@gentoo.org>
1071      IETF Audio/Video Transport Working Group
1072
1073   Intended usage:  COMMON
1074
1075   Restriction on usage:
1076
1077      This media type doesn't depend on the transport.
1078
1079   Author:
1080
1081      Luca Barbato
1082
1083   Change controller:
1084
1085      IETF AVT Working Group delegated from the IESG
1086
1087
10887.  SDP related considerations
1089
1090   The following paragraphs defines the mapping of the parameters
1091   described in the IANA considerations section and their usage in the
1092   Offer/Answer Model [8].
1093
10947.1.  Mapping Media Type Parameters into SDP
1095
1096   The information carried in the Media Type media type specification
1097   has a specific mapping to fields in the Session Description Protocol
1098   (SDP) [5], which is commonly used to describe RTP sessions.  When SDP
1099   is used to specify sessions the mapping are as follows:
1100
1101   o  The type name ("audio") goes in SDP "m=" as the media name.
1102
1103   o  The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding
1104      name.
1105
1106   o  The parameter "rate" also goes in "a=rtpmap" as clock rate.
1107
1108   o  The parameter "channels" also goes in "a=rtpmap" as channel count.
1109
1110   o  The mandated parameters "delivery-method" and "configuration" MUST
1111      be included in the SDP "a=fmtp" attribute.
1112
1113   o  The optional parameter "configuration-uri", when present, MUST be
1114      included in the SDP "a=fmtp" attribute and MUST follow the
1115      delivery-method that applies.
1116
1117
1118
1119Barbato                 Expires December 27, 2007              [Page 20]
1120
1121Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1122
1123
1124   If the stream comprises chained Vorbis files and all of them are
1125   known in advance, the Configuration Packet for each file SHOULD be
1126   passed to the client using the configuration attribute.
1127
1128   The URI specified in the configuration-uri attribute MUST point to a
1129   location where all of the Configuration Packets needed for the life
1130   of the session reside.
1131
1132   The port value is specified by the server application bound to the
1133   address specified in the c= line.  The bitrate value and channels
1134   specified in the rtpmap attribute MUST match the Vorbis sample rate
1135   value.  An example is found below.
1136
11377.1.1.  SDP Example
1138
1139   The following example shows a basic SDP single stream.  The first
1140   configuration packet is inlined in the sdp, other configurations
1141   could be fetched at any time from the first provided uri using or all
1142   the known configuration could be downloaded using the second uri.
1143   The inline base64 [9] configuration string is omitted because of the
1144   length.
1145      c=IN IP4 192.0.2.1
1146      m=audio RTP/AVP 98
1147      a=rtpmap:98 vorbis/44100/2
1148      a=fmtp:98 delivery-method=inline; configuration=base64string;
1149      delivery-method=out_band;
1150      configuration-uri=rtsp://path/to/the/resource; delivery-
1151      method=out_band; configuration-uri=http://another/path/to/
1152      resource/aggregate.bz2!8b6237eb5154a0ea12811a94e8e2697b3312bc6c;
1153
1154   Note that the payload format (encoding) names are commonly shown in
1155   upper case.  Media Type subtypes are commonly shown in lower case.
1156   These names are case-insensitive in both places.  Similarly,
1157   parameter names are case-insensitive both in Media Type types and in
1158   the default mapping to the SDP a=fmtp attribute.  The exception
1159   regarding case sensitivity is the configuration-uri URI which MUST be
1160   regarded as being case sensitive.  The a=fmtp line is a single line
1161   even if it is presented broken because of clarity.
1162
11637.2.  Usage with the SDP Offer/Answer Model
1164
1165   The only paramenter negotiable is the delivery method.  All the
1166   others are declarative: the offer, as described in An Offer/Answer
1167   Model Session Description Protocol [8], may contain a large number of
1168   delivery methods per single fmtp attribute, the answerer MUST remove
1169   every delivery-method and configuration-uri not supported.  All the
1170   parameters MUST not be altered on answer otherwise.
1171
1172
1173
1174
1175Barbato                 Expires December 27, 2007              [Page 21]
1176
1177Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1178
1179
11808.  Congestion Control
1181
1182   Vorbis clients SHOULD send regular receiver reports detailing
1183   congestion.  A mechanism for dynamically downgrading the stream,
1184   known as bitrate peeling, will allow for a graceful backing off of
1185   the stream bitrate.  This feature is not available at present so an
1186   alternative would be to redirect the client to a lower bitrate stream
1187   if one is available.
1188
1189
11909.  Examples
1191
1192   The following examples are common usage patterns that MAY be applied
1193   in such situations, the main scope of this section is to explain
1194   better usage of the transmission vectors.
1195
11969.1.  Stream Radio
1197
1198   This is one of the most common situation: one single server streaming
1199   content in multicast, the clients may start a session at random time.
1200   The content itself could be a mix of live stream, as the wj's voice,
1201   and stored streams as the music she plays.
1202
1203   In this situation we don't know in advance how many codebooks we will
1204   use.  The clients can join anytime and users expect to start
1205   listening to the content in a short time.
1206
1207   On join the client will receive the current Configuration necessary
1208   to decode the current stream inlined in the SDP so that the decoding
1209   will start immediately after.
1210
1211   When the streamed content changes the new Configuration is sent in-
1212   band before the actual stream, and the Configuration that has to be
1213   sent inline in the SDP updated.  Since the in-band method is
1214   unreliable, an out of band fallback is provided.
1215
1216   The client could choose to fetch the Configuration from the alternate
1217   source as soon as it discovers a Configuration packet got lost in-
1218   band or use selective retransmission [15], if the server supports the
1219   feature.
1220
1221   A serverside optimization would be to keep an hash list of the
1222   Configurations per session to avoid packing all of them and send the
1223   same Configuration with different Ident tags
1224
1225   A clientside optimization would be to keep a tag list of the
1226   Configurations per session and don't process configuration packets
1227   already known.
1228
1229
1230
1231Barbato                 Expires December 27, 2007              [Page 22]
1232
1233Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1234
1235
123610.  Security Considerations
1237
1238   RTP packets using this payload format are subject to the security
1239   considerations discussed in the RTP specification [2].  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.  Additional care MAY be needed for delivery methods
1244   that point to external resources, using secure protocols to fetch the
1245   configuration payloads.  Where the size of a data block is set, care
1246   MUST be taken to prevent buffer overflows in the client applications.
1247
1248
124911.  Acknowledgments
1250
1251   This document is a continuation of draft-moffitt-vorbis-rtp-00.txt
1252   and draft-kerr-avt-vorbis-rtp-04.txt.  The Media Type type section is
1253   a continuation of draft-short-avt-rtp-vorbis-mime-00.txt.
1254
1255   Thanks to the AVT, Ogg Vorbis Communities / Xiph.org including Steve
1256   Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia, Pascal
1257   Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John Lazzaro,
1258   Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry Short,
1259   Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund, David
1260   Barrett, Silvia Pfeiffer, Stefan Ehmann, Alessandro Salvatori.
1261   Politecnico di Torino (LS)^3/IMG Group in particular Federico
1262   Ridolfo, Francesco Varano, Giampaolo Mancini, Dario Gallucci, Juan
1263   Carlos De Martin.
1264
1265
126612.  References
1267
126812.1.  Normative References
1269
1270   [1]   Bradner, S., "Key words for use in RFCs to Indicate Requirement
1271         Levels", RFC 2119.
1272
1273   [2]   Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
1274         "RTP: A Transport Protocol for real-time applications",
1275         RFC 3550.
1276
1277   [3]   Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
1278         Conferences with Minimal Control.", RFC 3551.
1279
1280   [4]   Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
1281         Resource Identifier (URI): Generic Syntax", RFC 3986.
1282
1283   [5]   Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
1284
1285
1286
1287Barbato                 Expires December 27, 2007              [Page 23]
1288
1289Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1290
1291
1292         Description Protocol", RFC 4566, July 2006.
1293
1294   [6]   Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
1295         November 1990.
1296
1297   [7]   McCann et al., J., "Path MTU Discovery for IP version 6",
1298         RFC 1981.
1299
1300   [8]   Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
1301         Session Description Protocol (SDP)", RFC 3264.
1302
1303   [9]   Josefsson, S., "The Base16, Base32, and Base64 Data Encodings",
1304         RFC 3548.
1305
1306   [10]  National Institute of Standards and Technology, "Secure Hash
1307         Standard", May 1993.
1308
130912.2.  Informative References
1310
1311   [11]  Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
1312         RFC 3533.
1313
1314   [12]  "libvorbis: Available from the Xiph website,
1315         http://www.xiph.org".
1316
1317   [13]  "Ogg Vorbis I specification:  Codec setup and packet decode.
1318         Available from the Xiph website, http://www.xiph.org".
1319
1320   [14]  Deutsch, P., "GZIP file format specification version 4.3",
1321         RFC 1952.
1322
1323   [15]  Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol
1324         Extended Reports (RTCP XR)", RFC 3611, November 2003.
1325
1326   [16]  Seward, J., "libbz2 and bzip2".
1327
1328
1329Author's Address
1330
1331   Luca Barbato
1332   Xiph.Org
1333
1334   Email: lu_zero@gentoo.org
1335   URI:   http://www.xiph.org/
1336
1337
1338
1339
1340
1341
1342
1343Barbato                 Expires December 27, 2007              [Page 24]
1344
1345Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
1346
1347
1348Full Copyright Statement
1349
1350   Copyright (C) The IETF Trust (2007).
1351
1352   This document is subject to the rights, licenses and restrictions
1353   contained in BCP 78, and except as set forth therein, the authors
1354   retain all their rights.
1355
1356   This document and the information contained herein are provided on an
1357   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1358   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
1359   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
1360   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
1361   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1362   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1363
1364
1365Intellectual Property
1366
1367   The IETF takes no position regarding the validity or scope of any
1368   Intellectual Property Rights or other rights that might be claimed to
1369   pertain to the implementation or use of the technology described in
1370   this document or the extent to which any license under such rights
1371   might or might not be available; nor does it represent that it has
1372   made any independent effort to identify any such rights.  Information
1373   on the procedures with respect to rights in RFC documents can be
1374   found in BCP 78 and BCP 79.
1375
1376   Copies of IPR disclosures made to the IETF Secretariat and any
1377   assurances of licenses to be made available, or the result of an
1378   attempt made to obtain a general license or permission for the use of
1379   such proprietary rights by implementers or users of this
1380   specification can be obtained from the IETF on-line IPR repository at
1381   http://www.ietf.org/ipr.
1382
1383   The IETF invites any interested party to bring to its attention any
1384   copyrights, patents or patent applications, or other proprietary
1385   rights that may cover technology that may be required to implement
1386   this standard.  Please address the information to the IETF at
1387   ietf-ipr@ietf.org.
1388
1389
1390Acknowledgment
1391
1392   Funding for the RFC Editor function is provided by the IETF
1393   Administrative Support Activity (IASA).
1394
1395
1396
1397
1398
1399Barbato                 Expires December 27, 2007              [Page 25]
1400
1401
Note: See TracBrowser for help on using the repository browser.