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