Blame doc/rfc5215.txt

Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Network Working Group                                         L. Barbato
Packit 06404a
Request for Comments: 5215                                          Xiph
Packit 06404a
Category: Standards Track                                    August 2008
Packit 06404a
Packit 06404a
Packit 06404a
              RTP Payload Format for Vorbis Encoded Audio
Packit 06404a
Packit 06404a
Status of This Memo
Packit 06404a
Packit 06404a
   This document specifies an Internet standards track protocol for the
Packit 06404a
   Internet community, and requests discussion and suggestions for
Packit 06404a
   improvements.  Please refer to the current edition of the "Internet
Packit 06404a
   Official Protocol Standards" (STD 1) for the standardization state
Packit 06404a
   and status of this protocol.  Distribution of this memo is unlimited.
Packit 06404a
Packit 06404a
Abstract
Packit 06404a
Packit 06404a
   This document describes an RTP payload format for transporting Vorbis
Packit 06404a
   encoded audio.  It details the RTP encapsulation mechanism for raw
Packit 06404a
   Vorbis data and the delivery mechanisms for the decoder probability
Packit 06404a
   model (referred to as a codebook), as well as other setup
Packit 06404a
   information.
Packit 06404a
Packit 06404a
   Also included within this memo are media type registrations and the
Packit 06404a
   details necessary for the use of Vorbis with the Session Description
Packit 06404a
   Protocol (SDP).
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 1]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
Table of Contents
Packit 06404a
Packit 06404a
   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
Packit 06404a
     1.1.  Conformance and Document Conventions . . . . . . . . . . .  3
Packit 06404a
   2.  Payload Format . . . . . . . . . . . . . . . . . . . . . . . .  3
Packit 06404a
     2.1.  RTP Header . . . . . . . . . . . . . . . . . . . . . . . .  4
Packit 06404a
     2.2.  Payload Header . . . . . . . . . . . . . . . . . . . . . .  5
Packit 06404a
     2.3.  Payload Data . . . . . . . . . . . . . . . . . . . . . . .  6
Packit 06404a
     2.4.  Example RTP Packet . . . . . . . . . . . . . . . . . . . .  8
Packit 06404a
   3.  Configuration Headers  . . . . . . . . . . . . . . . . . . . .  8
Packit 06404a
     3.1.  In-band Header Transmission  . . . . . . . . . . . . . . .  9
Packit 06404a
       3.1.1.  Packed Configuration . . . . . . . . . . . . . . . . . 10
Packit 06404a
     3.2.  Out of Band Transmission . . . . . . . . . . . . . . . . . 12
Packit 06404a
       3.2.1.  Packed Headers . . . . . . . . . . . . . . . . . . . . 12
Packit 06404a
     3.3.  Loss of Configuration Headers  . . . . . . . . . . . . . . 13
Packit 06404a
   4.  Comment Headers  . . . . . . . . . . . . . . . . . . . . . . . 13
Packit 06404a
   5.  Frame Packetization  . . . . . . . . . . . . . . . . . . . . . 14
Packit 06404a
     5.1.  Example Fragmented Vorbis Packet . . . . . . . . . . . . . 15
Packit 06404a
     5.2.  Packet Loss  . . . . . . . . . . . . . . . . . . . . . . . 17
Packit 06404a
   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 18
Packit 06404a
     6.1.  Packed Headers IANA Considerations . . . . . . . . . . . . 19
Packit 06404a
   7.  SDP Related Considerations . . . . . . . . . . . . . . . . . . 20
Packit 06404a
     7.1.  Mapping Media Type Parameters into SDP . . . . . . . . . . 20
Packit 06404a
       7.1.1.  SDP Example  . . . . . . . . . . . . . . . . . . . . . 21
Packit 06404a
     7.2.  Usage with the SDP Offer/Answer Model  . . . . . . . . . . 22
Packit 06404a
   8.  Congestion Control . . . . . . . . . . . . . . . . . . . . . . 22
Packit 06404a
   9.  Example  . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Packit 06404a
     9.1.  Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 22
Packit 06404a
   10. Security Considerations  . . . . . . . . . . . . . . . . . . . 23
Packit 06404a
   11. Copying Conditions . . . . . . . . . . . . . . . . . . . . . . 23
Packit 06404a
   12. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 23
Packit 06404a
   13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Packit 06404a
     13.1. Normative References . . . . . . . . . . . . . . . . . . . 24
Packit 06404a
     13.2. Informative References . . . . . . . . . . . . . . . . . . 25
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 2]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
1.  Introduction
Packit 06404a
Packit 06404a
   Vorbis is a general purpose perceptual audio codec intended to allow
Packit 06404a
   maximum encoder flexibility, thus allowing it to scale competitively
Packit 06404a
   over an exceptionally wide range of bit rates.  At the high quality/
Packit 06404a
   bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is
Packit 06404a
   in the same league as MPEG-4 AAC.  Vorbis is also intended for lower
Packit 06404a
   and higher sample rates (from 8kHz telephony to 192kHz digital
Packit 06404a
   masters) and a range of channel representations (monaural,
Packit 06404a
   polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255
Packit 06404a
   discrete channels).
Packit 06404a
Packit 06404a
   Vorbis encoded audio is generally encapsulated within an Ogg format
Packit 06404a
   bitstream [RFC3533], which provides framing and synchronization.  For
Packit 06404a
   the purposes of RTP transport, this layer is unnecessary, and so raw
Packit 06404a
   Vorbis packets are used in the payload.
Packit 06404a
Packit 06404a
1.1.  Conformance and Document Conventions
Packit 06404a
Packit 06404a
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
Packit 06404a
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
Packit 06404a
   document are to be interpreted as described in BCP 14, [RFC2119] and
Packit 06404a
   indicate requirement levels for compliant implementations.
Packit 06404a
   Requirements apply to all implementations unless otherwise stated.
Packit 06404a
Packit 06404a
   An implementation is a software module that supports one of the media
Packit 06404a
   types defined in this document.  Software modules may support
Packit 06404a
   multiple media types, but conformance is considered individually for
Packit 06404a
   each type.
Packit 06404a
Packit 06404a
   Implementations that fail to satisfy one or more "MUST" requirements
Packit 06404a
   are considered non-compliant.  Implementations that satisfy all
Packit 06404a
   "MUST" requirements, but fail to satisfy one or more "SHOULD"
