| < draft-ietf-avt-rtp-vorbis-08.txt | draft-ietf-avt-rtp-vorbis-09.txt > | |||
|---|---|---|---|---|
| AVT Working Group L. Barbato | AVT Working Group L. Barbato | |||
| Internet-Draft Xiph.Org | Internet-Draft Xiph | |||
| Expires: May 20, 2008 Nov 17, 2007 | Expires: August 20, 2008 Feb 17, 2008 | |||
| draft-ietf-avt-rtp-vorbis-08 | ||||
| RTP Payload Format for Vorbis Encoded Audio | RTP Payload Format for Vorbis Encoded Audio | |||
| draft-ietf-avt-rtp-vorbis-09 | ||||
| Status of this Memo | Status of This Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on May 20, 2008. | This Internet-Draft will expire on August 20, 2008. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| Abstract | Abstract | |||
| This document describes an RTP payload format for transporting Vorbis | This document describes an RTP payload format for transporting Vorbis | |||
| encoded audio. It details the RTP encapsulation mechanism for raw | encoded audio. It details the RTP encapsulation mechanism for raw | |||
| Vorbis data and details the delivery mechanisms for the decoder | Vorbis data and details the delivery mechanisms for the decoder | |||
| probability model, referred to as a codebook and other setup | probability model, referred to as a codebook and other setup | |||
| information. | information. | |||
| Also included within this memo are media type registrations, and the | Also included within this memo are media type registrations, and the | |||
| skipping to change at page 2, line 13 ¶ | skipping to change at page 2, line 13 ¶ | |||
| Protocol (SDP). | Protocol (SDP). | |||
| Editors Note | Editors Note | |||
| All references to RFC XXXX are to be replaced by references to the | All references to RFC XXXX are to be replaced by references to the | |||
| RFC number of this memo, when published. | RFC number of this memo, when published. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Conformance and Document Conventions . . . . . . . . . . . 3 | |||
| 2. Payload Format . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Payload Format . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Payload Header . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Payload Header . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.3. Payload Data . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. Payload Data . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.4. Example RTP Packet . . . . . . . . . . . . . . . . . . . . 7 | 2.4. Example RTP Packet . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3. Configuration Headers . . . . . . . . . . . . . . . . . . . . 8 | 3. Configuration Headers . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1. In-band Header Transmission . . . . . . . . . . . . . . . 9 | 3.1. In-band Header Transmission . . . . . . . . . . . . . . . 9 | |||
| 3.1.1. Packed Configuration . . . . . . . . . . . . . . . . . 9 | 3.1.1. Packed Configuration . . . . . . . . . . . . . . . . . 9 | |||
| 3.2. Out of Band Transmission . . . . . . . . . . . . . . . . . 11 | 3.2. Out of Band Transmission . . . . . . . . . . . . . . . . . 11 | |||
| 3.2.1. Packed Headers . . . . . . . . . . . . . . . . . . . . 11 | 3.2.1. Packed Headers . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.3. Loss of Configuration Headers . . . . . . . . . . . . . . 12 | 3.3. Loss of Configuration Headers . . . . . . . . . . . . . . 12 | |||
| 4. Comment Headers . . . . . . . . . . . . . . . . . . . . . . . 12 | 4. Comment Headers . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5. Frame Packetization . . . . . . . . . . . . . . . . . . . . . 13 | 5. Frame Packetization . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.1. Example Fragmented Vorbis Packet . . . . . . . . . . . . . 14 | 5.1. Example Fragmented Vorbis Packet . . . . . . . . . . . . . 14 | |||
| 5.2. Packet Loss . . . . . . . . . . . . . . . . . . . . . . . 16 | 5.2. Packet Loss . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 6.1. Packed Headers IANA Considerations . . . . . . . . . . . . 18 | 6.1. Packed Headers IANA Considerations . . . . . . . . . . . . 18 | |||
| 7. SDP related considerations . . . . . . . . . . . . . . . . . . 20 | 7. SDP related considerations . . . . . . . . . . . . . . . . . . 19 | |||
| 7.1. Mapping Media Type Parameters into SDP . . . . . . . . . . 20 | 7.1. Mapping Media Type Parameters into SDP . . . . . . . . . . 20 | |||
| 7.1.1. SDP Example . . . . . . . . . . . . . . . . . . . . . 21 | 7.1.1. SDP Example . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.2. Usage with the SDP Offer/Answer Model . . . . . . . . . . 21 | 7.2. Usage with the SDP Offer/Answer Model . . . . . . . . . . 21 | |||
| 8. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 8. Congestion Control . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 8.1. Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 22 | 9. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | 9.1. Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 11. Copying Conditions . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . . 23 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . . 24 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 13.1. Normative References . . . . . . . . . . . . . . . . . . . 23 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 25 | 13.2. Informative References . . . . . . . . . . . . . . . . . . 23 | |||
| 1. Introduction | 1. Introduction | |||
| Vorbis is a general purpose perceptual audio codec intended to allow | Vorbis is a general purpose perceptual audio codec intended to allow | |||
| maximum encoder flexibility, thus allowing it to scale competitively | maximum encoder flexibility, thus allowing it to scale competitively | |||
| over an exceptionally wide range of bitrates. At the high quality/ | over an exceptionally wide range of bitrates. At the high quality/ | |||
| bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is | bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is | |||
| in the same league as MPEG-4 AAC. Vorbis is also intended for lower | in the same league as MPEG-4 AAC. Vorbis is also intended for lower | |||
| and higher sample rates (from 8kHz telephony to 192kHz digital | and higher sample rates (from 8kHz telephony to 192kHz digital | |||
| masters) and a range of channel representations (monaural, | masters) and a range of channel representations (monaural, | |||
| polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255 | polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255 | |||
| discrete channels). | discrete channels). | |||
| Vorbis encoded audio is generally encapsulated within an Ogg format | Vorbis encoded audio is generally encapsulated within an Ogg format | |||
| bitstream [11], which provides framing and synchronization. For the | bitstream [11], which provides framing and synchronization. For the | |||
| purposes of RTP transport, this layer is unnecessary, and so raw | purposes of RTP transport, this layer is unnecessary, and so raw | |||
| Vorbis packets are used in the payload. | Vorbis packets are used in the payload. | |||
| 1.1. Terminology | 1.1. Conformance and Document Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [1]. | document are to be interpreted as described in BCP 14, [1] and | |||
| indicate requirement levels for compliant implementations. | ||||
| Requirements apply to all implementations unless otherwise stated. | ||||
| An implementation is a software module that supports one of the media | ||||
| types defined in this document. Software modules may support | ||||
| multiple media types, but conformance is considered individually for | ||||
| each type. | ||||
| Implementations that fail to satisfy one or more "MUST" requirements | ||||
| are considered non-compliant. Implementations that satisfy all | ||||
| "MUST" requirements, but fail to satisfy one or more "SHOULD" | ||||
| requirements, are said to be "conditionally compliant". All other | ||||
| implementations are "unconditionally compliant". | ||||
| 2. Payload Format | 2. Payload Format | |||
| For RTP based transport of Vorbis encoded audio the standard RTP | For RTP based transport of Vorbis encoded audio the standard RTP | |||
| header is followed by a 4 octets payload header, then the payload | header is followed by a 4 octets payload header, then the payload | |||
| data. The payload headers are used to associate the Vorbis data with | data. The payload headers are used to associate the Vorbis data with | |||
| its associated decoding codebooks as well as indicating if the | its associated decoding codebooks as well as indicating if the | |||
| following packet contains fragmented Vorbis data and/or the number of | following packet contains fragmented Vorbis data and/or the number of | |||
| whole Vorbis data frames. The payload data contains the raw Vorbis | whole Vorbis data frames. The payload data contains the raw Vorbis | |||
| bitstream information. There are 3 types of Vorbis data, an RTP | bitstream information. There are 3 types of Vorbis data, an RTP | |||
| skipping to change at page 8, line 29 ¶ | skipping to change at page 8, line 36 ¶ | |||
| comment header packet which gives simple metadata about the stream, | comment header packet which gives simple metadata about the stream, | |||
| but this information is not required for decoding the frame sequence. | but this information is not required for decoding the frame sequence. | |||
| Thus these two codebook header packets must be received by the | Thus these two codebook header packets must be received by the | |||
| decoder before any audio data can be interpreted. These requirements | decoder before any audio data can be interpreted. These requirements | |||
| pose problems in RTP, which is often used over unreliable transports. | pose problems in RTP, which is often used over unreliable transports. | |||
| Since this information must be transmitted reliably and, as the RTP | Since this information must be transmitted reliably and, as the RTP | |||
| stream may change certain configuration data mid-session, there are | stream may change certain configuration data mid-session, there are | |||
| different methods for delivering this configuration data to a client, | different methods for delivering this configuration data to a client, | |||
| both in-band and out-of-band which is detailed below. SDP delivery | both in-band and out-of-band which is detailed below. In order to | |||
| is typically used to set up an initial state for the client | set up an initial state for the client application the configuration | |||
| application. The changes may be due to different codebooks as well | MUST be conveyed via the signalling channel used to setup the | |||
| as different bitrates of the stream. | session. One example of such signalling is SDP [5] with the Offer/ | |||
| Answer Model [8]. Changes to the configuration MAY be communicated | ||||
| via a re-invite, conveying new SDP, or sent in-band in the RTP | ||||
| channel. Implementations MUST support in-band delivery of updated | ||||
| codebooks, and SHOULD support out-of-band codebook update using a new | ||||
| SDP file. The changes may be due to different codebooks as well as | ||||
| different bitrates of the RTP stream. | ||||
| The delivery vectors in use can be specified by an SDP attribute to | For non chained streams, the recommended Configuration delivery | |||
| indicate the method and the optional URI where the Vorbis Packed | method is inline the Packed Configuration (Section 3.1.1) in the SDP | |||
| Configuration (Section 3.1.1) Packets could be fetched. Different | as explained in the IANA considerations (Section 7.1). | |||
| delivery methods MAY be advertised for the same session. The in-band | ||||
| Configuration delivery SHOULD be considered as baseline, out-of-band | ||||
| delivery methods that don't use RTP will not be described in this | ||||
| document. For non chained streams, the recommended Configuration | ||||
| delivery method is inline the Packed Configuration (Section 3.1.1) in | ||||
| the SDP as explained in the IANA considerations (Section 7.1). | ||||
| The 24 bit Ident field is used to map which Configuration will be | The 24 bit Ident field is used to map which Configuration will be | |||
| used to decode a packet. When the Ident field changes, it indicates | used to decode a packet. When the Ident field changes, it indicates | |||
| that a change in the stream has taken place. The client application | that a change in the stream has taken place. The client application | |||
| MUST have in advance the correct configuration and if the client | MUST have in advance the correct configuration and if the client | |||
| detects a change in the Ident value and does not have this | detects a change in the Ident value and does not have this | |||
| information it MUST NOT decode the raw Vorbis data associated until | information it MUST NOT decode the raw Vorbis data associated until | |||
| it fetches the correct Configuration. | it fetches the correct Configuration. | |||
| 3.1. In-band Header Transmission | 3.1. In-band Header Transmission | |||
| The Packed Configuration (Section 3.1.1) Payload is sent in-band with | The Packed Configuration (Section 3.1.1) Payload is sent in-band with | |||
| the packet type bits set to match the Vorbis Data Type. Clients MUST | the packet type bits set to match the Vorbis Data Type. Clients MUST | |||
| be capable of dealing with fragmentation and periodic re-transmission | be capable of dealing with fragmentation and periodic re-transmission | |||
| of [14] the configuration headers. The RTP timestamp value MUST | of [14] the configuration headers. The RTP timestamp value MUST | |||
| reflect the transmission time of the next data packet. | reflect the transmission time of the first data packet for which this | |||
| configuration applies. | ||||
| 3.1.1. Packed Configuration | 3.1.1. Packed Configuration | |||
| A Vorbis Packed Configuration is indicated with the Vorbis Data Type | A Vorbis Packed Configuration is indicated with the Vorbis Data Type | |||
| field set to 1. Of the three headers defined in the Vorbis I | field set to 1. Of the three headers defined in the Vorbis I | |||
| specification [10], the Identification and the Setup MUST be packed | specification [10], the Identification and the Setup MUST be packed | |||
| as they are, while the comment header MAY be replaced with a dummy | as they are, while the comment header MAY be replaced with a dummy | |||
| one. The packed configuration follows a generic way to store xiph | one. | |||
| codec configurations: The first field stores the number of the | ||||
| following packets minus one (count field), the next ones represent | The packed configuration follows a generic way to store Xiph codec | |||
| the size of the headers (length fields), the headers immediately | configurations: The first field stores the number of the following | |||
| follow the list of length fields. The size of the last header is | packets minus one (count field), the next ones represent the size of | |||
| implicit. The count and the length fields are encoded using the | the headers (length fields), the headers immediately follow the list | |||
| following logic: the data is in network byte order, every byte has | of length fields. The size of the last header is implicit. | |||
| the most significant bit used as flag and the following 7 used to | ||||
| store the value. The first N bit are to be taken, where N is number | The count and the length fields are encoded using the following | |||
| of bits needed to represent the value, taken modulo 7, and stored in | logic: the data is in network byte order, every byte has the most | |||
| the first byte. If there are more bits, the flag bit is set to 1 and | significant bit used as flag and the following 7 used to store the | |||
| the subsequent 7bit are stored in the following byte, if there are | value. The first N bit are to be taken, where N is number of bits | |||
| needed to represent the value, taken modulo 7, and stored in the | ||||
| first byte. If there are more bits, the flag bit is set to 1 and the | ||||
| subsequent 7bit are stored in the following byte, if there are | ||||
| remaining bits set the flag to 1 and the same procedure is repeated. | remaining bits set the flag to 1 and the same procedure is repeated. | |||
| The ending byte has the flag bit set to 0. In order to decode it is | The ending byte has the flag bit set to 0. In order to decode it is | |||
| enough to iterate over the bytes until the flag bit set to 0, for | enough to iterate over the bytes until the flag bit set to 0, for | |||
| every byte the data is added to the accumulated value multiplied by | every byte the data is added to the accumulated value multiplied by | |||
| 128. The headers are packed in the same order they are present in | 128. | |||
| ogg: Identification, Comment, Setup. | ||||
| The headers are packed in the same order they are present in ogg: | ||||
| Identification, Comment, Setup. | ||||
| The 2 byte length tag defines the length of the packed headers as the | ||||
| sum of the Configuration, Comment and Setup lengths. | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |V=2|P|X| CC |M| PT | xxxx | | |V=2|P|X| CC |M| PT | xxxx | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | xxxxx | | | xxxxx | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | synchronization source (SSRC) identifier | | | synchronization source (SSRC) identifier | | |||
| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | |||
| skipping to change at page 11, line 7 ¶ | skipping to change at page 11, line 7 ¶ | |||
| Figure 5: Packed Configuration Figure | Figure 5: Packed Configuration Figure | |||
| The Ident field is set with the value that will be used by the Raw | The Ident field is set with the value that will be used by the Raw | |||
| Payload Packets to address this Configuration. The Fragment type is | Payload Packets to address this Configuration. The Fragment type is | |||
| set to 0 since the packet bears the full Packed configuration, the | set to 0 since the packet bears the full Packed configuration, the | |||
| number of packet is set to 1. | number of packet is set to 1. | |||
| 3.2. Out of Band Transmission | 3.2. Out of Band Transmission | |||
| This section, as stated above, does not cover all the possible out- | The following packet definition MUST be used when Configuration is | |||
| of-band delivery methods since they rely on different protocols and | inlined in the SDP. | |||
| are linked to specific applications. The following packet definition | ||||
| SHOULD be used in out-of-band delivery and MUST be used when | ||||
| Configuration is inlined in the SDP. | ||||
| 3.2.1. Packed Headers | 3.2.1. Packed Headers | |||
| As mentioned above the RECOMMENDED delivery vector for Vorbis | As mentioned above the RECOMMENDED delivery vector for Vorbis | |||
| configuration data is via a retrieval method that can be performed | configuration data is via a retrieval method that can be performed | |||
| using a reliable transport protocol. As the RTP headers are not | using a reliable transport protocol. As the RTP headers are not | |||
| required for this method of delivery the structure of the | required for this method of delivery the structure of the | |||
| configuration data is slightly different. The packed header starts | configuration data is slightly different. The packed header starts | |||
| with a 32 bit (network byte ordered) count field which details the | with a 32 bit (network byte ordered) count field which details the | |||
| number of packed headers that are contained in the bundle. Next is | number of packed headers that are contained in the bundle. Next is | |||
| skipping to change at page 11, line 36 ¶ | skipping to change at page 12, line 5 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Packed header | | | Packed header | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Packed header | | | Packed header | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 6: Packed Headers Overview | Figure 6: Packed Headers Overview | |||
| Since the Configuration Ident and the Identification Header are fixed | ||||
| length there is only a 2 byte length tag to define the length of the | ||||
| packed headers. | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Ident | length .. | | Ident | length .. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| .. | n. of headers | length1 | length2 .. | .. | n. of headers | length1 | length2 .. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| .. | Identification Header .. | .. | Identification Header .. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ................................................................. | ................................................................. | |||
| skipping to change at page 12, line 40 ¶ | skipping to change at page 12, line 40 ¶ | |||
| The key difference between the in-band format and this one, is that | The key difference between the in-band format and this one, is that | |||
| there is no need for the payload header octet. In this figure the | there is no need for the payload header octet. In this figure the | |||
| comment has a size bigger than 127 bytes. | comment has a size bigger than 127 bytes. | |||
| 3.3. Loss of Configuration Headers | 3.3. Loss of Configuration Headers | |||
| Unlike the loss of raw Vorbis payload data, loss of a configuration | Unlike the loss of raw Vorbis payload data, loss of a configuration | |||
| header lead to a situation where it will not be possible to | header lead to a situation where it will not be possible to | |||
| successfully decode the stream. Implementations MAY try to recover | successfully decode the stream. Implementations MAY try to recover | |||
| from error requesting again the missing Configuration, the baseline | from error by requesting again the missing Configuration or, if the | |||
| reaction SHOULD be either reset or end the connection. | delivery method is in-band, by buffering the payloads waiting for the | |||
| Configuration needed to decode them. The baseline reaction SHOULD be | ||||
| either reset or end the RTP session. | ||||
| 4. Comment Headers | 4. Comment Headers | |||
| With the Vorbis Data Type flag set to 2, this indicates that the | With the Vorbis Data Type flag set to 2, this indicates that the | |||
| packet contain the comment metadata, such as artist name, track title | packet contain the comment metadata, such as artist name, track title | |||
| and so on. These metadata messages are not intended to be fully | and so on. These metadata messages are not intended to be fully | |||
| descriptive but to offer basic track/song information. Clients MAY | descriptive but to offer basic track/song information. Clients MAY | |||
| ignore it completely. The details on the format of the comments can | ignore it completely. The details on the format of the comments can | |||
| be found in the Vorbis documentation [10]. | be found in the Vorbis documentation [10]. | |||
| skipping to change at page 17, line 21 ¶ | skipping to change at page 17, line 21 ¶ | |||
| Required parameters: | Required parameters: | |||
| rate: indicates the RTP timestamp clock rate as described in RTP | rate: indicates the RTP timestamp clock rate as described in RTP | |||
| Profile for Audio and Video Conferences with Minimal Control. | Profile for Audio and Video Conferences with Minimal Control. | |||
| [3] | [3] | |||
| channels: indicates the number of audio channels as described in | channels: indicates the number of audio channels as described in | |||
| RTP Profile for Audio and Video Conferences with Minimal | RTP Profile for Audio and Video Conferences with Minimal | |||
| Control. [3] | Control. [3] | |||
| delivery-method: indicates the delivery methods in use, the | ||||
| possible values are: inline, in_band, out_band. The parameter | ||||
| MAY be included multiple time, followed by the configuration or | ||||
| configuration-uri parameter associated. | ||||
| configuration: the base64 [9] representation of the Packed | configuration: the base64 [9] representation of the Packed | |||
| Headers (Section 3.2.1). It MUST follow the associated | Headers (Section 3.2.1). | |||
| delivery-method parameter ("inline"). | ||||
| Optional parameters: | ||||
| configuration-uri: the URI [4] of the configuration headers in | ||||
| case of out of band transmission. In the form of | ||||
| "scheme://path/to/resource/", depending on the specific method, | ||||
| a single configuration packet could be retrived by its Ident | ||||
| number, or multiple packets could be aggregated in a single | ||||
| stream. Non hierarchical protocols MAY point to a resource | ||||
| using their specific syntax. | ||||
| Encoding considerations: | Encoding considerations: | |||
| This media type is framed and contains binary data. | This media type is framed and contains binary data. | |||
| Security considerations: | Security considerations: | |||
| See Section 10 of RFC XXXX. | See Section 10 of RFC XXXX. | |||
| Interoperability considerations: | Interoperability considerations: | |||
| None | None | |||
| Published specification: | Published specification: | |||
| RFC XXXX [RFC Editor: please replace by the RFC number of this | RFC XXXX [RFC Editor: please replace by the RFC number of this | |||
| memo, when published] | memo, when published] | |||
| Ogg Vorbis I specification: Codec setup and packet decode. | Ogg Vorbis I specification: Codec setup and packet decode. | |||
| Available from the Xiph website, http://www.xiph.org | Available from the Xiph website, http://xiph.org | |||
| Applications which use this media type: | Applications which use this media type: | |||
| Audio streaming and conferencing tools | Audio streaming and conferencing tools | |||
| Additional information: | Additional information: | |||
| None | None | |||
| Person & email address to contact for further information: | Person & email address to contact for further information: | |||
| skipping to change at page 18, line 45 ¶ | skipping to change at page 18, line 29 ¶ | |||
| Author: | Author: | |||
| Luca Barbato | Luca Barbato | |||
| Change controller: | Change controller: | |||
| IETF AVT Working Group delegated from the IESG | IETF AVT Working Group delegated from the IESG | |||
| 6.1. Packed Headers IANA Considerations | 6.1. Packed Headers IANA Considerations | |||
| The following IANA considerations MUST only be applied to the Packed | The following IANA considerations refers to the split configuration | |||
| Headers (Section 3.2.1). | Packed Headers (Section 3.2.1) used within RFC XXXX. | |||
| Type name: audio | Type name: audio | |||
| Subtype name: vorbis-config | Subtype name: vorbis-config | |||
| Required parameters: | Required parameters: | |||
| None | None | |||
| Optional parameters: | Optional parameters: | |||
| skipping to change at page 20, line 4 ¶ | skipping to change at page 19, line 32 ¶ | |||
| Additional information: | Additional information: | |||
| None | None | |||
| Person & email address to contact for further information: | Person & email address to contact for further information: | |||
| Luca Barbato: <lu_zero@gentoo.org> | Luca Barbato: <lu_zero@gentoo.org> | |||
| IETF Audio/Video Transport Working Group | IETF Audio/Video Transport Working Group | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Restriction on usage: | Restriction on usage: | |||
| This media type doesn't depend on the transport. | This media type doesn't depend on the transport. | |||
| Author: | Author: | |||
| Luca Barbato | Luca Barbato | |||
| Change controller: | Change controller: | |||
| IETF AVT Working Group delegated from the IESG | IETF AVT Working Group delegated from the IESG | |||
| 7. SDP related considerations | 7. SDP related considerations | |||
| The following paragraphs define the mapping of the parameters | The following paragraphs define the mapping of the parameters | |||
| described in the IANA considerations section and their usage in the | described in the IANA considerations section and their usage in the | |||
| Offer/Answer Model [8]. | Offer/Answer Model [8]. In order to be forward compatible the | |||
| implementation MUST ignore unknown parameters. | ||||
| 7.1. Mapping Media Type Parameters into SDP | 7.1. Mapping Media Type Parameters into SDP | |||
| The information carried in the Media Type specification has a | The information carried in the Media Type specification has a | |||
| specific mapping to fields in the Session Description Protocol (SDP) | specific mapping to fields in the Session Description Protocol (SDP) | |||
| [5], which is commonly used to describe RTP sessions. When SDP is | [5], which is commonly used to describe RTP sessions. When SDP is | |||
| used to specify sessions the mapping are as follows: | used to specify sessions the mapping are as follows: | |||
| o The type name ("audio") goes in SDP "m=" as the media name. | o The type name ("audio") goes in SDP "m=" as the media name. | |||
| o The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding | o The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding | |||
| name. | name. | |||
| o The parameter "rate" also goes in "a=rtpmap" as clock rate. | o The parameter "rate" also goes in "a=rtpmap" as clock rate. | |||
| o The parameter "channels" also goes in "a=rtpmap" as channel count. | o The parameter "channels" also goes in "a=rtpmap" as channel count. | |||
| o The mandated parameters "delivery-method" and "configuration" MUST | o The mandated parameters "configuration" MUST be included in the | |||
| be included in the SDP "a=fmtp" attribute. | SDP "a=fmtp" attribute. | |||
| o The optional parameter "configuration-uri", when present, MUST be | ||||
| included in the SDP "a=fmtp" attribute and MUST follow the | ||||
| delivery-method that applies. | ||||
| If the stream comprises chained Vorbis files and all of them are | If the stream comprises chained Vorbis files and all of them are | |||
| known in advance, the Configuration Packet for each file SHOULD be | known in advance, the Configuration Packet for each file SHOULD be | |||
| passed to the client using the configuration attribute. | passed to the client using the configuration attribute. | |||
| The URI specified in the configuration-uri attribute MUST point to a | ||||
| location where all of the Configuration Packets needed for the life | ||||
| of the session reside. | ||||
| The port value is specified by the server application bound to the | The port value is specified by the server application bound to the | |||
| address specified in the c= line. The bitrate value and channels | address specified in the c= line. The channel count value specified | |||
| specified in the rtpmap attribute MUST match the Vorbis sample rate | in the rtpmap attribute SHOULD match the current Vorbis stream or | |||
| value. An example is found below. | considered the maximum number of channels to be expected. The | |||
| timestamp clock rate MUST be a multiple of the sample rate, different | ||||
| payload number MUST be used if the clock rate changes. The | ||||
| Configuration payload delivers the exact information, thus the SDP | ||||
| information SHOULD be considered as a hint. An example is found | ||||
| below. | ||||
| 7.1.1. SDP Example | 7.1.1. SDP Example | |||
| The following example shows a basic SDP single stream. The first | The following example shows a basic SDP single stream. The first | |||
| configuration packet is inlined in the SDP, other configurations | configuration packet is inlined in the SDP, other configurations | |||
| could be fetched at any time from the URIs provided. The inline | could be fetched at any time from the URIs provided. The inline | |||
| base64 [9] configuration string is folded in this example due to RFC | base64 [9] configuration string is folded in this example due to RFC | |||
| line length limitations. | line length limitations. | |||
| c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
| m=audio RTP/AVP 98 | m=audio RTP/AVP 98 | |||
| a=rtpmap:98 vorbis/44100/2 | a=rtpmap:98 vorbis/44100/2 | |||
| a=fmtp:98 delivery-method=inline; | a=fmtp:98 configuration=AAAAAZ2f4g9NAh4aAXZvcmJpcwA...; | |||
| configuration=AAAAAZ2f4g9NAh4aAXZvcmJpcwA...; delivery- | ||||
| method=out_band; configuration-uri=rtsp://path/to/the/resource; | ||||
| delivery-method=out_band; | ||||
| configuration-uri=http://another/path/to/resource/; | ||||
| Note that the payload format (encoding) names are commonly shown in | Note that the payload format (encoding) names are commonly shown in | |||
| upper case. Media Type subtypes are commonly shown in lower case. | upper case. Media Type subtypes are commonly shown in lower case. | |||
| These names are case-insensitive in both places. Similarly, | These names are case-insensitive in both places. Similarly, | |||
| parameter names are case-insensitive both in Media Type types and in | parameter names are case-insensitive both in Media Type types and in | |||
| the default mapping to the SDP a=fmtp attribute. The exception | the default mapping to the SDP a=fmtp attribute. The a=fmtp line is | |||
| regarding case sensitivity is the configuration-uri URI which MUST be | a single line even if it is shown as multiple lines in this document | |||
| regarded as being case sensitive. The a=fmtp line is a single line | for clarity. | |||
| even if it is shown as multiple lines in this document for clarity. | ||||
| 7.2. Usage with the SDP Offer/Answer Model | 7.2. Usage with the SDP Offer/Answer Model | |||
| The only parameter negotiable is the delivery method. All the others | The are no negotiable parameters. All the of them are declarative. | |||
| are declarative: the offer, as described in An Offer/Answer Model | ||||
| Session Description Protocol [8], may contain a large number of | ||||
| delivery methods per single fmtp attribute, the answerer MUST remove | ||||
| every delivery-method and configuration-uri not supported. All the | ||||
| parameters MUST not be altered on answer otherwise. | ||||
| 8. Examples | 8. Congestion Control | |||
| The following examples are common usage patterns that MAY be applied | The general congestion control considerations for transporting RTP | |||
| in such situations, the main scope of this section is to explain | data apply to vorbis audio over RTP as well. See the RTP | |||
| better usage of the transmission vectors. | specification [2] and any applicable RTP profile (e.g., [3]). Audio | |||
| data can be encoded using a range of different bit rates, so it is | ||||
| possible to adapt network bandwidth by adjusting the encoder bit rate | ||||
| in real time or by having multiple copies of content encoded at | ||||
| different bit rates. | ||||
| 8.1. Stream Radio | 9. Example | |||
| The following example shows a common usage pattern that MAY be | ||||
| applied in such situation, the main scope of this section is to | ||||
| explain better usage of the transmission vectors. | ||||
| 9.1. Stream Radio | ||||
| This is one of the most common situation: one single server streaming | This is one of the most common situation: one single server streaming | |||
| content in multicast, the clients may start a session at random time. | content in multicast, the clients may start a session at random time. | |||
| The content itself could be a mix of live stream, as the webjockey's | The content itself could be a mix of live stream, as the webjockey's | |||
| voice, and stored streams as the music she plays. | voice, and stored streams as the music she plays. | |||
| In this situation we don't know in advance how many codebooks we will | In this situation we don't know in advance how many codebooks we will | |||
| use. The clients can join anytime and users expect to start | use. The clients can join anytime and users expect to start | |||
| listening to the content in a short time. | listening to the content in a short time. | |||
| On join the client will receive the current Configuration necessary | On join the client will receive the current Configuration necessary | |||
| to decode the current stream inlined in the SDP so that the decoding | to decode the current stream inlined in the SDP so that the decoding | |||
| will start immediately after. | will start immediately after. | |||
| When the streamed content changes the new Configuration is sent in- | When the streamed content changes the new Configuration is sent in- | |||
| band before the actual stream and the Configuration that has to be | band before the actual stream and the Configuration that has to be | |||
| sent inline in the SDP updated. Since the in-band method is | sent inline in the SDP updated. Since the in-band method is | |||
| unreliable, an out of band fallback is provided. | unreliable, an out of band fallback is provided. | |||
| The client MAY choose to fetch the Configuration from the alternate | The client may choose to fetch the Configuration from the alternate | |||
| source as soon as it discovers a Configuration packet got lost in- | source as soon as it discovers a Configuration packet got lost in- | |||
| band or use selective retransmission [13], if the server supports the | band or use selective retransmission [13], if the server supports the | |||
| feature. | feature. | |||
| A serverside optimization would be to keep an hash list of the | A serverside optimization would be to keep an hash list of the | |||
| Configurations per session to avoid packing all of them and send the | Configurations per session to avoid packing all of them and send the | |||
| same Configuration with different Ident tags | same Configuration with different Ident tags | |||
| A clientside optimization would be to keep a tag list of the | A clientside optimization would be to keep a tag list of the | |||
| Configurations per session and don't process configuration packets | Configurations per session and don't process configuration packets | |||
| already known. | already known. | |||
| 9. Security Considerations | 10. Security Considerations | |||
| RTP packets using this payload format are subject to the security | RTP packets using this payload format are subject to the security | |||
| considerations discussed in the RTP specification [2], the base64 | considerations discussed in the RTP specification [2], the base64 | |||
| specification [9] and the URI Generic syntax specification [4]. | specification [9] and the URI Generic syntax specification [4]. | |||
| Among other considerations, this implies that the confidentiality of | Among other considerations, this implies that the confidentiality of | |||
| the media stream is archieved by using encryption. Because the data | the media stream is archieved by using encryption. Because the data | |||
| compression used with this payload format is applied end-to-end, | compression used with this payload format is applied end-to-end, | |||
| encryption may be performed on the compressed data. Additional care | encryption may be performed on the compressed data. | |||
| MAY be needed for delivery methods that point to external resources, | ||||
| using secure protocols to fetch the configuration payloads. Where | ||||
| the size of a data block is set, care MUST be taken to prevent buffer | ||||
| overflows in the client applications. | ||||
| 10. Acknowledgments | 11. Copying Conditions | |||
| The authors agree to grant third parties the irrevocable right to | ||||
| copy, use and distribute the work, with or without modification, in | ||||
| any medium, without royalty, provided that, unless separate | ||||
| permission is granted, redistributed modified works do not contain | ||||
| misleading author, version, name of work, or endorsement information. | ||||
| 12. Acknowledgments | ||||
| This document is a continuation of draft-moffitt-vorbis-rtp-00.txt | This document is a continuation of draft-moffitt-vorbis-rtp-00.txt | |||
| and draft-kerr-avt-vorbis-rtp-04.txt. The Media Type declaration is | and draft-kerr-avt-vorbis-rtp-04.txt. The Media Type declaration is | |||
| a continuation of draft-short-avt-rtp-vorbis-mime-00.txt. | a continuation of draft-short-avt-rtp-vorbis-mime-00.txt. | |||
| Thanks to the AVT, Ogg Vorbis Communities / Xiph.org including Steve | Thanks to the AVT, Vorbis Communities / Xiph.Org Foundation including | |||
| Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia, Pascal | Steve Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia, | |||
| Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John Lazzaro, | Pascal Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John | |||
| Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry Short, | Lazzaro, Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry | |||
| Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund, David | Short, Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund, | |||
| Barrett, Silvia Pfeiffer, Stefan Ehmann, Alessandro Salvatori. | David Barrett, Silvia Pfeiffer, Stefan Ehmann, Alessandro Salvatori. | |||
| Politecnico di Torino (LS)^3/IMG Group in particular Federico | Politecnico di Torino (LS)^3/IMG Group in particular Federico | |||
| Ridolfo, Francesco Varano, Giampaolo Mancini, Dario Gallucci, Juan | Ridolfo, Francesco Varano, Giampaolo Mancini, Dario Gallucci, Juan | |||
| Carlos De Martin. | Carlos De Martin. | |||
| 11. References | 13. References | |||
| 13.1. Normative References | ||||
| 11.1. Normative References | ||||
| [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement | |||
| Levels", RFC 2119. | Levels", RFC 2119. | |||
| [2] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, | [2] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, | |||
| "RTP: A Transport Protocol for real-time applications", STD 64, | "RTP: A Transport Protocol for real-time applications", STD 64, | |||
| RFC 3550. | RFC 3550. | |||
| [3] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video | [3] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video | |||
| Conferences with Minimal Control.", STD 65, RFC 3551. | Conferences with Minimal Control.", STD 65, RFC 3551. | |||
| skipping to change at page 24, line 9 ¶ | skipping to change at page 23, line 38 ¶ | |||
| [8] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with | [8] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with | |||
| Session Description Protocol (SDP)", RFC 3264. | Session Description Protocol (SDP)", RFC 3264. | |||
| [9] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", | [9] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", | |||
| RFC 3548. | RFC 3548. | |||
| [10] "Ogg Vorbis I specification: Codec setup and packet decode. | [10] "Ogg Vorbis I specification: Codec setup and packet decode. | |||
| Available from the Xiph website, | Available from the Xiph website, | |||
| http://xiph.org/vorbis/doc/Vorbis_I_spec.html". | http://xiph.org/vorbis/doc/Vorbis_I_spec.html". | |||
| 11.2. Informative References | 13.2. Informative References | |||
| [11] Pfeiffer, S., "The Ogg Encapsulation Format Version 0", | [11] Pfeiffer, S., "The Ogg Encapsulation Format Version 0", | |||
| RFC 3533. | RFC 3533. | |||
| [12] "libvorbis: Available from the dedicated website, | [12] "libvorbis: Available from the dedicated website, | |||
| http://www.vorbis.com". | http://vorbis.com". | |||
| [13] Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol | [13] Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol | |||
| Extended Reports (RTCP XR)", RFC 3611, November 2003. | Extended Reports (RTCP XR)", RFC 3611, November 2003. | |||
| [14] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R. Hakenberg, | [14] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R. Hakenberg, | |||
| "RTP Retransmission Payload Format", RFC 4588, July 2006. | "RTP Retransmission Payload Format", RFC 4588, July 2006. | |||
| Author's Address | Author's Address | |||
| Luca Barbato | Luca Barbato | |||
| Xiph.Org | Xiph.Org Foundation | |||
| Email: lu_zero@gentoo.org | EMail: lu_zero@gentoo.org | |||
| URI: http://www.xiph.org/ | URI: http://xiph.org/ | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| This document is subject to the rights, licenses and restrictions | This document is subject to the rights, licenses and restrictions | |||
| contained in BCP 78, and except as set forth therein, the authors | contained in BCP 78, and except as set forth therein, the authors | |||
| retain all their rights. | retain all their rights. | |||
| This document and the information contained herein are provided on an | This document and the information contained herein are provided on an | |||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | |||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | |||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |||
| skipping to change at page 25, line 45 ¶ | skipping to change at page 25, line 45 ¶ | |||
| such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
| specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
| http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at | |||
| ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
| Acknowledgment | Acknowledgement | |||
| Funding for the RFC Editor function is provided by the IETF | Funding for the RFC Editor function is provided by the IETF | |||
| Administrative Support Activity (IASA). | Administrative Support Activity (IASA). | |||
| End of changes. 49 change blocks. | ||||
| 138 lines changed or deleted | 142 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||