annotate src/libvorbis-1.3.3/doc/rfc5215.txt @ 168:ceec0dd9ec9c

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam <cannam@all-day-breakfast.com>
date Fri, 07 Feb 2020 11:51:13 +0000
parents 98c1576536ae
children
rev   line source
cannam@86 1
cannam@86 2
cannam@86 3
cannam@86 4
cannam@86 5
cannam@86 6
cannam@86 7 Network Working Group L. Barbato
cannam@86 8 Request for Comments: 5215 Xiph
cannam@86 9 Category: Standards Track August 2008
cannam@86 10
cannam@86 11
cannam@86 12 RTP Payload Format for Vorbis Encoded Audio
cannam@86 13
cannam@86 14 Status of This Memo
cannam@86 15
cannam@86 16 This document specifies an Internet standards track protocol for the
cannam@86 17 Internet community, and requests discussion and suggestions for
cannam@86 18 improvements. Please refer to the current edition of the "Internet
cannam@86 19 Official Protocol Standards" (STD 1) for the standardization state
cannam@86 20 and status of this protocol. Distribution of this memo is unlimited.
cannam@86 21
cannam@86 22 Abstract
cannam@86 23
cannam@86 24 This document describes an RTP payload format for transporting Vorbis
cannam@86 25 encoded audio. It details the RTP encapsulation mechanism for raw
cannam@86 26 Vorbis data and the delivery mechanisms for the decoder probability
cannam@86 27 model (referred to as a codebook), as well as other setup
cannam@86 28 information.
cannam@86 29
cannam@86 30 Also included within this memo are media type registrations and the
cannam@86 31 details necessary for the use of Vorbis with the Session Description
cannam@86 32 Protocol (SDP).
cannam@86 33
cannam@86 34
cannam@86 35
cannam@86 36
cannam@86 37
cannam@86 38
cannam@86 39
cannam@86 40
cannam@86 41
cannam@86 42
cannam@86 43
cannam@86 44
cannam@86 45
cannam@86 46
cannam@86 47
cannam@86 48
cannam@86 49
cannam@86 50
cannam@86 51
cannam@86 52
cannam@86 53
cannam@86 54
cannam@86 55
cannam@86 56
cannam@86 57
cannam@86 58 Barbato Standards Track [Page 1]
cannam@86 59
cannam@86 60 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 61
cannam@86 62
cannam@86 63 Table of Contents
cannam@86 64
cannam@86 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
cannam@86 66 1.1. Conformance and Document Conventions . . . . . . . . . . . 3
cannam@86 67 2. Payload Format . . . . . . . . . . . . . . . . . . . . . . . . 3
cannam@86 68 2.1. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . 4
cannam@86 69 2.2. Payload Header . . . . . . . . . . . . . . . . . . . . . . 5
cannam@86 70 2.3. Payload Data . . . . . . . . . . . . . . . . . . . . . . . 6
cannam@86 71 2.4. Example RTP Packet . . . . . . . . . . . . . . . . . . . . 8
cannam@86 72 3. Configuration Headers . . . . . . . . . . . . . . . . . . . . 8
cannam@86 73 3.1. In-band Header Transmission . . . . . . . . . . . . . . . 9
cannam@86 74 3.1.1. Packed Configuration . . . . . . . . . . . . . . . . . 10
cannam@86 75 3.2. Out of Band Transmission . . . . . . . . . . . . . . . . . 12
cannam@86 76 3.2.1. Packed Headers . . . . . . . . . . . . . . . . . . . . 12
cannam@86 77 3.3. Loss of Configuration Headers . . . . . . . . . . . . . . 13
cannam@86 78 4. Comment Headers . . . . . . . . . . . . . . . . . . . . . . . 13
cannam@86 79 5. Frame Packetization . . . . . . . . . . . . . . . . . . . . . 14
cannam@86 80 5.1. Example Fragmented Vorbis Packet . . . . . . . . . . . . . 15
cannam@86 81 5.2. Packet Loss . . . . . . . . . . . . . . . . . . . . . . . 17
cannam@86 82 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
cannam@86 83 6.1. Packed Headers IANA Considerations . . . . . . . . . . . . 19
cannam@86 84 7. SDP Related Considerations . . . . . . . . . . . . . . . . . . 20
cannam@86 85 7.1. Mapping Media Type Parameters into SDP . . . . . . . . . . 20
cannam@86 86 7.1.1. SDP Example . . . . . . . . . . . . . . . . . . . . . 21
cannam@86 87 7.2. Usage with the SDP Offer/Answer Model . . . . . . . . . . 22
cannam@86 88 8. Congestion Control . . . . . . . . . . . . . . . . . . . . . . 22
cannam@86 89 9. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
cannam@86 90 9.1. Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 22
cannam@86 91 10. Security Considerations . . . . . . . . . . . . . . . . . . . 23
cannam@86 92 11. Copying Conditions . . . . . . . . . . . . . . . . . . . . . . 23
cannam@86 93 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23
cannam@86 94 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
cannam@86 95 13.1. Normative References . . . . . . . . . . . . . . . . . . . 24
cannam@86 96 13.2. Informative References . . . . . . . . . . . . . . . . . . 25
cannam@86 97
cannam@86 98
cannam@86 99
cannam@86 100
cannam@86 101
cannam@86 102
cannam@86 103
cannam@86 104
cannam@86 105
cannam@86 106
cannam@86 107
cannam@86 108
cannam@86 109
cannam@86 110
cannam@86 111
cannam@86 112
cannam@86 113
cannam@86 114 Barbato Standards Track [Page 2]
cannam@86 115
cannam@86 116 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 117
cannam@86 118
cannam@86 119 1. Introduction
cannam@86 120
cannam@86 121 Vorbis is a general purpose perceptual audio codec intended to allow
cannam@86 122 maximum encoder flexibility, thus allowing it to scale competitively
cannam@86 123 over an exceptionally wide range of bit rates. At the high quality/
cannam@86 124 bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is
cannam@86 125 in the same league as MPEG-4 AAC. Vorbis is also intended for lower
cannam@86 126 and higher sample rates (from 8kHz telephony to 192kHz digital
cannam@86 127 masters) and a range of channel representations (monaural,
cannam@86 128 polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255
cannam@86 129 discrete channels).
cannam@86 130
cannam@86 131 Vorbis encoded audio is generally encapsulated within an Ogg format
cannam@86 132 bitstream [RFC3533], which provides framing and synchronization. For
cannam@86 133 the purposes of RTP transport, this layer is unnecessary, and so raw
cannam@86 134 Vorbis packets are used in the payload.
cannam@86 135
cannam@86 136 1.1. Conformance and Document Conventions
cannam@86 137
cannam@86 138 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
cannam@86 139 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
cannam@86 140 document are to be interpreted as described in BCP 14, [RFC2119] and
cannam@86 141 indicate requirement levels for compliant implementations.
cannam@86 142 Requirements apply to all implementations unless otherwise stated.
cannam@86 143
cannam@86 144 An implementation is a software module that supports one of the media
cannam@86 145 types defined in this document. Software modules may support
cannam@86 146 multiple media types, but conformance is considered individually for
cannam@86 147 each type.
cannam@86 148
cannam@86 149 Implementations that fail to satisfy one or more "MUST" requirements
cannam@86 150 are considered non-compliant. Implementations that satisfy all
cannam@86 151 "MUST" requirements, but fail to satisfy one or more "SHOULD"
cannam@86 152 requirements, are said to be "conditionally compliant". All other
cannam@86 153 implementations are "unconditionally compliant".
cannam@86 154
cannam@86 155 2. Payload Format
cannam@86 156
cannam@86 157 For RTP-based transport of Vorbis-encoded audio, the standard RTP
cannam@86 158 header is followed by a 4-octet payload header, and then the payload
cannam@86 159 data. The payload headers are used to associate the Vorbis data with
cannam@86 160 its associated decoding codebooks as well as indicate if the
cannam@86 161 following packet contains fragmented Vorbis data and/or the number of
cannam@86 162 whole Vorbis data frames. The payload data contains the raw Vorbis
cannam@86 163 bitstream information. There are 3 types of Vorbis data; an RTP
cannam@86 164 payload MUST contain just one of them at a time.
cannam@86 165
cannam@86 166
cannam@86 167
cannam@86 168
cannam@86 169
cannam@86 170 Barbato Standards Track [Page 3]
cannam@86 171
cannam@86 172 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 173
cannam@86 174
cannam@86 175 2.1. RTP Header
cannam@86 176
cannam@86 177 The format of the RTP header is specified in [RFC3550] and shown in
cannam@86 178 Figure 1. This payload format uses the fields of the header in a
cannam@86 179 manner consistent with that specification.
cannam@86 180
cannam@86 181 0 1 2 3
cannam@86 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
cannam@86 183 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 184 |V=2|P|X| CC |M| PT | sequence number |
cannam@86 185 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 186 | timestamp |
cannam@86 187 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 188 | synchronization source (SSRC) identifier |
cannam@86 189 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 190 | contributing source (CSRC) identifiers |
cannam@86 191 | ... |
cannam@86 192 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 193
cannam@86 194 Figure 1: RTP Header
cannam@86 195
cannam@86 196 The RTP header begins with an octet of fields (V, P, X, and CC) to
cannam@86 197 support specialized RTP uses (see [RFC3550] and [RFC3551] for
cannam@86 198 details). For Vorbis RTP, the following values are used.
cannam@86 199
cannam@86 200 Version (V): 2 bits
cannam@86 201
cannam@86 202 This field identifies the version of RTP. The version used by this
cannam@86 203 specification is two (2).
cannam@86 204
cannam@86 205 Padding (P): 1 bit
cannam@86 206
cannam@86 207 Padding MAY be used with this payload format according to Section 5.1
cannam@86 208 of [RFC3550].
cannam@86 209
cannam@86 210 Extension (X): 1 bit
cannam@86 211
cannam@86 212 The Extension bit is used in accordance with [RFC3550].
cannam@86 213
cannam@86 214 CSRC count (CC): 4 bits
cannam@86 215
cannam@86 216 The CSRC count is used in accordance with [RFC3550].
cannam@86 217
cannam@86 218 Marker (M): 1 bit
cannam@86 219
cannam@86 220 Set to zero. Audio silence suppression is not used. This conforms
cannam@86 221 to Section 4.1 of [VORBIS-SPEC-REF].
cannam@86 222
cannam@86 223
cannam@86 224
cannam@86 225
cannam@86 226 Barbato Standards Track [Page 4]
cannam@86 227
cannam@86 228 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 229
cannam@86 230
cannam@86 231 Payload Type (PT): 7 bits
cannam@86 232
cannam@86 233 An RTP profile for a class of applications is expected to assign a
cannam@86 234 payload type for this format, or a dynamically allocated payload type
cannam@86 235 SHOULD be chosen that designates the payload as Vorbis.
cannam@86 236
cannam@86 237 Sequence number: 16 bits
cannam@86 238
cannam@86 239 The sequence number increments by one for each RTP data packet sent,
cannam@86 240 and may be used by the receiver to detect packet loss and to restore
cannam@86 241 the packet sequence. This field is detailed further in [RFC3550].
cannam@86 242
cannam@86 243 Timestamp: 32 bits
cannam@86 244
cannam@86 245 A timestamp representing the sampling time of the first sample of the
cannam@86 246 first Vorbis packet in the RTP payload. The clock frequency MUST be
cannam@86 247 set to the sample rate of the encoded audio data and is conveyed out-
cannam@86 248 of-band (e.g., as an SDP parameter).
cannam@86 249
cannam@86 250 SSRC/CSRC identifiers:
cannam@86 251
cannam@86 252 These two fields, 32 bits each with one SSRC field and a maximum of
cannam@86 253 16 CSRC fields, are as defined in [RFC3550].
cannam@86 254
cannam@86 255 2.2. Payload Header
cannam@86 256
cannam@86 257 The 4 octets following the RTP Header section are the Payload Header.
cannam@86 258 This header is split into a number of bit fields detailing the format
cannam@86 259 of the following payload data packets.
cannam@86 260
cannam@86 261 0 1 2 3
cannam@86 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
cannam@86 263 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 264 | Ident | F |VDT|# pkts.|
cannam@86 265 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 266
cannam@86 267 Figure 2: Payload Header
cannam@86 268
cannam@86 269 Ident: 24 bits
cannam@86 270
cannam@86 271 This 24-bit field is used to associate the Vorbis data to a decoding
cannam@86 272 Configuration. It is stored as a network byte order integer.
cannam@86 273
cannam@86 274 Fragment type (F): 2 bits
cannam@86 275
cannam@86 276
cannam@86 277
cannam@86 278
cannam@86 279
cannam@86 280
cannam@86 281
cannam@86 282 Barbato Standards Track [Page 5]
cannam@86 283
cannam@86 284 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 285
cannam@86 286
cannam@86 287 This field is set according to the following list:
cannam@86 288
cannam@86 289 0 = Not Fragmented
cannam@86 290
cannam@86 291 1 = Start Fragment
cannam@86 292
cannam@86 293 2 = Continuation Fragment
cannam@86 294
cannam@86 295 3 = End Fragment
cannam@86 296
cannam@86 297 Vorbis Data Type (VDT): 2 bits
cannam@86 298
cannam@86 299 This field specifies the kind of Vorbis data stored in this RTP
cannam@86 300 packet. There are currently three different types of Vorbis
cannam@86 301 payloads. Each packet MUST contain only a single type of Vorbis
cannam@86 302 packet (e.g., you must not aggregate configuration and comment
cannam@86 303 packets in the same RTP payload).
cannam@86 304
cannam@86 305 0 = Raw Vorbis payload
cannam@86 306
cannam@86 307 1 = Vorbis Packed Configuration payload
cannam@86 308
cannam@86 309 2 = Legacy Vorbis Comment payload
cannam@86 310
cannam@86 311 3 = Reserved
cannam@86 312
cannam@86 313 The packets with a VDT of value 3 MUST be ignored.
cannam@86 314
cannam@86 315 The last 4 bits represent the number of complete packets in this
cannam@86 316 payload. This provides for a maximum number of 15 Vorbis packets in
cannam@86 317 the payload. If the payload contains fragmented data, the number of
cannam@86 318 packets MUST be set to 0.
cannam@86 319
cannam@86 320 2.3. Payload Data
cannam@86 321
cannam@86 322 Raw Vorbis packets are currently unbounded in length; application
cannam@86 323 profiles will likely define a practical limit. Typical Vorbis packet
cannam@86 324 sizes range from very small (2-3 bytes) to quite large (8-12
cannam@86 325 kilobytes). The reference implementation [LIBVORBIS] typically
cannam@86 326 produces packets less than ~800 bytes, except for the setup header
cannam@86 327 packets, which are ~4-12 kilobytes. Within an RTP context, to avoid
cannam@86 328 fragmentation, the Vorbis data packet size SHOULD be kept
cannam@86 329 sufficiently small so that after adding the RTP and payload headers,
cannam@86 330 the complete RTP packet is smaller than the path MTU.
cannam@86 331
cannam@86 332
cannam@86 333
cannam@86 334
cannam@86 335
cannam@86 336
cannam@86 337
cannam@86 338 Barbato Standards Track [Page 6]
cannam@86 339
cannam@86 340 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 341
cannam@86 342
cannam@86 343 0 1 2 3
cannam@86 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
cannam@86 345 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 346 | length | vorbis packet data ..
cannam@86 347 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 348
cannam@86 349 Figure 3: Payload Data Header
cannam@86 350
cannam@86 351 Each Vorbis payload packet starts with a two octet length header,
cannam@86 352 which is used to represent the size in bytes of the following data
cannam@86 353 payload, and is followed by the raw Vorbis data padded to the nearest
cannam@86 354 byte boundary, as explained by the Vorbis I Specification
cannam@86 355 [VORBIS-SPEC-REF]. The length value is stored as a network byte
cannam@86 356 order integer.
cannam@86 357
cannam@86 358 For payloads that consist of multiple Vorbis packets, the payload
cannam@86 359 data consists of the packet length followed by the packet data for
cannam@86 360 each of the Vorbis packets in the payload.
cannam@86 361
cannam@86 362 The Vorbis packet length header is the length of the Vorbis data
cannam@86 363 block only and does not include the length field.
cannam@86 364
cannam@86 365 The payload packing of the Vorbis data packets MUST follow the
cannam@86 366 guidelines set out in [RFC3551], where the oldest Vorbis packet
cannam@86 367 occurs immediately after the RTP packet header. Subsequent Vorbis
cannam@86 368 packets, if any, MUST follow in temporal order.
cannam@86 369
cannam@86 370 Audio channel mapping is in accordance with the Vorbis I
cannam@86 371 Specification [VORBIS-SPEC-REF].
cannam@86 372
cannam@86 373
cannam@86 374
cannam@86 375
cannam@86 376
cannam@86 377
cannam@86 378
cannam@86 379
cannam@86 380
cannam@86 381
cannam@86 382
cannam@86 383
cannam@86 384
cannam@86 385
cannam@86 386
cannam@86 387
cannam@86 388
cannam@86 389
cannam@86 390
cannam@86 391
cannam@86 392
cannam@86 393
cannam@86 394 Barbato Standards Track [Page 7]
cannam@86 395
cannam@86 396 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 397
cannam@86 398
cannam@86 399 2.4. Example RTP Packet
cannam@86 400
cannam@86 401 Here is an example RTP payload containing two Vorbis packets.
cannam@86 402
cannam@86 403 0 1 2 3
cannam@86 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
cannam@86 405 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 406 | 2 |0|0| 0 |0| PT | sequence number |
cannam@86 407 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 408 | timestamp (in sample rate units) |
cannam@86 409 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 410 | synchronisation source (SSRC) identifier |
cannam@86 411 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 412 | contributing source (CSRC) identifiers |
cannam@86 413 | ... |
cannam@86 414 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 415 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 416 | Ident | 0 | 0 | 2 pks |
cannam@86 417 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 418 | length | vorbis data ..
cannam@86 419 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 420 .. vorbis data |
cannam@86 421 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 422 | length | next vorbis packet data ..
cannam@86 423 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 424 .. vorbis data ..
cannam@86 425 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 426 .. vorbis data |
cannam@86 427 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 428
cannam@86 429 Figure 4: Example Raw Vorbis Packet
cannam@86 430
cannam@86 431 The payload data section of the RTP packet begins with the 24-bit
cannam@86 432 Ident field followed by the one octet bit field header, which has the
cannam@86 433 number of Vorbis frames set to 2. Each of the Vorbis data frames is
cannam@86 434 prefixed by the two octets length field. The Packet Type and
cannam@86 435 Fragment Type are set to 0. The Configuration that will be used to
cannam@86 436 decode the packets is the one indexed by the ident value.
cannam@86 437
cannam@86 438 3. Configuration Headers
cannam@86 439
cannam@86 440 Unlike other mainstream audio codecs, Vorbis has no statically
cannam@86 441 configured probability model. Instead, it packs all entropy decoding
cannam@86 442 configuration, Vector Quantization and Huffman models into a data
cannam@86 443 block that must be transmitted to the decoder with the compressed
cannam@86 444 data. A decoder also requires information detailing the number of
cannam@86 445 audio channels, bitrates, and similar information to configure itself
cannam@86 446 for a particular compressed data stream. These two blocks of
cannam@86 447
cannam@86 448
cannam@86 449
cannam@86 450 Barbato Standards Track [Page 8]
cannam@86 451
cannam@86 452 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 453
cannam@86 454
cannam@86 455 information are often referred to collectively as the "codebooks" for
cannam@86 456 a Vorbis stream, and are included as special "header" packets at the
cannam@86 457 start of the compressed data. In addition, the Vorbis I
cannam@86 458 specification [VORBIS-SPEC-REF] requires the presence of a comment
cannam@86 459 header packet that gives simple metadata about the stream, but this
cannam@86 460 information is not required for decoding the frame sequence.
cannam@86 461
cannam@86 462 Thus, these two codebook header packets must be received by the
cannam@86 463 decoder before any audio data can be interpreted. These requirements
cannam@86 464 pose problems in RTP, which is often used over unreliable transports.
cannam@86 465
cannam@86 466 Since this information must be transmitted reliably and, as the RTP
cannam@86 467 stream may change certain configuration data mid-session, there are
cannam@86 468 different methods for delivering this configuration data to a client,
cannam@86 469 both in-band and out-of-band, which are detailed below. In order to
cannam@86 470 set up an initial state for the client application, the configuration
cannam@86 471 MUST be conveyed via the signalling channel used to set up the
cannam@86 472 session. One example of such signalling is SDP [RFC4566] with the
cannam@86 473 Offer/Answer Model [RFC3264]. Changes to the configuration MAY be
cannam@86 474 communicated via a re-invite, conveying a new SDP, or sent in-band in
cannam@86 475 the RTP channel. Implementations MUST support an in-band delivery of
cannam@86 476 updated codebooks, and SHOULD support out-of-band codebook update
cannam@86 477 using a new SDP file. The changes may be due to different codebooks
cannam@86 478 as well as different bitrates of the RTP stream.
cannam@86 479
cannam@86 480 For non-chained streams, the recommended Configuration delivery
cannam@86 481 method is inside the Packed Configuration (Section 3.1.1) in the SDP
cannam@86 482 as explained the Mapping Media Type Parameters into SDP
cannam@86 483 (Section 7.1).
cannam@86 484
cannam@86 485 The 24-bit Ident field is used to map which Configuration will be
cannam@86 486 used to decode a packet. When the Ident field changes, it indicates
cannam@86 487 that a change in the stream has taken place. The client application
cannam@86 488 MUST have in advance the correct configuration. If the client
cannam@86 489 detects a change in the Ident value and does not have this
cannam@86 490 information, it MUST NOT decode the raw associated Vorbis data until
cannam@86 491 it fetches the correct Configuration.
cannam@86 492
cannam@86 493 3.1. In-band Header Transmission
cannam@86 494
cannam@86 495 The Packed Configuration (Section 3.1.1) Payload is sent in-band with
cannam@86 496 the packet type bits set to match the Vorbis Data Type. Clients MUST
cannam@86 497 be capable of dealing with fragmentation and periodic re-transmission
cannam@86 498 of [RFC4588] the configuration headers. The RTP timestamp value MUST
cannam@86 499 reflect the transmission time of the first data packet for which this
cannam@86 500 configuration applies.
cannam@86 501
cannam@86 502
cannam@86 503
cannam@86 504
cannam@86 505
cannam@86 506 Barbato Standards Track [Page 9]
cannam@86 507
cannam@86 508 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 509
cannam@86 510
cannam@86 511 3.1.1. Packed Configuration
cannam@86 512
cannam@86 513 A Vorbis Packed Configuration is indicated with the Vorbis Data Type
cannam@86 514 field set to 1. Of the three headers defined in the Vorbis I
cannam@86 515 specification [VORBIS-SPEC-REF], the Identification and the Setup
cannam@86 516 MUST be packed as they are, while the Comment header MAY be replaced
cannam@86 517 with a dummy one.
cannam@86 518
cannam@86 519 The packed configuration stores Xiph codec configurations in a
cannam@86 520 generic way: the first field stores the number of the following
cannam@86 521 packets minus one (count field), the next ones represent the size of
cannam@86 522 the headers (length fields), and the headers immediately follow the
cannam@86 523 list of length fields. The size of the last header is implicit.
cannam@86 524
cannam@86 525 The count and the length fields are encoded using the following
cannam@86 526 logic: the data is in network byte order; every byte has the most
cannam@86 527 significant bit used as a flag, and the following 7 bits are used to
cannam@86 528 store the value. The first 7 most significant bits are stored in the
cannam@86 529 first byte. If there are remaining bits, the flag bit is set to 1
cannam@86 530 and the subsequent 7 bits are stored in the following byte. If there
cannam@86 531 are remaining bits, set the flag to 1 and the same procedure is
cannam@86 532 repeated. The ending byte has the flag bit set to 0. To decode,
cannam@86 533 simply iterate over the bytes until the flag bit is set to 0. For
cannam@86 534 every byte, the data is added to the accumulated value multiplied by
cannam@86 535 128.
cannam@86 536
cannam@86 537 The headers are packed in the same order as they are present in Ogg
cannam@86 538 [VORBIS-SPEC-REF]: Identification, Comment, Setup.
cannam@86 539
cannam@86 540 The 2 byte length tag defines the length of the packed headers as the
cannam@86 541 sum of the Configuration, Comment, and Setup lengths.
cannam@86 542
cannam@86 543
cannam@86 544
cannam@86 545
cannam@86 546
cannam@86 547
cannam@86 548
cannam@86 549
cannam@86 550
cannam@86 551
cannam@86 552
cannam@86 553
cannam@86 554
cannam@86 555
cannam@86 556
cannam@86 557
cannam@86 558
cannam@86 559
cannam@86 560
cannam@86 561
cannam@86 562 Barbato Standards Track [Page 10]
cannam@86 563
cannam@86 564 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 565
cannam@86 566
cannam@86 567 0 1 2 3
cannam@86 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
cannam@86 569 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 570 |V=2|P|X| CC |M| PT | xxxx |
cannam@86 571 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 572 | xxxxx |
cannam@86 573 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 574 | synchronization source (SSRC) identifier |
cannam@86 575 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 576 | contributing source (CSRC) identifiers |
cannam@86 577 | ... |
cannam@86 578 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 579 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 580 | Ident | 0 | 1 | 1|
cannam@86 581 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 582 | length | n. of headers | length1 |
cannam@86 583 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 584 | length2 | Identification ..
cannam@86 585 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 586 .. Identification ..
cannam@86 587 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 588 .. Identification ..
cannam@86 589 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 590 .. Identification ..
cannam@86 591 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 592 .. Identification | Comment ..
cannam@86 593 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 594 .. Comment ..
cannam@86 595 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 596 .. Comment ..
cannam@86 597 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 598 .. Comment ..
cannam@86 599 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 600 .. Comment | Setup ..
cannam@86 601 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 602 .. Setup ..
cannam@86 603 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 604 .. Setup ..
cannam@86 605 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 606
cannam@86 607 Figure 5: Packed Configuration Figure
cannam@86 608
cannam@86 609 The Ident field is set with the value that will be used by the Raw
cannam@86 610 Payload Packets to address this Configuration. The Fragment type is
cannam@86 611 set to 0 because the packet bears the full Packed configuration. The
cannam@86 612 number of the packet is set to 1.
cannam@86 613
cannam@86 614
cannam@86 615
cannam@86 616
cannam@86 617
cannam@86 618 Barbato Standards Track [Page 11]
cannam@86 619
cannam@86 620 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 621
cannam@86 622
cannam@86 623 3.2. Out of Band Transmission
cannam@86 624
cannam@86 625 The following packet definition MUST be used when Configuration is
cannam@86 626 inside in the SDP.
cannam@86 627
cannam@86 628 3.2.1. Packed Headers
cannam@86 629
cannam@86 630 As mentioned above, the RECOMMENDED delivery vector for Vorbis
cannam@86 631 configuration data is via a retrieval method that can be performed
cannam@86 632 using a reliable transport protocol. As the RTP headers are not
cannam@86 633 required for this method of delivery, the structure of the
cannam@86 634 configuration data is slightly different. The packed header starts
cannam@86 635 with a 32-bit (network-byte ordered) count field, which details the
cannam@86 636 number of packed headers that are contained in the bundle. The
cannam@86 637 following shows the Packed header payload for each chained Vorbis
cannam@86 638 stream.
cannam@86 639
cannam@86 640 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 641 | Number of packed headers |
cannam@86 642 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 643 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 644 | Packed header |
cannam@86 645 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 646 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 647 | Packed header |
cannam@86 648 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 649
cannam@86 650 Figure 6: Packed Headers Overview
cannam@86 651
cannam@86 652
cannam@86 653
cannam@86 654
cannam@86 655
cannam@86 656
cannam@86 657
cannam@86 658
cannam@86 659
cannam@86 660
cannam@86 661
cannam@86 662
cannam@86 663
cannam@86 664
cannam@86 665
cannam@86 666
cannam@86 667
cannam@86 668
cannam@86 669
cannam@86 670
cannam@86 671
cannam@86 672
cannam@86 673
cannam@86 674 Barbato Standards Track [Page 12]
cannam@86 675
cannam@86 676 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 677
cannam@86 678
cannam@86 679 0 1 2 3
cannam@86 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
cannam@86 681 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 682 | Ident | length ..
cannam@86 683 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 684 .. | n. of headers | length1 | length2 ..
cannam@86 685 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 686 .. | Identification Header ..
cannam@86 687 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 688 .................................................................
cannam@86 689 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 690 .. | Comment Header ..
cannam@86 691 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 692 .................................................................
cannam@86 693 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 694 .. Comment Header |
cannam@86 695 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 696 | Setup Header ..
cannam@86 697 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 698 .................................................................
cannam@86 699 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 700 .. Setup Header |
cannam@86 701 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 702
cannam@86 703 Figure 7: Packed Headers Detail
cannam@86 704
cannam@86 705 The key difference between the in-band format and this one is that
cannam@86 706 there is no need for the payload header octet. In this figure, the
cannam@86 707 comment has a size bigger than 127 bytes.
cannam@86 708
cannam@86 709 3.3. Loss of Configuration Headers
cannam@86 710
cannam@86 711 Unlike the loss of raw Vorbis payload data, loss of a configuration
cannam@86 712 header leads to a situation where it will not be possible to
cannam@86 713 successfully decode the stream. Implementations MAY try to recover
cannam@86 714 from an error by requesting again the missing Configuration or, if
cannam@86 715 the delivery method is in-band, by buffering the payloads waiting for
cannam@86 716 the Configuration needed to decode them. The baseline reaction
cannam@86 717 SHOULD either be reset or end the RTP session.
cannam@86 718
cannam@86 719 4. Comment Headers
cannam@86 720
cannam@86 721 Vorbis Data Type flag set to 2 indicates that the packet contains the
cannam@86 722 comment metadata, such as artist name, track title, and so on. These
cannam@86 723 metadata messages are not intended to be fully descriptive but rather
cannam@86 724 to offer basic track/song information. Clients MAY ignore it
cannam@86 725 completely. The details on the format of the comments can be found
cannam@86 726 in the Vorbis I Specification [VORBIS-SPEC-REF].
cannam@86 727
cannam@86 728
cannam@86 729
cannam@86 730 Barbato Standards Track [Page 13]
cannam@86 731
cannam@86 732 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 733
cannam@86 734
cannam@86 735 0 1 2 3
cannam@86 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
cannam@86 737 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 738 |V=2|P|X| CC |M| PT | xxxx |
cannam@86 739 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 740 | xxxxx |
cannam@86 741 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 742 | synchronization source (SSRC) identifier |
cannam@86 743 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 744 | contributing source (CSRC) identifiers |
cannam@86 745 | ... |
cannam@86 746 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 747 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 748 | Ident | 0 | 2 | 1|
cannam@86 749 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 750 | length | Comment ..
cannam@86 751 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 752 .. Comment ..
cannam@86 753 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 754 .. Comment |
cannam@86 755 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 756
cannam@86 757 Figure 8: Comment Packet
cannam@86 758
cannam@86 759 The 2-byte length field is necessary since this packet could be
cannam@86 760 fragmented.
cannam@86 761
cannam@86 762 5. Frame Packetization
cannam@86 763
cannam@86 764 Each RTP payload contains either one Vorbis packet fragment or an
cannam@86 765 integer number of complete Vorbis packets (up to a maximum of 15
cannam@86 766 packets, since the number of packets is defined by a 4-bit value).
cannam@86 767
cannam@86 768 Any Vorbis data packet that is less than path MTU SHOULD be bundled
cannam@86 769 in the RTP payload with as many Vorbis packets as will fit, up to a
cannam@86 770 maximum of 15, except when such bundling would exceed an
cannam@86 771 application's desired transmission latency. Path MTU is detailed in
cannam@86 772 [RFC1191] and [RFC1981].
cannam@86 773
cannam@86 774 A fragmented packet has a zero in the last four bits of the payload
cannam@86 775 header. The first fragment will set the Fragment type to 1. Each
cannam@86 776 fragment after the first will set the Fragment type to 2 in the
cannam@86 777 payload header. The consecutive fragments MUST be sent without any
cannam@86 778 other payload being sent between the first and the last fragment.
cannam@86 779 The RTP payload containing the last fragment of the Vorbis packet
cannam@86 780 will have the Fragment type set to 3. To maintain the correct
cannam@86 781 sequence for fragmented packet reception, the timestamp field of
cannam@86 782 fragmented packets MUST be the same as the first packet sent, with
cannam@86 783
cannam@86 784
cannam@86 785
cannam@86 786 Barbato Standards Track [Page 14]
cannam@86 787
cannam@86 788 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 789
cannam@86 790
cannam@86 791 the sequence number incremented as normal for the subsequent RTP
cannam@86 792 payloads; this will affect the RTCP jitter measurement. The length
cannam@86 793 field shows the fragment length.
cannam@86 794
cannam@86 795 5.1. Example Fragmented Vorbis Packet
cannam@86 796
cannam@86 797 Here is an example of a fragmented Vorbis packet split over three RTP
cannam@86 798 payloads. Each of them contains the standard RTP headers as well as
cannam@86 799 the 4-octet Vorbis headers.
cannam@86 800
cannam@86 801 Packet 1:
cannam@86 802
cannam@86 803 0 1 2 3
cannam@86 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
cannam@86 805 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 806 |V=2|P|X| CC |M| PT | 1000 |
cannam@86 807 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 808 | 12345 |
cannam@86 809 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 810 | synchronization source (SSRC) identifier |
cannam@86 811 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 812 | contributing source (CSRC) identifiers |
cannam@86 813 | ... |
cannam@86 814 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 815 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 816 | Ident | 1 | 0 | 0|
cannam@86 817 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 818 | length | vorbis data ..
cannam@86 819 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 820 .. vorbis data |
cannam@86 821 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 822
cannam@86 823 Figure 9: Example Fragmented Packet (Packet 1)
cannam@86 824
cannam@86 825 In this payload, the initial sequence number is 1000 and the
cannam@86 826 timestamp is 12345. The Fragment type is set to 1, the number of
cannam@86 827 packets field is set to 0, and as the payload is raw Vorbis data, the
cannam@86 828 VDT field is set to 0.
cannam@86 829
cannam@86 830
cannam@86 831
cannam@86 832
cannam@86 833
cannam@86 834
cannam@86 835
cannam@86 836
cannam@86 837
cannam@86 838
cannam@86 839
cannam@86 840
cannam@86 841
cannam@86 842 Barbato Standards Track [Page 15]
cannam@86 843
cannam@86 844 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 845
cannam@86 846
cannam@86 847 Packet 2:
cannam@86 848
cannam@86 849 0 1 2 3
cannam@86 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
cannam@86 851 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 852 |V=2|P|X| CC |M| PT | 1001 |
cannam@86 853 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 854 | 12345 |
cannam@86 855 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 856 | synchronization source (SSRC) identifier |
cannam@86 857 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 858 | contributing source (CSRC) identifiers |
cannam@86 859 | ... |
cannam@86 860 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 861 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 862 | Ident | 2 | 0 | 0|
cannam@86 863 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 864 | length | vorbis data ..
cannam@86 865 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 866 .. vorbis data |
cannam@86 867 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 868
cannam@86 869 Figure 10: Example Fragmented Packet (Packet 2)
cannam@86 870
cannam@86 871 The Fragment type field is set to 2, and the number of packets field
cannam@86 872 is set to 0. For large Vorbis fragments, there can be several of
cannam@86 873 these types of payloads. The maximum packet size SHOULD be no
cannam@86 874 greater than the path MTU, including all RTP and payload headers.
cannam@86 875 The sequence number has been incremented by one, but the timestamp
cannam@86 876 field remains the same as the initial payload.
cannam@86 877
cannam@86 878
cannam@86 879
cannam@86 880
cannam@86 881
cannam@86 882
cannam@86 883
cannam@86 884
cannam@86 885
cannam@86 886
cannam@86 887
cannam@86 888
cannam@86 889
cannam@86 890
cannam@86 891
cannam@86 892
cannam@86 893
cannam@86 894
cannam@86 895
cannam@86 896
cannam@86 897
cannam@86 898 Barbato Standards Track [Page 16]
cannam@86 899
cannam@86 900 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 901
cannam@86 902
cannam@86 903 Packet 3:
cannam@86 904
cannam@86 905 0 1 2 3
cannam@86 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
cannam@86 907 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 908 |V=2|P|X| CC |M| PT | 1002 |
cannam@86 909 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 910 | 12345 |
cannam@86 911 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 912 | synchronization source (SSRC) identifier |
cannam@86 913 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
cannam@86 914 | contributing source (CSRC) identifiers |
cannam@86 915 | ... |
cannam@86 916 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 917 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 918 | Ident | 3 | 0 | 0|
cannam@86 919 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 920 | length | vorbis data ..
cannam@86 921 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 922 .. vorbis data |
cannam@86 923 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cannam@86 924
cannam@86 925 Figure 11: Example Fragmented Packet (Packet 3)
cannam@86 926
cannam@86 927 This is the last Vorbis fragment payload. The Fragment type is set
cannam@86 928 to 3 and the packet count remains set to 0. As in the previous
cannam@86 929 payloads, the timestamp remains set to the first payload timestamp in
cannam@86 930 the sequence and the sequence number has been incremented.
cannam@86 931
cannam@86 932 5.2. Packet Loss
cannam@86 933
cannam@86 934 As there is no error correction within the Vorbis stream, packet loss
cannam@86 935 will result in a loss of signal. Packet loss is more of an issue for
cannam@86 936 fragmented Vorbis packets as the client will have to cope with the
cannam@86 937 handling of the Fragment Type. In case of loss of fragments, the
cannam@86 938 client MUST discard all the remaining Vorbis fragments and decode the
cannam@86 939 incomplete packet. If we use the fragmented Vorbis packet example
cannam@86 940 above and the first RTP payload is lost, the client MUST detect that
cannam@86 941 the next RTP payload has the packet count field set to 0 and the
cannam@86 942 Fragment type 2 and MUST drop it. The next RTP payload, which is the
cannam@86 943 final fragmented packet, MUST be dropped in the same manner. If the
cannam@86 944 missing RTP payload is the last, the two fragments received will be
cannam@86 945 kept and the incomplete Vorbis packet decoded.
cannam@86 946
cannam@86 947 Loss of any of the Configuration fragment will result in the loss of
cannam@86 948 the full Configuration packet with the result detailed in the Loss of
cannam@86 949 Configuration Headers (Section 3.3) section.
cannam@86 950
cannam@86 951
cannam@86 952
cannam@86 953
cannam@86 954 Barbato Standards Track [Page 17]
cannam@86 955
cannam@86 956 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 957
cannam@86 958
cannam@86 959 6. IANA Considerations
cannam@86 960
cannam@86 961 Type name: audio
cannam@86 962
cannam@86 963 Subtype name: vorbis
cannam@86 964
cannam@86 965 Required parameters:
cannam@86 966
cannam@86 967 rate: indicates the RTP timestamp clock rate as described in RTP
cannam@86 968 Profile for Audio and Video Conferences with Minimal Control
cannam@86 969 [RFC3551].
cannam@86 970
cannam@86 971 channels: indicates the number of audio channels as described in
cannam@86 972 RTP Profile for Audio and Video Conferences with Minimal
cannam@86 973 Control [RFC3551].
cannam@86 974
cannam@86 975 configuration: the base64 [RFC4648] representation of the Packed
cannam@86 976 Headers (Section 3.2.1).
cannam@86 977
cannam@86 978 Encoding considerations:
cannam@86 979
cannam@86 980 This media type is framed and contains binary data.
cannam@86 981
cannam@86 982 Security considerations:
cannam@86 983
cannam@86 984 See Section 10 of RFC 5215.
cannam@86 985
cannam@86 986 Interoperability considerations:
cannam@86 987
cannam@86 988 None
cannam@86 989
cannam@86 990 Published specification:
cannam@86 991
cannam@86 992 RFC 5215
cannam@86 993
cannam@86 994 Ogg Vorbis I specification: Codec setup and packet decode.
cannam@86 995 Available from the Xiph website, http://xiph.org/
cannam@86 996
cannam@86 997 Applications which use this media type:
cannam@86 998
cannam@86 999 Audio streaming and conferencing tools
cannam@86 1000
cannam@86 1001 Additional information:
cannam@86 1002
cannam@86 1003 None
cannam@86 1004
cannam@86 1005
cannam@86 1006
cannam@86 1007
cannam@86 1008
cannam@86 1009
cannam@86 1010 Barbato Standards Track [Page 18]
cannam@86 1011
cannam@86 1012 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1013
cannam@86 1014
cannam@86 1015 Person & email address to contact for further information:
cannam@86 1016
cannam@86 1017 Luca Barbato: <lu_zero@gentoo.org>
cannam@86 1018 IETF Audio/Video Transport Working Group
cannam@86 1019
cannam@86 1020 Intended usage:
cannam@86 1021
cannam@86 1022 COMMON
cannam@86 1023
cannam@86 1024 Restriction on usage:
cannam@86 1025
cannam@86 1026 This media type depends on RTP framing, hence is only defined for
cannam@86 1027 transfer via RTP [RFC3550].
cannam@86 1028
cannam@86 1029 Author:
cannam@86 1030
cannam@86 1031 Luca Barbato
cannam@86 1032
cannam@86 1033 Change controller:
cannam@86 1034
cannam@86 1035 IETF AVT Working Group delegated from the IESG
cannam@86 1036
cannam@86 1037 6.1. Packed Headers IANA Considerations
cannam@86 1038
cannam@86 1039 The following IANA considerations refers to the split configuration
cannam@86 1040 Packed Headers (Section 3.2.1) used within RFC 5215.
cannam@86 1041
cannam@86 1042 Type name: audio
cannam@86 1043
cannam@86 1044 Subtype name: vorbis-config
cannam@86 1045
cannam@86 1046 Required parameters:
cannam@86 1047
cannam@86 1048 None
cannam@86 1049
cannam@86 1050 Optional parameters:
cannam@86 1051
cannam@86 1052 None
cannam@86 1053
cannam@86 1054 Encoding considerations:
cannam@86 1055
cannam@86 1056 This media type contains binary data.
cannam@86 1057
cannam@86 1058 Security considerations:
cannam@86 1059
cannam@86 1060 See Section 10 of RFC 5215.
cannam@86 1061
cannam@86 1062
cannam@86 1063
cannam@86 1064
cannam@86 1065
cannam@86 1066 Barbato Standards Track [Page 19]
cannam@86 1067
cannam@86 1068 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1069
cannam@86 1070
cannam@86 1071 Interoperability considerations:
cannam@86 1072
cannam@86 1073 None
cannam@86 1074
cannam@86 1075 Published specification:
cannam@86 1076
cannam@86 1077 RFC 5215
cannam@86 1078
cannam@86 1079 Applications which use this media type:
cannam@86 1080
cannam@86 1081 Vorbis encoded audio, configuration data
cannam@86 1082
cannam@86 1083 Additional information:
cannam@86 1084
cannam@86 1085 None
cannam@86 1086
cannam@86 1087 Person & email address to contact for further information:
cannam@86 1088
cannam@86 1089 Luca Barbato: <lu_zero@gentoo.org>
cannam@86 1090 IETF Audio/Video Transport Working Group
cannam@86 1091
cannam@86 1092 Intended usage: COMMON
cannam@86 1093
cannam@86 1094 Restriction on usage:
cannam@86 1095
cannam@86 1096 This media type doesn't depend on the transport.
cannam@86 1097
cannam@86 1098 Author:
cannam@86 1099
cannam@86 1100 Luca Barbato
cannam@86 1101
cannam@86 1102 Change controller:
cannam@86 1103
cannam@86 1104 IETF AVT Working Group delegated from the IESG
cannam@86 1105
cannam@86 1106 7. SDP Related Considerations
cannam@86 1107
cannam@86 1108 The following paragraphs define the mapping of the parameters
cannam@86 1109 described in the IANA considerations section and their usage in the
cannam@86 1110 Offer/Answer Model [RFC3264]. In order to be forward compatible, the
cannam@86 1111 implementation MUST ignore unknown parameters.
cannam@86 1112
cannam@86 1113 7.1. Mapping Media Type Parameters into SDP
cannam@86 1114
cannam@86 1115 The information carried in the Media Type specification has a
cannam@86 1116 specific mapping to fields in the Session Description Protocol (SDP)
cannam@86 1117 [RFC4566], which is commonly used to describe RTP sessions. When SDP
cannam@86 1118 is used to specify sessions, the mapping are as follows:
cannam@86 1119
cannam@86 1120
cannam@86 1121
cannam@86 1122 Barbato Standards Track [Page 20]
cannam@86 1123
cannam@86 1124 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1125
cannam@86 1126
cannam@86 1127 o The type name ("audio") goes in SDP "m=" as the media name.
cannam@86 1128
cannam@86 1129 o The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding
cannam@86 1130 name.
cannam@86 1131
cannam@86 1132 o The parameter "rate" also goes in "a=rtpmap" as the clock rate.
cannam@86 1133
cannam@86 1134 o The parameter "channels" also goes in "a=rtpmap" as the channel
cannam@86 1135 count.
cannam@86 1136
cannam@86 1137 o The mandated parameters "configuration" MUST be included in the
cannam@86 1138 SDP "a=fmtp" attribute.
cannam@86 1139
cannam@86 1140 If the stream comprises chained Vorbis files and all of them are
cannam@86 1141 known in advance, the Configuration Packet for each file SHOULD be
cannam@86 1142 passed to the client using the configuration attribute.
cannam@86 1143
cannam@86 1144 The port value is specified by the server application bound to the
cannam@86 1145 address specified in the c= line. The channel count value specified
cannam@86 1146 in the rtpmap attribute SHOULD match the current Vorbis stream or
cannam@86 1147 should be considered the maximum number of channels to be expected.
cannam@86 1148 The timestamp clock rate MUST be a multiple of the sample rate; a
cannam@86 1149 different payload number MUST be used if the clock rate changes. The
cannam@86 1150 Configuration payload delivers the exact information, thus the SDP
cannam@86 1151 information SHOULD be considered a hint. An example is found below.
cannam@86 1152
cannam@86 1153 7.1.1. SDP Example
cannam@86 1154
cannam@86 1155 The following example shows a basic SDP single stream. The first
cannam@86 1156 configuration packet is inside the SDP; other configurations could be
cannam@86 1157 fetched at any time from the URIs provided. The following base64
cannam@86 1158 [RFC4648] configuration string is folded in this example due to RFC
cannam@86 1159 line length limitations.
cannam@86 1160
cannam@86 1161 c=IN IP4 192.0.2.1
cannam@86 1162
cannam@86 1163 m=audio RTP/AVP 98
cannam@86 1164
cannam@86 1165 a=rtpmap:98 vorbis/44100/2
cannam@86 1166
cannam@86 1167 a=fmtp:98 configuration=AAAAAZ2f4g9NAh4aAXZvcmJpcwA...;
cannam@86 1168
cannam@86 1169 Note that the payload format (encoding) names are commonly shown in
cannam@86 1170 uppercase. Media Type subtypes are commonly shown in lowercase.
cannam@86 1171 These names are case-insensitive in both places. Similarly,
cannam@86 1172 parameter names are case-insensitive both in Media Type types and in
cannam@86 1173 the default mapping to the SDP a=fmtp attribute. The a=fmtp line is
cannam@86 1174
cannam@86 1175
cannam@86 1176
cannam@86 1177
cannam@86 1178 Barbato Standards Track [Page 21]
cannam@86 1179
cannam@86 1180 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1181
cannam@86 1182
cannam@86 1183 a single line, even if it is shown as multiple lines in this document
cannam@86 1184 for clarity.
cannam@86 1185
cannam@86 1186 7.2. Usage with the SDP Offer/Answer Model
cannam@86 1187
cannam@86 1188 There are no negotiable parameters. All of them are declarative.
cannam@86 1189
cannam@86 1190 8. Congestion Control
cannam@86 1191
cannam@86 1192 The general congestion control considerations for transporting RTP
cannam@86 1193 data apply to Vorbis audio over RTP as well. See the RTP
cannam@86 1194 specification [RFC3550] and any applicable RTP profile (e.g.,
cannam@86 1195 [RFC3551]). Audio data can be encoded using a range of different bit
cannam@86 1196 rates, so it is possible to adapt network bandwidth by adjusting the
cannam@86 1197 encoder bit rate in real time or by having multiple copies of content
cannam@86 1198 encoded at different bit rates.
cannam@86 1199
cannam@86 1200 9. Example
cannam@86 1201
cannam@86 1202 The following example shows a common usage pattern that MAY be
cannam@86 1203 applied in such a situation. The main scope of this section is to
cannam@86 1204 explain better usage of the transmission vectors.
cannam@86 1205
cannam@86 1206 9.1. Stream Radio
cannam@86 1207
cannam@86 1208 This is one of the most common situations: there is one single server
cannam@86 1209 streaming content in multicast, and the clients may start a session
cannam@86 1210 at a random time. The content itself could be a mix of a live stream
cannam@86 1211 (as the webjockey's voice) and stored streams (as the music she
cannam@86 1212 plays).
cannam@86 1213
cannam@86 1214 In this situation, we don't know in advance how many codebooks we
cannam@86 1215 will use. The clients can join anytime and users expect to start
cannam@86 1216 listening to the content in a short time.
cannam@86 1217
cannam@86 1218 Upon joining, the client will receive the current Configuration
cannam@86 1219 necessary to decode the current stream inside the SDP so that the
cannam@86 1220 decoding will start immediately after.
cannam@86 1221
cannam@86 1222 When the streamed content changes, the new Configuration is sent in-
cannam@86 1223 band before the actual stream, and the Configuration that has to be
cannam@86 1224 sent inside the SDP is updated. Since the in-band method is
cannam@86 1225 unreliable, an out-of-band fallback is provided.
cannam@86 1226
cannam@86 1227 The client may choose to fetch the Configuration from the alternate
cannam@86 1228 source as soon as it discovers a Configuration packet got lost in-
cannam@86 1229 band, or use selective retransmission [RFC3611] if the server
cannam@86 1230 supports this feature.
cannam@86 1231
cannam@86 1232
cannam@86 1233
cannam@86 1234 Barbato Standards Track [Page 22]
cannam@86 1235
cannam@86 1236 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1237
cannam@86 1238
cannam@86 1239 A server-side optimization would be to keep a hash list of the
cannam@86 1240 Configurations per session, which avoids packing all of them and
cannam@86 1241 sending the same Configuration with different Ident tags.
cannam@86 1242
cannam@86 1243 A client-side optimization would be to keep a tag list of the
cannam@86 1244 Configurations per session and not process configuration packets that
cannam@86 1245 are already known.
cannam@86 1246
cannam@86 1247 10. Security Considerations
cannam@86 1248
cannam@86 1249 RTP packets using this payload format are subject to the security
cannam@86 1250 considerations discussed in the RTP specification [RFC3550], the
cannam@86 1251 base64 specification [RFC4648], and the URI Generic syntax
cannam@86 1252 specification [RFC3986]. Among other considerations, this implies
cannam@86 1253 that the confidentiality of the media stream is achieved by using
cannam@86 1254 encryption. Because the data compression used with this payload
cannam@86 1255 format is applied end-to-end, encryption may be performed on the
cannam@86 1256 compressed data.
cannam@86 1257
cannam@86 1258 11. Copying Conditions
cannam@86 1259
cannam@86 1260 The authors agree to grant third parties the irrevocable right to
cannam@86 1261 copy, use, and distribute the work, with or without modification, in
cannam@86 1262 any medium, without royalty, provided that, unless separate
cannam@86 1263 permission is granted, redistributed modified works do not contain
cannam@86 1264 misleading author, version, name of work, or endorsement information.
cannam@86 1265
cannam@86 1266 12. Acknowledgments
cannam@86 1267
cannam@86 1268 This document is a continuation of the following documents:
cannam@86 1269
cannam@86 1270 Moffitt, J., "RTP Payload Format for Vorbis Encoded Audio", February
cannam@86 1271 2001.
cannam@86 1272
cannam@86 1273 Kerr, R., "RTP Payload Format for Vorbis Encoded Audio", December
cannam@86 1274 2004.
cannam@86 1275
cannam@86 1276 The Media Type declaration is a continuation of the following
cannam@86 1277 document:
cannam@86 1278
cannam@86 1279 Short, B., "The audio/rtp-vorbis MIME Type", January 2008.
cannam@86 1280
cannam@86 1281 Thanks to the AVT, Vorbis Communities / Xiph.Org Foundation including
cannam@86 1282 Steve Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia,
cannam@86 1283 Pascal Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John
cannam@86 1284 Lazzaro, Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry
cannam@86 1285 Short, Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund,
cannam@86 1286 David Barrett, Silvia Pfeiffer, Stefan Ehmann, Gianni Ceccarelli, and
cannam@86 1287
cannam@86 1288
cannam@86 1289
cannam@86 1290 Barbato Standards Track [Page 23]
cannam@86 1291
cannam@86 1292 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1293
cannam@86 1294
cannam@86 1295 Alessandro Salvatori. Thanks to the LScube Group, in particular
cannam@86 1296 Federico Ridolfo, Francesco Varano, Giampaolo Mancini, Dario
cannam@86 1297 Gallucci, and Juan Carlos De Martin.
cannam@86 1298
cannam@86 1299 13. References
cannam@86 1300
cannam@86 1301 13.1. Normative References
cannam@86 1302
cannam@86 1303 [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery",
cannam@86 1304 RFC 1191, November 1990.
cannam@86 1305
cannam@86 1306 [RFC1981] McCann, J., Deering, S., and J. Mogul, "Path MTU
cannam@86 1307 Discovery for IP version 6", RFC 1981,
cannam@86 1308 August 1996.
cannam@86 1309
cannam@86 1310 [RFC2119] Bradner, S., "Key words for use in RFCs to
cannam@86 1311 Indicate Requirement Levels", BCP 14, RFC 2119,
cannam@86 1312 March 1997.
cannam@86 1313
cannam@86 1314 [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer
cannam@86 1315 Model with Session Description Protocol (SDP)",
cannam@86 1316 RFC 3264, June 2002.
cannam@86 1317
cannam@86 1318 [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
cannam@86 1319 Jacobson, "RTP: A Transport Protocol for Real-Time
cannam@86 1320 Applications", STD 64, RFC 3550, July 2003.
cannam@86 1321
cannam@86 1322 [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for
cannam@86 1323 Audio and Video Conferences with Minimal Control",
cannam@86 1324 STD 65, RFC 3551, July 2003.
cannam@86 1325
cannam@86 1326 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter,
cannam@86 1327 "Uniform Resource Identifier (URI): Generic
cannam@86 1328 Syntax", STD 66, RFC 3986, January 2005.
cannam@86 1329
cannam@86 1330 [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP:
cannam@86 1331 Session Description Protocol", RFC 4566,
cannam@86 1332 July 2006.
cannam@86 1333
cannam@86 1334 [RFC4648] Josefsson, S., "The Base16, Base32, and Base64
cannam@86 1335 Data Encodings", RFC 4648, October 2006.
cannam@86 1336
cannam@86 1337 [VORBIS-SPEC-REF] "Ogg Vorbis I specification: Codec setup and
cannam@86 1338 packet decode. Available from the Xiph website,
cannam@86 1339 http://xiph.org/vorbis/doc/Vorbis_I_spec.html".
cannam@86 1340
cannam@86 1341
cannam@86 1342
cannam@86 1343
cannam@86 1344
cannam@86 1345
cannam@86 1346 Barbato Standards Track [Page 24]
cannam@86 1347
cannam@86 1348 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1349
cannam@86 1350
cannam@86 1351 13.2. Informative References
cannam@86 1352
cannam@86 1353 [LIBVORBIS] "libvorbis: Available from the dedicated website,
cannam@86 1354 http://vorbis.com/".
cannam@86 1355
cannam@86 1356 [RFC3533] Pfeiffer, S., "The Ogg Encapsulation Format
cannam@86 1357 Version 0", RFC 3533, May 2003.
cannam@86 1358
cannam@86 1359 [RFC3611] Friedman, T., Caceres, R., and A. Clark, "RTP
cannam@86 1360 Control Protocol Extended Reports (RTCP XR)",
cannam@86 1361 RFC 3611, November 2003.
cannam@86 1362
cannam@86 1363 [RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
cannam@86 1364 Hakenberg, "RTP Retransmission Payload Format",
cannam@86 1365 RFC 4588, July 2006.
cannam@86 1366
cannam@86 1367 Author's Address
cannam@86 1368
cannam@86 1369 Luca Barbato
cannam@86 1370 Xiph.Org Foundation
cannam@86 1371
cannam@86 1372 EMail: lu_zero@gentoo.org
cannam@86 1373 URI: http://xiph.org/
cannam@86 1374
cannam@86 1375
cannam@86 1376
cannam@86 1377
cannam@86 1378
cannam@86 1379
cannam@86 1380
cannam@86 1381
cannam@86 1382
cannam@86 1383
cannam@86 1384
cannam@86 1385
cannam@86 1386
cannam@86 1387
cannam@86 1388
cannam@86 1389
cannam@86 1390
cannam@86 1391
cannam@86 1392
cannam@86 1393
cannam@86 1394
cannam@86 1395
cannam@86 1396
cannam@86 1397
cannam@86 1398
cannam@86 1399
cannam@86 1400
cannam@86 1401
cannam@86 1402 Barbato Standards Track [Page 25]
cannam@86 1403
cannam@86 1404 RFC 5215 Vorbis RTP Payload Format August 2008
cannam@86 1405
cannam@86 1406
cannam@86 1407 Full Copyright Statement
cannam@86 1408
cannam@86 1409 Copyright (C) The IETF Trust (2008).
cannam@86 1410
cannam@86 1411 This document is subject to the rights, licenses and restrictions
cannam@86 1412 contained in BCP 78, and except as set forth therein, the authors
cannam@86 1413 retain all their rights.
cannam@86 1414
cannam@86 1415 This document and the information contained herein are provided on an
cannam@86 1416 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
cannam@86 1417 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
cannam@86 1418 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
cannam@86 1419 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
cannam@86 1420 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
cannam@86 1421 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
cannam@86 1422
cannam@86 1423 Intellectual Property
cannam@86 1424
cannam@86 1425 The IETF takes no position regarding the validity or scope of any
cannam@86 1426 Intellectual Property Rights or other rights that might be claimed to
cannam@86 1427 pertain to the implementation or use of the technology described in
cannam@86 1428 this document or the extent to which any license under such rights
cannam@86 1429 might or might not be available; nor does it represent that it has
cannam@86 1430 made any independent effort to identify any such rights. Information
cannam@86 1431 on the procedures with respect to rights in RFC documents can be
cannam@86 1432 found in BCP 78 and BCP 79.
cannam@86 1433
cannam@86 1434 Copies of IPR disclosures made to the IETF Secretariat and any
cannam@86 1435 assurances of licenses to be made available, or the result of an
cannam@86 1436 attempt made to obtain a general license or permission for the use of
cannam@86 1437 such proprietary rights by implementers or users of this
cannam@86 1438 specification can be obtained from the IETF on-line IPR repository at
cannam@86 1439 http://www.ietf.org/ipr.
cannam@86 1440
cannam@86 1441 The IETF invites any interested party to bring to its attention any
cannam@86 1442 copyrights, patents or patent applications, or other proprietary
cannam@86 1443 rights that may cover technology that may be required to implement
cannam@86 1444 this standard. Please address the information to the IETF at
cannam@86 1445 ietf-ipr@ietf.org.
cannam@86 1446
cannam@86 1447
cannam@86 1448
cannam@86 1449
cannam@86 1450
cannam@86 1451
cannam@86 1452
cannam@86 1453
cannam@86 1454
cannam@86 1455
cannam@86 1456
cannam@86 1457
cannam@86 1458 Barbato Standards Track [Page 26]
cannam@86 1459