Packit 06404a
   requirements, are said to be "conditionally compliant".  All other
Packit 06404a
   implementations are "unconditionally compliant".
Packit 06404a
Packit 06404a
2.  Payload Format
Packit 06404a
Packit 06404a
   For RTP-based transport of Vorbis-encoded audio, the standard RTP
Packit 06404a
   header is followed by a 4-octet payload header, and then the payload
Packit 06404a
   data.  The payload headers are used to associate the Vorbis data with
Packit 06404a
   its associated decoding codebooks as well as indicate if the
Packit 06404a
   following packet contains fragmented Vorbis data and/or the number of
Packit 06404a
   whole Vorbis data frames.  The payload data contains the raw Vorbis
Packit 06404a
   bitstream information.  There are 3 types of Vorbis data; an RTP
Packit 06404a
   payload MUST contain just one of them at a time.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 3]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
2.1.  RTP Header
Packit 06404a
Packit 06404a
   The format of the RTP header is specified in [RFC3550] and shown in
Packit 06404a
   Figure 1.  This payload format uses the fields of the header in a
Packit 06404a
   manner consistent with that specification.
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |V=2|P|X|  CC   |M|     PT      |       sequence number         |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                           timestamp                           |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronization source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                           Figure 1: RTP Header
Packit 06404a
Packit 06404a
   The RTP header begins with an octet of fields (V, P, X, and CC) to
Packit 06404a
   support specialized RTP uses (see [RFC3550] and [RFC3551] for
Packit 06404a
   details).  For Vorbis RTP, the following values are used.
Packit 06404a
Packit 06404a
   Version (V): 2 bits
Packit 06404a
Packit 06404a
   This field identifies the version of RTP.  The version used by this
Packit 06404a
   specification is two (2).
Packit 06404a
Packit 06404a
   Padding (P): 1 bit
Packit 06404a
Packit 06404a
   Padding MAY be used with this payload format according to Section 5.1
Packit 06404a
   of [RFC3550].
Packit 06404a
Packit 06404a
   Extension (X): 1 bit
Packit 06404a
Packit 06404a
   The Extension bit is used in accordance with [RFC3550].
Packit 06404a
Packit 06404a
   CSRC count (CC): 4 bits
Packit 06404a
Packit 06404a
   The CSRC count is used in accordance with [RFC3550].
Packit 06404a
Packit 06404a
   Marker (M): 1 bit
Packit 06404a
Packit 06404a
   Set to zero.  Audio silence suppression is not used.  This conforms
Packit 06404a
   to Section 4.1 of [VORBIS-SPEC-REF].
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 4]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   Payload Type (PT): 7 bits
Packit 06404a
Packit 06404a
   An RTP profile for a class of applications is expected to assign a
Packit 06404a
   payload type for this format, or a dynamically allocated payload type
Packit 06404a
   SHOULD be chosen that designates the payload as Vorbis.
Packit 06404a
Packit 06404a
   Sequence number: 16 bits
Packit 06404a
Packit 06404a
   The sequence number increments by one for each RTP data packet sent,
Packit 06404a
   and may be used by the receiver to detect packet loss and to restore
Packit 06404a
   the packet sequence.  This field is detailed further in [RFC3550].
Packit 06404a
Packit 06404a
   Timestamp: 32 bits
Packit 06404a
Packit 06404a
   A timestamp representing the sampling time of the first sample of the
Packit 06404a
   first Vorbis packet in the RTP payload.  The clock frequency MUST be
Packit 06404a
   set to the sample rate of the encoded audio data and is conveyed out-
Packit 06404a
   of-band (e.g., as an SDP parameter).
Packit 06404a
Packit 06404a
   SSRC/CSRC identifiers:
Packit 06404a
Packit 06404a
   These two fields, 32 bits each with one SSRC field and a maximum of
Packit 06404a
   16 CSRC fields, are as defined in [RFC3550].
Packit 06404a
Packit 06404a
2.2.  Payload Header
Packit 06404a
Packit 06404a
   The 4 octets following the RTP Header section are the Payload Header.
Packit 06404a
   This header is split into a number of bit fields detailing the format
Packit 06404a
   of the following payload data packets.
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                     Ident                     | F |VDT|# pkts.|
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                         Figure 2: Payload Header
Packit 06404a
Packit 06404a
   Ident: 24 bits
Packit 06404a
Packit 06404a
   This 24-bit field is used to associate the Vorbis data to a decoding
Packit 06404a
   Configuration.  It is stored as a network byte order integer.
Packit 06404a
Packit 06404a
   Fragment type (F): 2 bits
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 5]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   This field is set according to the following list:
Packit 06404a
Packit 06404a
      0 = Not Fragmented
Packit 06404a
Packit 06404a
      1 = Start Fragment
Packit 06404a
Packit 06404a
      2 = Continuation Fragment
Packit 06404a
Packit 06404a
      3 = End Fragment
Packit 06404a
Packit 06404a
   Vorbis Data Type (VDT): 2 bits
Packit 06404a
Packit 06404a
   This field specifies the kind of Vorbis data stored in this RTP
Packit 06404a
   packet.  There are currently three different types of Vorbis
Packit 06404a
   payloads.  Each packet MUST contain only a single type of Vorbis
Packit 06404a
   packet (e.g., you must not aggregate configuration and comment
Packit 06404a
   packets in the same RTP payload).
Packit 06404a
Packit 06404a
      0 = Raw Vorbis payload
Packit 06404a
Packit 06404a
      1 = Vorbis Packed Configuration payload
Packit 06404a
Packit 06404a
      2 = Legacy Vorbis Comment payload
Packit 06404a
Packit 06404a
      3 = Reserved
Packit 06404a
Packit 06404a
   The packets with a VDT of value 3 MUST be ignored.
Packit 06404a
Packit 06404a
   The last 4 bits represent the number of complete packets in this
Packit 06404a
   payload.  This provides for a maximum number of 15 Vorbis packets in
Packit 06404a
   the payload.  If the payload contains fragmented data, the number of
Packit 06404a
   packets MUST be set to 0.
Packit 06404a
Packit 06404a
2.3.  Payload Data
Packit 06404a
Packit 06404a
   Raw Vorbis packets are currently unbounded in length; application
Packit 06404a
   profiles will likely define a practical limit.  Typical Vorbis packet
