annotate src/libvorbis-1.3.3/doc/rfc5215.txt @ 56:af97cad61ff0

Add updated build of PortAudio for OSX
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 03 Jan 2017 15:10:52 +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