annotate src/libvorbis-1.3.3/doc/rfc5215.txt @ 83:ae30d91d2ffe

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