Packit 06404a
   sizes range from very small (2-3 bytes) to quite large (8-12
Packit 06404a
   kilobytes).  The reference implementation [LIBVORBIS] typically
Packit 06404a
   produces packets less than ~800 bytes, except for the setup header
Packit 06404a
   packets, which are ~4-12 kilobytes.  Within an RTP context, to avoid
Packit 06404a
   fragmentation, the Vorbis data packet size SHOULD be kept
Packit 06404a
   sufficiently small so that after adding the RTP and payload headers,
Packit 06404a
   the complete RTP packet is smaller than the path MTU.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 6]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |            length             |       vorbis packet data     ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                       Figure 3: Payload Data Header
Packit 06404a
Packit 06404a
   Each Vorbis payload packet starts with a two octet length header,
Packit 06404a
   which is used to represent the size in bytes of the following data
Packit 06404a
   payload, and is followed by the raw Vorbis data padded to the nearest
Packit 06404a
   byte boundary, as explained by the Vorbis I Specification
Packit 06404a
   [VORBIS-SPEC-REF].  The length value is stored as a network byte
Packit 06404a
   order integer.
Packit 06404a
Packit 06404a
   For payloads that consist of multiple Vorbis packets, the payload
Packit 06404a
   data consists of the packet length followed by the packet data for
Packit 06404a
   each of the Vorbis packets in the payload.
Packit 06404a
Packit 06404a
   The Vorbis packet length header is the length of the Vorbis data
Packit 06404a
   block only and does not include the length field.
Packit 06404a
Packit 06404a
   The payload packing of the Vorbis data packets MUST follow the
Packit 06404a
   guidelines set out in [RFC3551], where the oldest Vorbis packet
Packit 06404a
   occurs immediately after the RTP packet header.  Subsequent Vorbis
Packit 06404a
   packets, if any, MUST follow in temporal order.
Packit 06404a
Packit 06404a
   Audio channel mapping is in accordance with the Vorbis I
Packit 06404a
   Specification [VORBIS-SPEC-REF].
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 7]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
2.4.  Example RTP Packet
Packit 06404a
Packit 06404a
   Here is an example RTP payload containing two Vorbis packets.
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      | 2 |0|0|  0    |0|      PT     |       sequence number         |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |               timestamp (in sample rate units)                |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronisation source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                     Ident                     | 0 | 0 | 2 pks |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |            length             |          vorbis data         ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        vorbis data                           |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |            length             |   next vorbis packet data    ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        vorbis data                          ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..               vorbis data                    |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                    Figure 4: Example Raw Vorbis Packet
Packit 06404a
Packit 06404a
   The payload data section of the RTP packet begins with the 24-bit
Packit 06404a
   Ident field followed by the one octet bit field header, which has the
Packit 06404a
   number of Vorbis frames set to 2.  Each of the Vorbis data frames is
Packit 06404a
   prefixed by the two octets length field.  The Packet Type and
Packit 06404a
   Fragment Type are set to 0.  The Configuration that will be used to
Packit 06404a
   decode the packets is the one indexed by the ident value.
Packit 06404a
Packit 06404a
3.  Configuration Headers
Packit 06404a
Packit 06404a
   Unlike other mainstream audio codecs, Vorbis has no statically
Packit 06404a
   configured probability model.  Instead, it packs all entropy decoding
Packit 06404a
   configuration, Vector Quantization and Huffman models into a data
Packit 06404a
   block that must be transmitted to the decoder with the compressed
Packit 06404a
   data.  A decoder also requires information detailing the number of
Packit 06404a
   audio channels, bitrates, and similar information to configure itself
Packit 06404a
   for a particular compressed data stream.  These two blocks of
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 8]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   information are often referred to collectively as the "codebooks" for
Packit 06404a
   a Vorbis stream, and are included as special "header" packets at the
Packit 06404a
   start of the compressed data.  In addition, the Vorbis I
Packit 06404a
   specification [VORBIS-SPEC-REF] requires the presence of a comment
Packit 06404a
   header packet that gives simple metadata about the stream, but this
Packit 06404a
   information is not required for decoding the frame sequence.
Packit 06404a
Packit 06404a
   Thus, these two codebook header packets must be received by the
Packit 06404a
   decoder before any audio data can be interpreted.  These requirements
Packit 06404a
   pose problems in RTP, which is often used over unreliable transports.
Packit 06404a
Packit 06404a
   Since this information must be transmitted reliably and, as the RTP
Packit 06404a
   stream may change certain configuration data mid-session, there are
Packit 06404a
   different methods for delivering this configuration data to a client,
Packit 06404a
   both in-band and out-of-band, which are detailed below.  In order to
Packit 06404a
   set up an initial state for the client application, the configuration
Packit 06404a
   MUST be conveyed via the signalling channel used to set up the
Packit 06404a
   session.  One example of such signalling is SDP [RFC4566] with the
Packit 06404a
   Offer/Answer Model [RFC3264].  Changes to the configuration MAY be
Packit 06404a
   communicated via a re-invite, conveying a new SDP, or sent in-band in
Packit 06404a
   the RTP channel.  Implementations MUST support an in-band delivery of
Packit 06404a
   updated codebooks, and SHOULD support out-of-band codebook update
Packit 06404a
   using a new SDP file.  The changes may be due to different codebooks
Packit 06404a
   as well as different bitrates of the RTP stream.
Packit 06404a
Packit 06404a
   For non-chained streams, the recommended Configuration delivery
Packit 06404a
   method is inside the Packed Configuration (Section 3.1.1) in the SDP
Packit 06404a
   as explained the Mapping Media Type Parameters into SDP
Packit 06404a
   (Section 7.1).
Packit 06404a
Packit 06404a
   The 24-bit Ident field is used to map which Configuration will be
Packit 06404a
   used to decode a packet.  When the Ident field changes, it indicates
Packit 06404a
   that a change in the stream has taken place.  The client application
Packit 06404a
   MUST have in advance the correct configuration.  If the client
Packit 06404a
   detects a change in the Ident value and does not have this
Packit 06404a
   information, it MUST NOT decode the raw associated Vorbis data until
Packit 06404a
   it fetches the correct Configuration.
Packit 06404a
Packit 06404a
3.1.  In-band Header Transmission
Packit 06404a
Packit 06404a
   The Packed Configuration (Section 3.1.1) Payload is sent in-band with
