Updates to Tomato RAF including NGINX && PHP
[tomato.git] / release / src / router / libvorbis / doc / rfc5215.txt
blob67adf92a8bdf7e0997becabd4e02ef2dec3f041a
7 Network Working Group                                         L. Barbato
8 Request for Comments: 5215                                          Xiph
9 Category: Standards Track                                    August 2008
12               RTP Payload Format for Vorbis Encoded Audio
14 Status of This Memo
16    This document specifies an Internet standards track protocol for the
17    Internet community, and requests discussion and suggestions for
18    improvements.  Please refer to the current edition of the "Internet
19    Official Protocol Standards" (STD 1) for the standardization state
20    and status of this protocol.  Distribution of this memo is unlimited.
22 Abstract
24    This document describes an RTP payload format for transporting Vorbis
25    encoded audio.  It details the RTP encapsulation mechanism for raw
26    Vorbis data and the delivery mechanisms for the decoder probability
27    model (referred to as a codebook), as well as other setup
28    information.
30    Also included within this memo are media type registrations and the
31    details necessary for the use of Vorbis with the Session Description
32    Protocol (SDP).
58 Barbato                     Standards Track                     [Page 1]
60 RFC 5215               Vorbis RTP Payload Format             August 2008
63 Table of Contents
65    1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
66      1.1.  Conformance and Document Conventions . . . . . . . . . . .  3
67    2.  Payload Format . . . . . . . . . . . . . . . . . . . . . . . .  3
68      2.1.  RTP Header . . . . . . . . . . . . . . . . . . . . . . . .  4
69      2.2.  Payload Header . . . . . . . . . . . . . . . . . . . . . .  5
70      2.3.  Payload Data . . . . . . . . . . . . . . . . . . . . . . .  6
71      2.4.  Example RTP Packet . . . . . . . . . . . . . . . . . . . .  8
72    3.  Configuration Headers  . . . . . . . . . . . . . . . . . . . .  8
73      3.1.  In-band Header Transmission  . . . . . . . . . . . . . . .  9
74        3.1.1.  Packed Configuration . . . . . . . . . . . . . . . . . 10
75      3.2.  Out of Band Transmission . . . . . . . . . . . . . . . . . 12
76        3.2.1.  Packed Headers . . . . . . . . . . . . . . . . . . . . 12
77      3.3.  Loss of Configuration Headers  . . . . . . . . . . . . . . 13
78    4.  Comment Headers  . . . . . . . . . . . . . . . . . . . . . . . 13
79    5.  Frame Packetization  . . . . . . . . . . . . . . . . . . . . . 14
80      5.1.  Example Fragmented Vorbis Packet . . . . . . . . . . . . . 15
81      5.2.  Packet Loss  . . . . . . . . . . . . . . . . . . . . . . . 17
82    6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 18
83      6.1.  Packed Headers IANA Considerations . . . . . . . . . . . . 19
84    7.  SDP Related Considerations . . . . . . . . . . . . . . . . . . 20
85      7.1.  Mapping Media Type Parameters into SDP . . . . . . . . . . 20
86        7.1.1.  SDP Example  . . . . . . . . . . . . . . . . . . . . . 21
87      7.2.  Usage with the SDP Offer/Answer Model  . . . . . . . . . . 22
88    8.  Congestion Control . . . . . . . . . . . . . . . . . . . . . . 22
89    9.  Example  . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
90      9.1.  Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 22
91    10. Security Considerations  . . . . . . . . . . . . . . . . . . . 23
92    11. Copying Conditions . . . . . . . . . . . . . . . . . . . . . . 23
93    12. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 23
94    13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
95      13.1. Normative References . . . . . . . . . . . . . . . . . . . 24
96      13.2. Informative References . . . . . . . . . . . . . . . . . . 25
114 Barbato                     Standards Track                     [Page 2]
116 RFC 5215               Vorbis RTP Payload Format             August 2008
119 1.  Introduction
121    Vorbis is a general purpose perceptual audio codec intended to allow
122    maximum encoder flexibility, thus allowing it to scale competitively
123    over an exceptionally wide range of bit rates.  At the high quality/
124    bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is
125    in the same league as MPEG-4 AAC.  Vorbis is also intended for lower
126    and higher sample rates (from 8kHz telephony to 192kHz digital
127    masters) and a range of channel representations (monaural,
128    polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255
129    discrete channels).
131    Vorbis encoded audio is generally encapsulated within an Ogg format
132    bitstream [RFC3533], which provides framing and synchronization.  For
133    the purposes of RTP transport, this layer is unnecessary, and so raw
134    Vorbis packets are used in the payload.
136 1.1.  Conformance and Document Conventions
138    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
139    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
140    document are to be interpreted as described in BCP 14, [RFC2119] and
141    indicate requirement levels for compliant implementations.
142    Requirements apply to all implementations unless otherwise stated.
144    An implementation is a software module that supports one of the media
145    types defined in this document.  Software modules may support
146    multiple media types, but conformance is considered individually for
147    each type.
149    Implementations that fail to satisfy one or more "MUST" requirements
150    are considered non-compliant.  Implementations that satisfy all
151    "MUST" requirements, but fail to satisfy one or more "SHOULD"
152    requirements, are said to be "conditionally compliant".  All other
153    implementations are "unconditionally compliant".
155 2.  Payload Format
157    For RTP-based transport of Vorbis-encoded audio, the standard RTP
158    header is followed by a 4-octet payload header, and then the payload
159    data.  The payload headers are used to associate the Vorbis data with
160    its associated decoding codebooks as well as indicate if the
161    following packet contains fragmented Vorbis data and/or the number of
162    whole Vorbis data frames.  The payload data contains the raw Vorbis
163    bitstream information.  There are 3 types of Vorbis data; an RTP
164    payload MUST contain just one of them at a time.
170 Barbato                     Standards Track                     [Page 3]
172 RFC 5215               Vorbis RTP Payload Format             August 2008
175 2.1.  RTP Header
177    The format of the RTP header is specified in [RFC3550] and shown in
178    Figure 1.  This payload format uses the fields of the header in a
179    manner consistent with that specification.
181        0                   1                   2                   3
182        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
183       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
184       |V=2|P|X|  CC   |M|     PT      |       sequence number         |
185       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
186       |                           timestamp                           |
187       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
188       |           synchronization source (SSRC) identifier            |
189       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
190       |            contributing source (CSRC) identifiers             |
191       |                              ...                              |
192       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
194                            Figure 1: RTP Header
196    The RTP header begins with an octet of fields (V, P, X, and CC) to
197    support specialized RTP uses (see [RFC3550] and [RFC3551] for
198    details).  For Vorbis RTP, the following values are used.
200    Version (V): 2 bits
202    This field identifies the version of RTP.  The version used by this
203    specification is two (2).
205    Padding (P): 1 bit
207    Padding MAY be used with this payload format according to Section 5.1
208    of [RFC3550].
210    Extension (X): 1 bit
212    The Extension bit is used in accordance with [RFC3550].
214    CSRC count (CC): 4 bits
216    The CSRC count is used in accordance with [RFC3550].
218    Marker (M): 1 bit
220    Set to zero.  Audio silence suppression is not used.  This conforms
221    to Section 4.1 of [VORBIS-SPEC-REF].
226 Barbato                     Standards Track                     [Page 4]
228 RFC 5215               Vorbis RTP Payload Format             August 2008
231    Payload Type (PT): 7 bits
233    An RTP profile for a class of applications is expected to assign a
234    payload type for this format, or a dynamically allocated payload type
235    SHOULD be chosen that designates the payload as Vorbis.
237    Sequence number: 16 bits
239    The sequence number increments by one for each RTP data packet sent,
240    and may be used by the receiver to detect packet loss and to restore
241    the packet sequence.  This field is detailed further in [RFC3550].
243    Timestamp: 32 bits
245    A timestamp representing the sampling time of the first sample of the
246    first Vorbis packet in the RTP payload.  The clock frequency MUST be
247    set to the sample rate of the encoded audio data and is conveyed out-
248    of-band (e.g., as an SDP parameter).
250    SSRC/CSRC identifiers:
252    These two fields, 32 bits each with one SSRC field and a maximum of
253    16 CSRC fields, are as defined in [RFC3550].
255 2.2.  Payload Header
257    The 4 octets following the RTP Header section are the Payload Header.
258    This header is split into a number of bit fields detailing the format
259    of the following payload data packets.
261        0                   1                   2                   3
262        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
263       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
264       |                     Ident                     | F |VDT|# pkts.|
265       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
267                          Figure 2: Payload Header
269    Ident: 24 bits
271    This 24-bit field is used to associate the Vorbis data to a decoding
272    Configuration.  It is stored as a network byte order integer.
274    Fragment type (F): 2 bits
282 Barbato                     Standards Track                     [Page 5]
284 RFC 5215               Vorbis RTP Payload Format             August 2008
287    This field is set according to the following list:
289       0 = Not Fragmented
291       1 = Start Fragment
293       2 = Continuation Fragment
295       3 = End Fragment
297    Vorbis Data Type (VDT): 2 bits
299    This field specifies the kind of Vorbis data stored in this RTP
300    packet.  There are currently three different types of Vorbis
301    payloads.  Each packet MUST contain only a single type of Vorbis
302    packet (e.g., you must not aggregate configuration and comment
303    packets in the same RTP payload).
305       0 = Raw Vorbis payload
307       1 = Vorbis Packed Configuration payload
309       2 = Legacy Vorbis Comment payload
311       3 = Reserved
313    The packets with a VDT of value 3 MUST be ignored.
315    The last 4 bits represent the number of complete packets in this
316    payload.  This provides for a maximum number of 15 Vorbis packets in
317    the payload.  If the payload contains fragmented data, the number of
318    packets MUST be set to 0.
320 2.3.  Payload Data
322    Raw Vorbis packets are currently unbounded in length; application
323    profiles will likely define a practical limit.  Typical Vorbis packet
324    sizes range from very small (2-3 bytes) to quite large (8-12
325    kilobytes).  The reference implementation [LIBVORBIS] typically
326    produces packets less than ~800 bytes, except for the setup header
327    packets, which are ~4-12 kilobytes.  Within an RTP context, to avoid
328    fragmentation, the Vorbis data packet size SHOULD be kept
329    sufficiently small so that after adding the RTP and payload headers,
330    the complete RTP packet is smaller than the path MTU.
338 Barbato                     Standards Track                     [Page 6]
340 RFC 5215               Vorbis RTP Payload Format             August 2008
343        0                   1                   2                   3
344        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
345       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
346       |            length             |       vorbis packet data     ..
347       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
349                        Figure 3: Payload Data Header
351    Each Vorbis payload packet starts with a two octet length header,
352    which is used to represent the size in bytes of the following data
353    payload, and is followed by the raw Vorbis data padded to the nearest
354    byte boundary, as explained by the Vorbis I Specification
355    [VORBIS-SPEC-REF].  The length value is stored as a network byte
356    order integer.
358    For payloads that consist of multiple Vorbis packets, the payload
359    data consists of the packet length followed by the packet data for
360    each of the Vorbis packets in the payload.
362    The Vorbis packet length header is the length of the Vorbis data
363    block only and does not include the length field.
365    The payload packing of the Vorbis data packets MUST follow the
366    guidelines set out in [RFC3551], where the oldest Vorbis packet
367    occurs immediately after the RTP packet header.  Subsequent Vorbis
368    packets, if any, MUST follow in temporal order.
370    Audio channel mapping is in accordance with the Vorbis I
371    Specification [VORBIS-SPEC-REF].
394 Barbato                     Standards Track                     [Page 7]
396 RFC 5215               Vorbis RTP Payload Format             August 2008
399 2.4.  Example RTP Packet
401    Here is an example RTP payload containing two Vorbis packets.
403        0                   1                   2                   3
404        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
405       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
406       | 2 |0|0|  0    |0|      PT     |       sequence number         |
407       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
408       |               timestamp (in sample rate units)                |
409       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
410       |           synchronisation source (SSRC) identifier            |
411       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
412       |            contributing source (CSRC) identifiers             |
413       |                              ...                              |
414       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
415       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
416       |                     Ident                     | 0 | 0 | 2 pks |
417       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
418       |            length             |          vorbis data         ..
419       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
420       ..                        vorbis data                           |
421       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
422       |            length             |   next vorbis packet data    ..
423       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
424       ..                        vorbis data                          ..
425       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
426       ..               vorbis data                    |
427       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
429                     Figure 4: Example Raw Vorbis Packet
431    The payload data section of the RTP packet begins with the 24-bit
432    Ident field followed by the one octet bit field header, which has the
433    number of Vorbis frames set to 2.  Each of the Vorbis data frames is
434    prefixed by the two octets length field.  The Packet Type and
435    Fragment Type are set to 0.  The Configuration that will be used to
436    decode the packets is the one indexed by the ident value.
438 3.  Configuration Headers
440    Unlike other mainstream audio codecs, Vorbis has no statically
441    configured probability model.  Instead, it packs all entropy decoding
442    configuration, Vector Quantization and Huffman models into a data
443    block that must be transmitted to the decoder with the compressed
444    data.  A decoder also requires information detailing the number of
445    audio channels, bitrates, and similar information to configure itself
446    for a particular compressed data stream.  These two blocks of
450 Barbato                     Standards Track                     [Page 8]
452 RFC 5215               Vorbis RTP Payload Format             August 2008
455    information are often referred to collectively as the "codebooks" for
456    a Vorbis stream, and are included as special "header" packets at the
457    start of the compressed data.  In addition, the Vorbis I
458    specification [VORBIS-SPEC-REF] requires the presence of a comment
459    header packet that gives simple metadata about the stream, but this
460    information is not required for decoding the frame sequence.
462    Thus, these two codebook header packets must be received by the
463    decoder before any audio data can be interpreted.  These requirements
464    pose problems in RTP, which is often used over unreliable transports.
466    Since this information must be transmitted reliably and, as the RTP
467    stream may change certain configuration data mid-session, there are
468    different methods for delivering this configuration data to a client,
469    both in-band and out-of-band, which are detailed below.  In order to
470    set up an initial state for the client application, the configuration
471    MUST be conveyed via the signalling channel used to set up the
472    session.  One example of such signalling is SDP [RFC4566] with the
473    Offer/Answer Model [RFC3264].  Changes to the configuration MAY be
474    communicated via a re-invite, conveying a new SDP, or sent in-band in
475    the RTP channel.  Implementations MUST support an in-band delivery of
476    updated codebooks, and SHOULD support out-of-band codebook update
477    using a new SDP file.  The changes may be due to different codebooks
478    as well as different bitrates of the RTP stream.
480    For non-chained streams, the recommended Configuration delivery
481    method is inside the Packed Configuration (Section 3.1.1) in the SDP
482    as explained the Mapping Media Type Parameters into SDP
483    (Section 7.1).
485    The 24-bit Ident field is used to map which Configuration will be
486    used to decode a packet.  When the Ident field changes, it indicates
487    that a change in the stream has taken place.  The client application
488    MUST have in advance the correct configuration.  If the client
489    detects a change in the Ident value and does not have this
490    information, it MUST NOT decode the raw associated Vorbis data until
491    it fetches the correct Configuration.
493 3.1.  In-band Header Transmission
495    The Packed Configuration (Section 3.1.1) Payload is sent in-band with
496    the packet type bits set to match the Vorbis Data Type.  Clients MUST
497    be capable of dealing with fragmentation and periodic re-transmission
498    of [RFC4588] the configuration headers.  The RTP timestamp value MUST
499    reflect the transmission time of the first data packet for which this
500    configuration applies.
506 Barbato                     Standards Track                     [Page 9]
508 RFC 5215               Vorbis RTP Payload Format             August 2008
511 3.1.1.  Packed Configuration
513    A Vorbis Packed Configuration is indicated with the Vorbis Data Type
514    field set to 1.  Of the three headers defined in the Vorbis I
515    specification [VORBIS-SPEC-REF], the Identification and the Setup
516    MUST be packed as they are, while the Comment header MAY be replaced
517    with a dummy one.
519    The packed configuration stores Xiph codec configurations in a
520    generic way: the first field stores the number of the following
521    packets minus one (count field), the next ones represent the size of
522    the headers (length fields), and the headers immediately follow the
523    list of length fields.  The size of the last header is implicit.
525    The count and the length fields are encoded using the following
526    logic: the data is in network byte order; every byte has the most
527    significant bit used as a flag, and the following 7 bits are used to
528    store the value.  The first 7 most significant bits are stored in the
529    first byte.  If there are remaining bits, the flag bit is set to 1
530    and the subsequent 7 bits are stored in the following byte.  If there
531    are remaining bits, set the flag to 1 and the same procedure is
532    repeated.  The ending byte has the flag bit set to 0.  To decode,
533    simply iterate over the bytes until the flag bit is set to 0.  For
534    every byte, the data is added to the accumulated value multiplied by
535    128.
537    The headers are packed in the same order as they are present in Ogg
538    [VORBIS-SPEC-REF]: Identification, Comment, Setup.
540    The 2 byte length tag defines the length of the packed headers as the
541    sum of the Configuration, Comment, and Setup lengths.
562 Barbato                     Standards Track                    [Page 10]
564 RFC 5215               Vorbis RTP Payload Format             August 2008
567        0                   1                   2                   3
568        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
569       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
570       |V=2|P|X|  CC   |M|     PT      |             xxxx              |
571       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
572       |                             xxxxx                             |
573       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
574       |           synchronization source (SSRC) identifier            |
575       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
576       |            contributing source (CSRC) identifiers             |
577       |                              ...                              |
578       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
579       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
580       |                      Ident                    | 0 | 1 |      1|
581       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
582       |           length              | n. of headers |    length1    |
583       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
584       |    length2    |                  Identification              ..
585       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
586       ..                        Identification                       ..
587       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
588       ..                        Identification                       ..
589       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
590       ..                        Identification                       ..
591       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
592       ..               Identification                 |    Comment   ..
593       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
594       ..                            Comment                          ..
595       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
596       ..                            Comment                          ..
597       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
598       ..                            Comment                          ..
599       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
600       ..           Comment            |             Setup            ..
601       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
602       ..                            Setup                            ..
603       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
604       ..                            Setup                            ..
605       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
607                    Figure 5: Packed Configuration Figure
609    The Ident field is set with the value that will be used by the Raw
610    Payload Packets to address this Configuration.  The Fragment type is
611    set to 0 because the packet bears the full Packed configuration.  The
612    number of the packet is set to 1.
618 Barbato                     Standards Track                    [Page 11]
620 RFC 5215               Vorbis RTP Payload Format             August 2008
623 3.2.  Out of Band Transmission
625    The following packet definition MUST be used when Configuration is
626    inside in the SDP.
628 3.2.1.  Packed Headers
630    As mentioned above, the RECOMMENDED delivery vector for Vorbis
631    configuration data is via a retrieval method that can be performed
632    using a reliable transport protocol.  As the RTP headers are not
633    required for this method of delivery, the structure of the
634    configuration data is slightly different.  The packed header starts
635    with a 32-bit (network-byte ordered) count field, which details the
636    number of packed headers that are contained in the bundle.  The
637    following shows the Packed header payload for each chained Vorbis
638    stream.
640       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
641       |                     Number of packed headers                  |
642       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
643       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
644       |                          Packed header                        |
645       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
646       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
647       |                          Packed header                        |
648       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
650                      Figure 6: Packed Headers Overview
674 Barbato                     Standards Track                    [Page 12]
676 RFC 5215               Vorbis RTP Payload Format             August 2008
679        0                   1                   2                   3
680        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
681       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
682       |                   Ident                       |    length    ..
683       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
684       ..              | n. of headers |    length1    |    length2   ..
685       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
686       ..              |             Identification Header            ..
687       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
688       .................................................................
689       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
690       ..              |         Comment Header                       ..
691       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
692       .................................................................
693       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
694       ..                        Comment Header                        |
695       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
696       |                          Setup Header                        ..
697       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
698       .................................................................
699       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
700       ..                         Setup Header                         |
701       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
703                       Figure 7: Packed Headers Detail
705    The key difference between the in-band format and this one is that
706    there is no need for the payload header octet.  In this figure, the
707    comment has a size bigger than 127 bytes.
709 3.3.  Loss of Configuration Headers
711    Unlike the loss of raw Vorbis payload data, loss of a configuration
712    header leads to a situation where it will not be possible to
713    successfully decode the stream.  Implementations MAY try to recover
714    from an error by requesting again the missing Configuration or, if
715    the delivery method is in-band, by buffering the payloads waiting for
716    the Configuration needed to decode them.  The baseline reaction
717    SHOULD either be reset or end the RTP session.
719 4.  Comment Headers
721    Vorbis Data Type flag set to 2 indicates that the packet contains the
722    comment metadata, such as artist name, track title, and so on.  These
723    metadata messages are not intended to be fully descriptive but rather
724    to offer basic track/song information.  Clients MAY ignore it
725    completely.  The details on the format of the comments can be found
726    in the Vorbis I Specification [VORBIS-SPEC-REF].
730 Barbato                     Standards Track                    [Page 13]
732 RFC 5215               Vorbis RTP Payload Format             August 2008
735        0                   1                   2                   3
736        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
737       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
738       |V=2|P|X|  CC   |M|     PT      |             xxxx              |
739       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
740       |                             xxxxx                             |
741       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
742       |           synchronization source (SSRC) identifier            |
743       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
744       |            contributing source (CSRC) identifiers             |
745       |                              ...                              |
746       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
747       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
748       |                      Ident                    | 0 | 2 |      1|
749       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
750       |            length             |            Comment           ..
751       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
752       ..                           Comment                           ..
753       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
754       ..                           Comment                            |
755       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
757                          Figure 8: Comment Packet
759    The 2-byte length field is necessary since this packet could be
760    fragmented.
762 5.  Frame Packetization
764    Each RTP payload contains either one Vorbis packet fragment or an
765    integer number of complete Vorbis packets (up to a maximum of 15
766    packets, since the number of packets is defined by a 4-bit value).
768    Any Vorbis data packet that is less than path MTU SHOULD be bundled
769    in the RTP payload with as many Vorbis packets as will fit, up to a
770    maximum of 15, except when such bundling would exceed an
771    application's desired transmission latency.  Path MTU is detailed in
772    [RFC1191] and [RFC1981].
774    A fragmented packet has a zero in the last four bits of the payload
775    header.  The first fragment will set the Fragment type to 1.  Each
776    fragment after the first will set the Fragment type to 2 in the
777    payload header.  The consecutive fragments MUST be sent without any
778    other payload being sent between the first and the last fragment.
779    The RTP payload containing the last fragment of the Vorbis packet
780    will have the Fragment type set to 3.  To maintain the correct
781    sequence for fragmented packet reception, the timestamp field of
782    fragmented packets MUST be the same as the first packet sent, with
786 Barbato                     Standards Track                    [Page 14]
788 RFC 5215               Vorbis RTP Payload Format             August 2008
791    the sequence number incremented as normal for the subsequent RTP
792    payloads; this will affect the RTCP jitter measurement.  The length
793    field shows the fragment length.
795 5.1.  Example Fragmented Vorbis Packet
797    Here is an example of a fragmented Vorbis packet split over three RTP
798    payloads.  Each of them contains the standard RTP headers as well as
799    the 4-octet Vorbis headers.
801       Packet 1:
803        0                   1                   2                   3
804        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
805       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
806       |V=2|P|X|  CC   |M|     PT      |           1000                |
807       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
808       |                            12345                              |
809       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
810       |           synchronization source (SSRC) identifier            |
811       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
812       |            contributing source (CSRC) identifiers             |
813       |                              ...                              |
814       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
815       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
816       |                       Ident                   | 1 | 0 |      0|
817       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
818       |             length            |            vorbis data       ..
819       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
820       ..                        vorbis data                           |
821       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
823               Figure 9: Example Fragmented Packet (Packet 1)
825    In this payload, the initial sequence number is 1000 and the
826    timestamp is 12345.  The Fragment type is set to 1, the number of
827    packets field is set to 0, and as the payload is raw Vorbis data, the
828    VDT field is set to 0.
842 Barbato                     Standards Track                    [Page 15]
844 RFC 5215               Vorbis RTP Payload Format             August 2008
847       Packet 2:
849        0                   1                   2                   3
850        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
851       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
852       |V=2|P|X|  CC   |M|     PT      |           1001                |
853       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
854       |                             12345                             |
855       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
856       |           synchronization source (SSRC) identifier            |
857       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
858       |            contributing source (CSRC) identifiers             |
859       |                              ...                              |
860       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
861       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
862       |                       Ident                   | 2 | 0 |      0|
863       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
864       |             length            |          vorbis data         ..
865       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
866       ..                        vorbis data                           |
867       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
869               Figure 10: Example Fragmented Packet (Packet 2)
871    The Fragment type field is set to 2, and the number of packets field
872    is set to 0.  For large Vorbis fragments, there can be several of
873    these types of payloads.  The maximum packet size SHOULD be no
874    greater than the path MTU, including all RTP and payload headers.
875    The sequence number has been incremented by one, but the timestamp
876    field remains the same as the initial payload.
898 Barbato                     Standards Track                    [Page 16]
900 RFC 5215               Vorbis RTP Payload Format             August 2008
903       Packet 3:
905        0                   1                   2                   3
906        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
907       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
908       |V=2|P|X|  CC   |M|     PT      |           1002                |
909       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
910       |                             12345                             |
911       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
912       |           synchronization source (SSRC) identifier            |
913       +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
914       |            contributing source (CSRC) identifiers             |
915       |                              ...                              |
916       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
917       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
918       |                      Ident                    | 3 | 0 |      0|
919       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
920       |             length            |          vorbis data         ..
921       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
922       ..                        vorbis data                           |
923       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
925               Figure 11: Example Fragmented Packet (Packet 3)
927    This is the last Vorbis fragment payload.  The Fragment type is set
928    to 3 and the packet count remains set to 0.  As in the previous
929    payloads, the timestamp remains set to the first payload timestamp in
930    the sequence and the sequence number has been incremented.
932 5.2.  Packet Loss
934    As there is no error correction within the Vorbis stream, packet loss
935    will result in a loss of signal.  Packet loss is more of an issue for
936    fragmented Vorbis packets as the client will have to cope with the
937    handling of the Fragment Type.  In case of loss of fragments, the
938    client MUST discard all the remaining Vorbis fragments and decode the
939    incomplete packet.  If we use the fragmented Vorbis packet example
940    above and the first RTP payload is lost, the client MUST detect that
941    the next RTP payload has the packet count field set to 0 and the
942    Fragment type 2 and MUST drop it.  The next RTP payload, which is the
943    final fragmented packet, MUST be dropped in the same manner.  If the
944    missing RTP payload is the last, the two fragments received will be
945    kept and the incomplete Vorbis packet decoded.
947    Loss of any of the Configuration fragment will result in the loss of
948    the full Configuration packet with the result detailed in the Loss of
949    Configuration Headers (Section 3.3) section.
954 Barbato                     Standards Track                    [Page 17]
956 RFC 5215               Vorbis RTP Payload Format             August 2008
959 6.  IANA Considerations
961    Type name:  audio
963    Subtype name:  vorbis
965    Required parameters:
967       rate:  indicates the RTP timestamp clock rate as described in RTP
968          Profile for Audio and Video Conferences with Minimal Control
969          [RFC3551].
971       channels:  indicates the number of audio channels as described in
972          RTP Profile for Audio and Video Conferences with Minimal
973          Control [RFC3551].
975       configuration:  the base64 [RFC4648] representation of the Packed
976          Headers (Section 3.2.1).
978    Encoding considerations:
980       This media type is framed and contains binary data.
982    Security considerations:
984       See Section 10 of RFC 5215.
986    Interoperability considerations:
988       None
990    Published specification:
992       RFC 5215
994       Ogg Vorbis I specification: Codec setup and packet decode.
995       Available from the Xiph website, http://xiph.org/
997    Applications which use this media type:
999       Audio streaming and conferencing tools
1001    Additional information:
1003       None
1010 Barbato                     Standards Track                    [Page 18]
1012 RFC 5215               Vorbis RTP Payload Format             August 2008
1015    Person & email address to contact for further information:
1017       Luca Barbato: <lu_zero@gentoo.org>
1018       IETF Audio/Video Transport Working Group
1020    Intended usage:
1022       COMMON
1024    Restriction on usage:
1026       This media type depends on RTP framing, hence is only defined for
1027       transfer via RTP [RFC3550].
1029    Author:
1031       Luca Barbato
1033    Change controller:
1035       IETF AVT Working Group delegated from the IESG
1037 6.1.  Packed Headers IANA Considerations
1039    The following IANA considerations refers to the split configuration
1040    Packed Headers (Section 3.2.1) used within RFC 5215.
1042    Type name:  audio
1044    Subtype name:  vorbis-config
1046    Required parameters:
1048       None
1050    Optional parameters:
1052       None
1054    Encoding considerations:
1056       This media type contains binary data.
1058    Security considerations:
1060       See Section 10 of RFC 5215.
1066 Barbato                     Standards Track                    [Page 19]
1068 RFC 5215               Vorbis RTP Payload Format             August 2008
1071    Interoperability considerations:
1073       None
1075    Published specification:
1077       RFC 5215
1079    Applications which use this media type:
1081       Vorbis encoded audio, configuration data
1083    Additional information:
1085       None
1087    Person & email address to contact for further information:
1089       Luca Barbato: <lu_zero@gentoo.org>
1090       IETF Audio/Video Transport Working Group
1092    Intended usage:  COMMON
1094    Restriction on usage:
1096       This media type doesn't depend on the transport.
1098    Author:
1100       Luca Barbato
1102    Change controller:
1104       IETF AVT Working Group delegated from the IESG
1106 7.  SDP Related Considerations
1108    The following paragraphs define the mapping of the parameters
1109    described in the IANA considerations section and their usage in the
1110    Offer/Answer Model [RFC3264].  In order to be forward compatible, the
1111    implementation MUST ignore unknown parameters.
1113 7.1.  Mapping Media Type Parameters into SDP
1115    The information carried in the Media Type specification has a
1116    specific mapping to fields in the Session Description Protocol (SDP)
1117    [RFC4566], which is commonly used to describe RTP sessions.  When SDP
1118    is used to specify sessions, the mapping are as follows:
1122 Barbato                     Standards Track                    [Page 20]
1124 RFC 5215               Vorbis RTP Payload Format             August 2008
1127    o  The type name ("audio") goes in SDP "m=" as the media name.
1129    o  The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding
1130       name.
1132    o  The parameter "rate" also goes in "a=rtpmap" as the clock rate.
1134    o  The parameter "channels" also goes in "a=rtpmap" as the channel
1135       count.
1137    o  The mandated parameters "configuration" MUST be included in the
1138       SDP "a=fmtp" attribute.
1140    If the stream comprises chained Vorbis files and all of them are
1141    known in advance, the Configuration Packet for each file SHOULD be
1142    passed to the client using the configuration attribute.
1144    The port value is specified by the server application bound to the
1145    address specified in the c= line.  The channel count value specified
1146    in the rtpmap attribute SHOULD match the current Vorbis stream or
1147    should be considered the maximum number of channels to be expected.
1148    The timestamp clock rate MUST be a multiple of the sample rate; a
1149    different payload number MUST be used if the clock rate changes.  The
1150    Configuration payload delivers the exact information, thus the SDP
1151    information SHOULD be considered a hint.  An example is found below.
1153 7.1.1.  SDP Example
1155    The following example shows a basic SDP single stream.  The first
1156    configuration packet is inside the SDP; other configurations could be
1157    fetched at any time from the URIs provided.  The following base64
1158    [RFC4648] configuration string is folded in this example due to RFC
1159    line length limitations.
1161       c=IN IP4 192.0.2.1
1163       m=audio RTP/AVP 98
1165       a=rtpmap:98 vorbis/44100/2
1167       a=fmtp:98 configuration=AAAAAZ2f4g9NAh4aAXZvcmJpcwA...;
1169    Note that the payload format (encoding) names are commonly shown in
1170    uppercase.  Media Type subtypes are commonly shown in lowercase.
1171    These names are case-insensitive in both places.  Similarly,
1172    parameter names are case-insensitive both in Media Type types and in
1173    the default mapping to the SDP a=fmtp attribute.  The a=fmtp line is
1178 Barbato                     Standards Track                    [Page 21]
1180 RFC 5215               Vorbis RTP Payload Format             August 2008
1183    a single line, even if it is shown as multiple lines in this document
1184    for clarity.
1186 7.2.  Usage with the SDP Offer/Answer Model
1188    There are no negotiable parameters.  All of them are declarative.
1190 8.  Congestion Control
1192    The general congestion control considerations for transporting RTP
1193    data apply to Vorbis audio over RTP as well.  See the RTP
1194    specification [RFC3550] and any applicable RTP profile (e.g.,
1195    [RFC3551]).  Audio data can be encoded using a range of different bit
1196    rates, so it is possible to adapt network bandwidth by adjusting the
1197    encoder bit rate in real time or by having multiple copies of content
1198    encoded at different bit rates.
1200 9.  Example
1202    The following example shows a common usage pattern that MAY be
1203    applied in such a situation.  The main scope of this section is to
1204    explain better usage of the transmission vectors.
1206 9.1.  Stream Radio
1208    This is one of the most common situations: there is one single server
1209    streaming content in multicast, and the clients may start a session
1210    at a random time.  The content itself could be a mix of a live stream
1211    (as the webjockey's voice) and stored streams (as the music she
1212    plays).
1214    In this situation, we don't know in advance how many codebooks we
1215    will use.  The clients can join anytime and users expect to start
1216    listening to the content in a short time.
1218    Upon joining, the client will receive the current Configuration
1219    necessary to decode the current stream inside the SDP so that the
1220    decoding will start immediately after.
1222    When the streamed content changes, the new Configuration is sent in-
1223    band before the actual stream, and the Configuration that has to be
1224    sent inside the SDP is updated.  Since the in-band method is
1225    unreliable, an out-of-band fallback is provided.
1227    The client may choose to fetch the Configuration from the alternate
1228    source as soon as it discovers a Configuration packet got lost in-
1229    band, or use selective retransmission [RFC3611] if the server
1230    supports this feature.
1234 Barbato                     Standards Track                    [Page 22]
1236 RFC 5215               Vorbis RTP Payload Format             August 2008
1239    A server-side optimization would be to keep a hash list of the
1240    Configurations per session, which avoids packing all of them and
1241    sending the same Configuration with different Ident tags.
1243    A client-side optimization would be to keep a tag list of the
1244    Configurations per session and not process configuration packets that
1245    are already known.
1247 10.  Security Considerations
1249    RTP packets using this payload format are subject to the security
1250    considerations discussed in the RTP specification [RFC3550], the
1251    base64 specification [RFC4648], and the URI Generic syntax
1252    specification [RFC3986].  Among other considerations, this implies
1253    that the confidentiality of the media stream is achieved by using
1254    encryption.  Because the data compression used with this payload
1255    format is applied end-to-end, encryption may be performed on the
1256    compressed data.
1258 11.  Copying Conditions
1260    The authors agree to grant third parties the irrevocable right to
1261    copy, use, and distribute the work, with or without modification, in
1262    any medium, without royalty, provided that, unless separate
1263    permission is granted, redistributed modified works do not contain
1264    misleading author, version, name of work, or endorsement information.
1266 12.  Acknowledgments
1268    This document is a continuation of the following documents:
1270    Moffitt, J., "RTP Payload Format for Vorbis Encoded Audio", February
1271    2001.
1273    Kerr, R., "RTP Payload Format for Vorbis Encoded Audio", December
1274    2004.
1276    The Media Type declaration is a continuation of the following
1277    document:
1279    Short, B., "The audio/rtp-vorbis MIME Type", January 2008.
1281    Thanks to the AVT, Vorbis Communities / Xiph.Org Foundation including
1282    Steve Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia,
1283    Pascal Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John
1284    Lazzaro, Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry
1285    Short, Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund,
1286    David Barrett, Silvia Pfeiffer, Stefan Ehmann, Gianni Ceccarelli, and
1290 Barbato                     Standards Track                    [Page 23]
1292 RFC 5215               Vorbis RTP Payload Format             August 2008
1295    Alessandro Salvatori.  Thanks to the LScube Group, in particular
1296    Federico Ridolfo, Francesco Varano, Giampaolo Mancini, Dario
1297    Gallucci, and Juan Carlos De Martin.
1299 13.  References
1301 13.1.  Normative References
1303    [RFC1191]          Mogul, J. and S. Deering, "Path MTU discovery",
1304                       RFC 1191, November 1990.
1306    [RFC1981]          McCann, J., Deering, S., and J. Mogul, "Path MTU
1307                       Discovery for IP version 6", RFC 1981,
1308                       August 1996.
1310    [RFC2119]          Bradner, S., "Key words for use in RFCs to
1311                       Indicate Requirement Levels", BCP 14, RFC 2119,
1312                       March 1997.
1314    [RFC3264]          Rosenberg, J. and H. Schulzrinne, "An Offer/Answer
1315                       Model with Session Description Protocol (SDP)",
1316                       RFC 3264, June 2002.
1318    [RFC3550]          Schulzrinne, H., Casner, S., Frederick, R., and V.
1319                       Jacobson, "RTP: A Transport Protocol for Real-Time
1320                       Applications", STD 64, RFC 3550, July 2003.
1322    [RFC3551]          Schulzrinne, H. and S. Casner, "RTP Profile for
1323                       Audio and Video Conferences with Minimal Control",
1324                       STD 65, RFC 3551, July 2003.
1326    [RFC3986]          Berners-Lee, T., Fielding, R., and L. Masinter,
1327                       "Uniform Resource Identifier (URI): Generic
1328                       Syntax", STD 66, RFC 3986, January 2005.
1330    [RFC4566]          Handley, M., Jacobson, V., and C. Perkins, "SDP:
1331                       Session Description Protocol", RFC 4566,
1332                       July 2006.
1334    [RFC4648]          Josefsson, S., "The Base16, Base32, and Base64
1335                       Data Encodings", RFC 4648, October 2006.
1337    [VORBIS-SPEC-REF]  "Ogg Vorbis I specification:  Codec setup and
1338                       packet decode.  Available from the Xiph website,
1339                       http://xiph.org/vorbis/doc/Vorbis_I_spec.html".
1346 Barbato                     Standards Track                    [Page 24]
1348 RFC 5215               Vorbis RTP Payload Format             August 2008
1351 13.2.  Informative References
1353    [LIBVORBIS]        "libvorbis: Available from the dedicated website,
1354                       http://vorbis.com/".
1356    [RFC3533]          Pfeiffer, S., "The Ogg Encapsulation Format
1357                       Version 0", RFC 3533, May 2003.
1359    [RFC3611]          Friedman, T., Caceres, R., and A. Clark, "RTP
1360                       Control Protocol Extended Reports (RTCP XR)",
1361                       RFC 3611, November 2003.
1363    [RFC4588]          Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
1364                       Hakenberg, "RTP Retransmission Payload Format",
1365                       RFC 4588, July 2006.
1367 Author's Address
1369    Luca Barbato
1370    Xiph.Org Foundation
1372    EMail: lu_zero@gentoo.org
1373    URI:   http://xiph.org/
1402 Barbato                     Standards Track                    [Page 25]
1404 RFC 5215               Vorbis RTP Payload Format             August 2008
1407 Full Copyright Statement
1409    Copyright (C) The IETF Trust (2008).
1411    This document is subject to the rights, licenses and restrictions
1412    contained in BCP 78, and except as set forth therein, the authors
1413    retain all their rights.
1415    This document and the information contained herein are provided on an
1416    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1417    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
1418    THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
1419    OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
1420    THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1421    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1423 Intellectual Property
1425    The IETF takes no position regarding the validity or scope of any
1426    Intellectual Property Rights or other rights that might be claimed to
1427    pertain to the implementation or use of the technology described in
1428    this document or the extent to which any license under such rights
1429    might or might not be available; nor does it represent that it has
1430    made any independent effort to identify any such rights.  Information
1431    on the procedures with respect to rights in RFC documents can be
1432    found in BCP 78 and BCP 79.
1434    Copies of IPR disclosures made to the IETF Secretariat and any
1435    assurances of licenses to be made available, or the result of an
1436    attempt made to obtain a general license or permission for the use of
1437    such proprietary rights by implementers or users of this
1438    specification can be obtained from the IETF on-line IPR repository at
1439    http://www.ietf.org/ipr.
1441    The IETF invites any interested party to bring to its attention any
1442    copyrights, patents or patent applications, or other proprietary
1443    rights that may cover technology that may be required to implement
1444    this standard.  Please address the information to the IETF at
1445    ietf-ipr@ietf.org.
1458 Barbato                     Standards Track                    [Page 26]