Packit 06404a
   the packet type bits set to match the Vorbis Data Type.  Clients MUST
Packit 06404a
   be capable of dealing with fragmentation and periodic re-transmission
Packit 06404a
   of [RFC4588] the configuration headers.  The RTP timestamp value MUST
Packit 06404a
   reflect the transmission time of the first data packet for which this
Packit 06404a
   configuration applies.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                     [Page 9]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
3.1.1.  Packed Configuration
Packit 06404a
Packit 06404a
   A Vorbis Packed Configuration is indicated with the Vorbis Data Type
Packit 06404a
   field set to 1.  Of the three headers defined in the Vorbis I
Packit 06404a
   specification [VORBIS-SPEC-REF], the Identification and the Setup
Packit 06404a
   MUST be packed as they are, while the Comment header MAY be replaced
Packit 06404a
   with a dummy one.
Packit 06404a
Packit 06404a
   The packed configuration stores Xiph codec configurations in a
Packit 06404a
   generic way: the first field stores the number of the following
Packit 06404a
   packets minus one (count field), the next ones represent the size of
Packit 06404a
   the headers (length fields), and the headers immediately follow the
Packit 06404a
   list of length fields.  The size of the last header is implicit.
Packit 06404a
Packit 06404a
   The count and the length fields are encoded using the following
Packit 06404a
   logic: the data is in network byte order; every byte has the most
Packit 06404a
   significant bit used as a flag, and the following 7 bits are used to
Packit 06404a
   store the value.  The first 7 most significant bits are stored in the
Packit 06404a
   first byte.  If there are remaining bits, the flag bit is set to 1
Packit 06404a
   and the subsequent 7 bits are stored in the following byte.  If there
Packit 06404a
   are remaining bits, set the flag to 1 and the same procedure is
Packit 06404a
   repeated.  The ending byte has the flag bit set to 0.  To decode,
Packit 06404a
   simply iterate over the bytes until the flag bit is set to 0.  For
Packit 06404a
   every byte, the data is added to the accumulated value multiplied by
Packit 06404a
   128.
Packit 06404a
Packit 06404a
   The headers are packed in the same order as they are present in Ogg
Packit 06404a
   [VORBIS-SPEC-REF]: Identification, Comment, Setup.
Packit 06404a
Packit 06404a
   The 2 byte length tag defines the length of the packed headers as the
Packit 06404a
   sum of the Configuration, Comment, and Setup lengths.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 10]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |V=2|P|X|  CC   |M|     PT      |             xxxx              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                             xxxxx                             |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronization source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                      Ident                    | 0 | 1 |      1|
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           length              | n. of headers |    length1    |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |    length2    |                  Identification              ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        Identification                       ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        Identification                       ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        Identification                       ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..               Identification                 |    Comment   ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                            Comment                          ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                            Comment                          ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                            Comment                          ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..           Comment            |             Setup            ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                            Setup                            ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                            Setup                            ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                   Figure 5: Packed Configuration Figure
Packit 06404a
Packit 06404a
   The Ident field is set with the value that will be used by the Raw
Packit 06404a
   Payload Packets to address this Configuration.  The Fragment type is
Packit 06404a
   set to 0 because the packet bears the full Packed configuration.  The
Packit 06404a
   number of the packet is set to 1.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 11]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
3.2.  Out of Band Transmission
Packit 06404a
Packit 06404a
   The following packet definition MUST be used when Configuration is
Packit 06404a
   inside in the SDP.
Packit 06404a
Packit 06404a
3.2.1.  Packed Headers
Packit 06404a
Packit 06404a
   As mentioned above, the RECOMMENDED delivery vector for Vorbis
Packit 06404a
   configuration data is via a retrieval method that can be performed
Packit 06404a
   using a reliable transport protocol.  As the RTP headers are not
Packit 06404a
   required for this method of delivery, the structure of the
Packit 06404a
   configuration data is slightly different.  The packed header starts
Packit 06404a
   with a 32-bit (network-byte ordered) count field, which details the
Packit 06404a
   number of packed headers that are contained in the bundle.  The
Packit 06404a
   following shows the Packed header payload for each chained Vorbis
Packit 06404a
   stream.
Packit 06404a
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                     Number of packed headers                  |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                          Packed header                        |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                          Packed header                        |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                     Figure 6: Packed Headers Overview
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 12]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                   Ident                       |    length    ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..              | n. of headers |    length1    |    length2   ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..              |             Identification Header            ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      .................................................................
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..              |         Comment Header                       ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      .................................................................
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        Comment Header                        |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                          Setup Header                        ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      .................................................................
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                         Setup Header                         |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                      Figure 7: Packed Headers Detail
Packit 06404a
Packit 06404a
   The key difference between the in-band format and this one is that
Packit 06404a
   there is no need for the payload header octet.  In this figure, the
Packit 06404a
   comment has a size bigger than 127 bytes.
Packit 06404a
Packit 06404a
3.3.  Loss of Configuration Headers
Packit 06404a
Packit 06404a
   Unlike the loss of raw Vorbis payload data, loss of a configuration
Packit 06404a
   header leads to a situation where it will not be possible to
Packit 06404a
   successfully decode the stream.  Implementations MAY try to recover
Packit 06404a
   from an error by requesting again the missing Configuration or, if
Packit 06404a
   the delivery method is in-band, by buffering the payloads waiting for
Packit 06404a
   the Configuration needed to decode them.  The baseline reaction
Packit 06404a
   SHOULD either be reset or end the RTP session.
Packit 06404a
Packit 06404a
4.  Comment Headers
Packit 06404a
Packit 06404a
   Vorbis Data Type flag set to 2 indicates that the packet contains the
Packit 06404a
   comment metadata, such as artist name, track title, and so on.  These
Packit 06404a
   metadata messages are not intended to be fully descriptive but rather
Packit 06404a
   to offer basic track/song information.  Clients MAY ignore it
Packit 06404a
   completely.  The details on the format of the comments can be found
Packit 06404a
   in the Vorbis I Specification [VORBIS-SPEC-REF].
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 13]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |V=2|P|X|  CC   |M|     PT      |             xxxx              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                             xxxxx                             |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronization source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                      Ident                    | 0 | 2 |      1|
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |            length             |            Comment           ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                           Comment                           ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                           Comment                            |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
                         Figure 8: Comment Packet
Packit 06404a
Packit 06404a
   The 2-byte length field is necessary since this packet could be
Packit 06404a
   fragmented.
Packit 06404a
Packit 06404a
5.  Frame Packetization
Packit 06404a
Packit 06404a
   Each RTP payload contains either one Vorbis packet fragment or an
Packit 06404a
   integer number of complete Vorbis packets (up to a maximum of 15
Packit 06404a
   packets, since the number of packets is defined by a 4-bit value).
Packit 06404a
Packit 06404a
   Any Vorbis data packet that is less than path MTU SHOULD be bundled
Packit 06404a
   in the RTP payload with as many Vorbis packets as will fit, up to a
Packit 06404a
   maximum of 15, except when such bundling would exceed an
Packit 06404a
   application's desired transmission latency.  Path MTU is detailed in
Packit 06404a
   [RFC1191] and [RFC1981].
Packit 06404a
Packit 06404a
   A fragmented packet has a zero in the last four bits of the payload
Packit 06404a
   header.  The first fragment will set the Fragment type to 1.  Each
Packit 06404a
   fragment after the first will set the Fragment type to 2 in the
Packit 06404a
   payload header.  The consecutive fragments MUST be sent without any
Packit 06404a
   other payload being sent between the first and the last fragment.
Packit 06404a
   The RTP payload containing the last fragment of the Vorbis packet
Packit 06404a
   will have the Fragment type set to 3.  To maintain the correct
Packit 06404a
   sequence for fragmented packet reception, the timestamp field of
Packit 06404a
   fragmented packets MUST be the same as the first packet sent, with
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 14]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   the sequence number incremented as normal for the subsequent RTP
Packit 06404a
   payloads; this will affect the RTCP jitter measurement.  The length
Packit 06404a
   field shows the fragment length.
Packit 06404a
Packit 06404a
5.1.  Example Fragmented Vorbis Packet
Packit 06404a
Packit 06404a
   Here is an example of a fragmented Vorbis packet split over three RTP
Packit 06404a
   payloads.  Each of them contains the standard RTP headers as well as
Packit 06404a
   the 4-octet Vorbis headers.
Packit 06404a
Packit 06404a
      Packet 1:
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |V=2|P|X|  CC   |M|     PT      |           1000                |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                            12345                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronization source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                       Ident                   | 1 | 0 |      0|
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |             length            |            vorbis data       ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        vorbis data                           |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
              Figure 9: Example Fragmented Packet (Packet 1)
Packit 06404a
Packit 06404a
   In this payload, the initial sequence number is 1000 and the
Packit 06404a
   timestamp is 12345.  The Fragment type is set to 1, the number of
Packit 06404a
   packets field is set to 0, and as the payload is raw Vorbis data, the
Packit 06404a
   VDT field is set to 0.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 15]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
      Packet 2:
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |V=2|P|X|  CC   |M|     PT      |           1001                |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                             12345                             |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronization source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                       Ident                   | 2 | 0 |      0|
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |             length            |          vorbis data         ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        vorbis data                           |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
              Figure 10: Example Fragmented Packet (Packet 2)
Packit 06404a
Packit 06404a
   The Fragment type field is set to 2, and the number of packets field
Packit 06404a
   is set to 0.  For large Vorbis fragments, there can be several of
Packit 06404a
   these types of payloads.  The maximum packet size SHOULD be no
Packit 06404a
   greater than the path MTU, including all RTP and payload headers.
Packit 06404a
   The sequence number has been incremented by one, but the timestamp
Packit 06404a
   field remains the same as the initial payload.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 16]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
      Packet 3:
Packit 06404a
Packit 06404a
       0                   1                   2                   3
Packit 06404a
       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
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |V=2|P|X|  CC   |M|     PT      |           1002                |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                             12345                             |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |           synchronization source (SSRC) identifier            |
Packit 06404a
      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Packit 06404a
      |            contributing source (CSRC) identifiers             |
Packit 06404a
      |                              ...                              |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |                      Ident                    | 3 | 0 |      0|
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      |             length            |          vorbis data         ..
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
      ..                        vorbis data                           |
Packit 06404a
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packit 06404a
Packit 06404a
              Figure 11: Example Fragmented Packet (Packet 3)
Packit 06404a
Packit 06404a
   This is the last Vorbis fragment payload.  The Fragment type is set
Packit 06404a
   to 3 and the packet count remains set to 0.  As in the previous
Packit 06404a
   payloads, the timestamp remains set to the first payload timestamp in
Packit 06404a
   the sequence and the sequence number has been incremented.
Packit 06404a
Packit 06404a
5.2.  Packet Loss
Packit 06404a
Packit 06404a
   As there is no error correction within the Vorbis stream, packet loss
Packit 06404a
   will result in a loss of signal.  Packet loss is more of an issue for
Packit 06404a
   fragmented Vorbis packets as the client will have to cope with the
Packit 06404a
   handling of the Fragment Type.  In case of loss of fragments, the
Packit 06404a
   client MUST discard all the remaining Vorbis fragments and decode the
Packit 06404a
   incomplete packet.  If we use the fragmented Vorbis packet example
Packit 06404a
   above and the first RTP payload is lost, the client MUST detect that
Packit 06404a
   the next RTP payload has the packet count field set to 0 and the
Packit 06404a
   Fragment type 2 and MUST drop it.  The next RTP payload, which is the
Packit 06404a
   final fragmented packet, MUST be dropped in the same manner.  If the
Packit 06404a
   missing RTP payload is the last, the two fragments received will be
Packit 06404a
   kept and the incomplete Vorbis packet decoded.
Packit 06404a
Packit 06404a
   Loss of any of the Configuration fragment will result in the loss of
Packit 06404a
   the full Configuration packet with the result detailed in the Loss of
Packit 06404a
   Configuration Headers (Section 3.3) section.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 17]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
6.  IANA Considerations
Packit 06404a
Packit 06404a
   Type name:  audio
Packit 06404a
Packit 06404a
   Subtype name:  vorbis
Packit 06404a
Packit 06404a
   Required parameters:
Packit 06404a
Packit 06404a
      rate:  indicates the RTP timestamp clock rate as described in RTP
Packit 06404a
         Profile for Audio and Video Conferences with Minimal Control
Packit 06404a
         [RFC3551].
Packit 06404a
Packit 06404a
      channels:  indicates the number of audio channels as described in
Packit 06404a
         RTP Profile for Audio and Video Conferences with Minimal
Packit 06404a
         Control [RFC3551].
Packit 06404a
Packit 06404a
      configuration:  the base64 [RFC4648] representation of the Packed
Packit 06404a
         Headers (Section 3.2.1).
Packit 06404a
Packit 06404a
   Encoding considerations:
Packit 06404a
Packit 06404a
      This media type is framed and contains binary data.
Packit 06404a
Packit 06404a
   Security considerations:
Packit 06404a
Packit 06404a
      See Section 10 of RFC 5215.
Packit 06404a
Packit 06404a
   Interoperability considerations:
Packit 06404a
Packit 06404a
      None
Packit 06404a
Packit 06404a
   Published specification:
Packit 06404a
Packit 06404a
      RFC 5215
Packit 06404a
Packit 06404a
      Ogg Vorbis I specification: Codec setup and packet decode.
Packit 06404a
      Available from the Xiph website, http://xiph.org/
Packit 06404a
Packit 06404a
   Applications which use this media type:
Packit 06404a
Packit 06404a
      Audio streaming and conferencing tools
Packit 06404a
Packit 06404a
   Additional information:
Packit 06404a
Packit 06404a
      None
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 18]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   Person & email address to contact for further information:
Packit 06404a
Packit 06404a
      Luca Barbato: <lu_zero@gentoo.org>
Packit 06404a
      IETF Audio/Video Transport Working Group
Packit 06404a
Packit 06404a
   Intended usage:
Packit 06404a
Packit 06404a
      COMMON
Packit 06404a
Packit 06404a
   Restriction on usage:
Packit 06404a
Packit 06404a
      This media type depends on RTP framing, hence is only defined for
Packit 06404a
      transfer via RTP [RFC3550].
Packit 06404a
Packit 06404a
   Author:
Packit 06404a
Packit 06404a
      Luca Barbato
Packit 06404a
Packit 06404a
   Change controller:
Packit 06404a
Packit 06404a
      IETF AVT Working Group delegated from the IESG
Packit 06404a
Packit 06404a
6.1.  Packed Headers IANA Considerations
Packit 06404a
Packit 06404a
   The following IANA considerations refers to the split configuration
Packit 06404a
   Packed Headers (Section 3.2.1) used within RFC 5215.
Packit 06404a
Packit 06404a
   Type name:  audio
Packit 06404a
Packit 06404a
   Subtype name:  vorbis-config
Packit 06404a
Packit 06404a
   Required parameters:
Packit 06404a
Packit 06404a
      None
Packit 06404a
Packit 06404a
   Optional parameters:
Packit 06404a
Packit 06404a
      None
Packit 06404a
Packit 06404a
   Encoding considerations:
Packit 06404a
Packit 06404a
      This media type contains binary data.
Packit 06404a
Packit 06404a
   Security considerations:
Packit 06404a
Packit 06404a
      See Section 10 of RFC 5215.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 19]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   Interoperability considerations:
Packit 06404a
Packit 06404a
      None
Packit 06404a
Packit 06404a
   Published specification:
Packit 06404a
Packit 06404a
      RFC 5215
Packit 06404a
Packit 06404a
   Applications which use this media type:
Packit 06404a
Packit 06404a
      Vorbis encoded audio, configuration data
Packit 06404a
Packit 06404a
   Additional information:
Packit 06404a
Packit 06404a
      None
Packit 06404a
Packit 06404a
   Person & email address to contact for further information:
Packit 06404a
Packit 06404a
      Luca Barbato: <lu_zero@gentoo.org>
Packit 06404a
      IETF Audio/Video Transport Working Group
Packit 06404a
Packit 06404a
   Intended usage:  COMMON
Packit 06404a
Packit 06404a
   Restriction on usage:
Packit 06404a
Packit 06404a
      This media type doesn't depend on the transport.
Packit 06404a
Packit 06404a
   Author:
Packit 06404a
Packit 06404a
      Luca Barbato
Packit 06404a
Packit 06404a
   Change controller:
Packit 06404a
Packit 06404a
      IETF AVT Working Group delegated from the IESG
Packit 06404a
Packit 06404a
7.  SDP Related Considerations
Packit 06404a
Packit 06404a
   The following paragraphs define the mapping of the parameters
Packit 06404a
   described in the IANA considerations section and their usage in the
Packit 06404a
   Offer/Answer Model [RFC3264].  In order to be forward compatible, the
Packit 06404a
   implementation MUST ignore unknown parameters.
Packit 06404a
Packit 06404a
7.1.  Mapping Media Type Parameters into SDP
Packit 06404a
Packit 06404a
   The information carried in the Media Type specification has a
Packit 06404a
   specific mapping to fields in the Session Description Protocol (SDP)
Packit 06404a
   [RFC4566], which is commonly used to describe RTP sessions.  When SDP
Packit 06404a
   is used to specify sessions, the mapping are as follows:
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 20]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   o  The type name ("audio") goes in SDP "m=" as the media name.
Packit 06404a
Packit 06404a
   o  The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding
Packit 06404a
      name.
Packit 06404a
Packit 06404a
   o  The parameter "rate" also goes in "a=rtpmap" as the clock rate.
Packit 06404a
Packit 06404a
   o  The parameter "channels" also goes in "a=rtpmap" as the channel
Packit 06404a
      count.
Packit 06404a
Packit 06404a
   o  The mandated parameters "configuration" MUST be included in the
Packit 06404a
      SDP "a=fmtp" attribute.
Packit 06404a
Packit 06404a
   If the stream comprises chained Vorbis files and all of them are
Packit 06404a
   known in advance, the Configuration Packet for each file SHOULD be
Packit 06404a
   passed to the client using the configuration attribute.
Packit 06404a
Packit 06404a
   The port value is specified by the server application bound to the
Packit 06404a
   address specified in the c= line.  The channel count value specified
Packit 06404a
   in the rtpmap attribute SHOULD match the current Vorbis stream or
Packit 06404a
   should be considered the maximum number of channels to be expected.
Packit 06404a
   The timestamp clock rate MUST be a multiple of the sample rate; a
Packit 06404a
   different payload number MUST be used if the clock rate changes.  The
Packit 06404a
   Configuration payload delivers the exact information, thus the SDP
Packit 06404a
   information SHOULD be considered a hint.  An example is found below.
Packit 06404a
Packit 06404a
7.1.1.  SDP Example
Packit 06404a
Packit 06404a
   The following example shows a basic SDP single stream.  The first
Packit 06404a
   configuration packet is inside the SDP; other configurations could be
Packit 06404a
   fetched at any time from the URIs provided.  The following base64
Packit 06404a
   [RFC4648] configuration string is folded in this example due to RFC
Packit 06404a
   line length limitations.
Packit 06404a
Packit 06404a
      c=IN IP4 192.0.2.1
Packit 06404a
Packit 06404a
      m=audio RTP/AVP 98
Packit 06404a
Packit 06404a
      a=rtpmap:98 vorbis/44100/2
Packit 06404a
Packit 06404a
      a=fmtp:98 configuration=AAAAAZ2f4g9NAh4aAXZvcmJpcwA...;
Packit 06404a
Packit 06404a
   Note that the payload format (encoding) names are commonly shown in
Packit 06404a
   uppercase.  Media Type subtypes are commonly shown in lowercase.
Packit 06404a
   These names are case-insensitive in both places.  Similarly,
Packit 06404a
   parameter names are case-insensitive both in Media Type types and in
Packit 06404a
   the default mapping to the SDP a=fmtp attribute.  The a=fmtp line is
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 21]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   a single line, even if it is shown as multiple lines in this document
Packit 06404a
   for clarity.
Packit 06404a
Packit 06404a
7.2.  Usage with the SDP Offer/Answer Model
Packit 06404a
Packit 06404a
   There are no negotiable parameters.  All of them are declarative.
Packit 06404a
Packit 06404a
8.  Congestion Control
Packit 06404a
Packit 06404a
   The general congestion control considerations for transporting RTP
Packit 06404a
   data apply to Vorbis audio over RTP as well.  See the RTP
Packit 06404a
   specification [RFC3550] and any applicable RTP profile (e.g.,
Packit 06404a
   [RFC3551]).  Audio data can be encoded using a range of different bit
Packit 06404a
   rates, so it is possible to adapt network bandwidth by adjusting the
Packit 06404a
   encoder bit rate in real time or by having multiple copies of content
Packit 06404a
   encoded at different bit rates.
Packit 06404a
Packit 06404a
9.  Example
Packit 06404a
Packit 06404a
   The following example shows a common usage pattern that MAY be
Packit 06404a
   applied in such a situation.  The main scope of this section is to
Packit 06404a
   explain better usage of the transmission vectors.
Packit 06404a
Packit 06404a
9.1.  Stream Radio
Packit 06404a
Packit 06404a
   This is one of the most common situations: there is one single server
Packit 06404a
   streaming content in multicast, and the clients may start a session
Packit 06404a
   at a random time.  The content itself could be a mix of a live stream
Packit 06404a
   (as the webjockey's voice) and stored streams (as the music she
Packit 06404a
   plays).
Packit 06404a
Packit 06404a
   In this situation, we don't know in advance how many codebooks we
Packit 06404a
   will use.  The clients can join anytime and users expect to start
Packit 06404a
   listening to the content in a short time.
Packit 06404a
Packit 06404a
   Upon joining, the client will receive the current Configuration
Packit 06404a
   necessary to decode the current stream inside the SDP so that the
Packit 06404a
   decoding will start immediately after.
Packit 06404a
Packit 06404a
   When the streamed content changes, the new Configuration is sent in-
Packit 06404a
   band before the actual stream, and the Configuration that has to be
Packit 06404a
   sent inside the SDP is updated.  Since the in-band method is
Packit 06404a
   unreliable, an out-of-band fallback is provided.
Packit 06404a
Packit 06404a
   The client may choose to fetch the Configuration from the alternate
Packit 06404a
   source as soon as it discovers a Configuration packet got lost in-
Packit 06404a
   band, or use selective retransmission [RFC3611] if the server
Packit 06404a
   supports this feature.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 22]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   A server-side optimization would be to keep a hash list of the
Packit 06404a
   Configurations per session, which avoids packing all of them and
Packit 06404a
   sending the same Configuration with different Ident tags.
Packit 06404a
Packit 06404a
   A client-side optimization would be to keep a tag list of the
Packit 06404a
   Configurations per session and not process configuration packets that
Packit 06404a
   are already known.
Packit 06404a
Packit 06404a
10.  Security Considerations
Packit 06404a
Packit 06404a
   RTP packets using this payload format are subject to the security
Packit 06404a
   considerations discussed in the RTP specification [RFC3550], the
Packit 06404a
   base64 specification [RFC4648], and the URI Generic syntax
Packit 06404a
   specification [RFC3986].  Among other considerations, this implies
Packit 06404a
   that the confidentiality of the media stream is achieved by using
Packit 06404a
   encryption.  Because the data compression used with this payload
Packit 06404a
   format is applied end-to-end, encryption may be performed on the
Packit 06404a
   compressed data.
Packit 06404a
Packit 06404a
11.  Copying Conditions
Packit 06404a
Packit 06404a
   The authors agree to grant third parties the irrevocable right to
Packit 06404a
   copy, use, and distribute the work, with or without modification, in
Packit 06404a
   any medium, without royalty, provided that, unless separate
Packit 06404a
   permission is granted, redistributed modified works do not contain
Packit 06404a
   misleading author, version, name of work, or endorsement information.
Packit 06404a
Packit 06404a
12.  Acknowledgments
Packit 06404a
Packit 06404a
   This document is a continuation of the following documents:
Packit 06404a
Packit 06404a
   Moffitt, J., "RTP Payload Format for Vorbis Encoded Audio", February
Packit 06404a
   2001.
Packit 06404a
Packit 06404a
   Kerr, R., "RTP Payload Format for Vorbis Encoded Audio", December
Packit 06404a
   2004.
Packit 06404a
Packit 06404a
   The Media Type declaration is a continuation of the following
Packit 06404a
   document:
Packit 06404a
Packit 06404a
   Short, B., "The audio/rtp-vorbis MIME Type", January 2008.
Packit 06404a
Packit 06404a
   Thanks to the AVT, Vorbis Communities / Xiph.Org Foundation including
Packit 06404a
   Steve Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia,
Packit 06404a
   Pascal Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John
Packit 06404a
   Lazzaro, Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry
Packit 06404a
   Short, Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund,
Packit 06404a
   David Barrett, Silvia Pfeiffer, Stefan Ehmann, Gianni Ceccarelli, and
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 23]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
   Alessandro Salvatori.  Thanks to the LScube Group, in particular
Packit 06404a
   Federico Ridolfo, Francesco Varano, Giampaolo Mancini, Dario
Packit 06404a
   Gallucci, and Juan Carlos De Martin.
Packit 06404a
Packit 06404a
13.  References
Packit 06404a
Packit 06404a
13.1.  Normative References
Packit 06404a
Packit 06404a
   [RFC1191]          Mogul, J. and S. Deering, "Path MTU discovery",
Packit 06404a
                      RFC 1191, November 1990.
Packit 06404a
Packit 06404a
   [RFC1981]          McCann, J., Deering, S., and J. Mogul, "Path MTU
Packit 06404a
                      Discovery for IP version 6", RFC 1981,
Packit 06404a
                      August 1996.
Packit 06404a
Packit 06404a
   [RFC2119]          Bradner, S., "Key words for use in RFCs to
Packit 06404a
                      Indicate Requirement Levels", BCP 14, RFC 2119,
Packit 06404a
                      March 1997.
Packit 06404a
Packit 06404a
   [RFC3264]          Rosenberg, J. and H. Schulzrinne, "An Offer/Answer
Packit 06404a
                      Model with Session Description Protocol (SDP)",
Packit 06404a
                      RFC 3264, June 2002.
Packit 06404a
Packit 06404a
   [RFC3550]          Schulzrinne, H., Casner, S., Frederick, R., and V.
Packit 06404a
                      Jacobson, "RTP: A Transport Protocol for Real-Time
Packit 06404a
                      Applications", STD 64, RFC 3550, July 2003.
Packit 06404a
Packit 06404a
   [RFC3551]          Schulzrinne, H. and S. Casner, "RTP Profile for
Packit 06404a
                      Audio and Video Conferences with Minimal Control",
Packit 06404a
                      STD 65, RFC 3551, July 2003.
Packit 06404a
Packit 06404a
   [RFC3986]          Berners-Lee, T., Fielding, R., and L. Masinter,
Packit 06404a
                      "Uniform Resource Identifier (URI): Generic
Packit 06404a
                      Syntax", STD 66, RFC 3986, January 2005.
Packit 06404a
Packit 06404a
   [RFC4566]          Handley, M., Jacobson, V., and C. Perkins, "SDP:
Packit 06404a
                      Session Description Protocol", RFC 4566,
Packit 06404a
                      July 2006.
Packit 06404a
Packit 06404a
   [RFC4648]          Josefsson, S., "The Base16, Base32, and Base64
Packit 06404a
                      Data Encodings", RFC 4648, October 2006.
Packit 06404a
Packit 06404a
   [VORBIS-SPEC-REF]  "Ogg Vorbis I specification:  Codec setup and
Packit 06404a
                      packet decode.  Available from the Xiph website,
Packit 06404a
                      http://xiph.org/vorbis/doc/Vorbis_I_spec.html".
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 24]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
13.2.  Informative References
Packit 06404a
Packit 06404a
   [LIBVORBIS]        "libvorbis: Available from the dedicated website,
Packit 06404a
                      http://vorbis.com/".
Packit 06404a
Packit 06404a
   [RFC3533]          Pfeiffer, S., "The Ogg Encapsulation Format
Packit 06404a
                      Version 0", RFC 3533, May 2003.
Packit 06404a
Packit 06404a
   [RFC3611]          Friedman, T., Caceres, R., and A. Clark, "RTP
Packit 06404a
                      Control Protocol Extended Reports (RTCP XR)",
Packit 06404a
                      RFC 3611, November 2003.
Packit 06404a
Packit 06404a
   [RFC4588]          Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
Packit 06404a
                      Hakenberg, "RTP Retransmission Payload Format",
Packit 06404a
                      RFC 4588, July 2006.
Packit 06404a
Packit 06404a
Author's Address
Packit 06404a
Packit 06404a
   Luca Barbato
Packit 06404a
   Xiph.Org Foundation
Packit 06404a
Packit 06404a
   EMail: lu_zero@gentoo.org
Packit 06404a
   URI:   http://xiph.org/
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 25]
Packit 06404a

Packit 06404a
RFC 5215               Vorbis RTP Payload Format             August 2008
Packit 06404a
Packit 06404a
Packit 06404a
Full Copyright Statement
Packit 06404a
Packit 06404a
   Copyright (C) The IETF Trust (2008).
Packit 06404a
Packit 06404a
   This document is subject to the rights, licenses and restrictions
Packit 06404a
   contained in BCP 78, and except as set forth therein, the authors
Packit 06404a
   retain all their rights.
Packit 06404a
Packit 06404a
   This document and the information contained herein are provided on an
Packit 06404a
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
Packit 06404a
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
Packit 06404a
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
Packit 06404a
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
Packit 06404a
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
Packit 06404a
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Packit 06404a
Packit 06404a
Intellectual Property
Packit 06404a
Packit 06404a
   The IETF takes no position regarding the validity or scope of any
Packit 06404a
   Intellectual Property Rights or other rights that might be claimed to
Packit 06404a
   pertain to the implementation or use of the technology described in
Packit 06404a
   this document or the extent to which any license under such rights
Packit 06404a
   might or might not be available; nor does it represent that it has
Packit 06404a
   made any independent effort to identify any such rights.  Information
Packit 06404a
   on the procedures with respect to rights in RFC documents can be
Packit 06404a
   found in BCP 78 and BCP 79.
Packit 06404a
Packit 06404a
   Copies of IPR disclosures made to the IETF Secretariat and any
Packit 06404a
   assurances of licenses to be made available, or the result of an
Packit 06404a
   attempt made to obtain a general license or permission for the use of
Packit 06404a
   such proprietary rights by implementers or users of this
Packit 06404a
   specification can be obtained from the IETF on-line IPR repository at
Packit 06404a
   http://www.ietf.org/ipr.
Packit 06404a
Packit 06404a
   The IETF invites any interested party to bring to its attention any
Packit 06404a
   copyrights, patents or patent applications, or other proprietary
Packit 06404a
   rights that may cover technology that may be required to implement
Packit 06404a
   this standard.  Please address the information to the IETF at
Packit 06404a
   ietf-ipr@ietf.org.
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Packit 06404a
Barbato                     Standards Track                    [Page 26]
Packit 06404a