diff --git a/xep-0180.xml b/xep-0180.xml index 42af68fa..e72149d9 100644 --- a/xep-0180.xml +++ b/xep-0180.xml @@ -83,14 +83,14 @@ -

&xep0166; can be used to initiate and negotiate a wide range of peer-to-peer sessions. One session type of interest is video exchange. This document specifies a format for describing Jingle video sessions, where the media exchange occurs using the Real-time Transport Protocol (see &rfc3550;). Such sessions require the use of a lossy transport method such as &xep0177; or the "ice-udp" method specified in &xep0176;.

+

&xep0166; can be used to initiate and negotiate a wide range of peer-to-peer sessions. One session type of interest is video exchange. This document specifies a format for describing Jingle video sessions, where the media exchange occurs using the Real-time Transport Protocol (see &rfc3550;).

The Jingle content description format defined herein is designed to meet the following requirements:

  1. Enable negotiation of parameters necessary for video exchange.
  2. -
  3. Map these parameters to Session Description Protocol (SDP; see &rfc4566;) to enable interoperability.
  4. +
  5. Map these parameters to the Session Description Protocol (SDP; see &rfc4566;) to enable interoperability.
  6. Define informational messages related to video chat.
@@ -112,7 +112,7 @@ -

A Jingle video session is described by one or more encodings contained within a wrapper &DESCRIPTION; element. In the language of RFC 4566 these encodings are payload-types; therefore, each <payload-type/> child element specifies an encoding that can be used for the video stream. Such encodings are often used in the context of the Real-time Transfer Protocol (RTP; see RFC 3550) but may be used in other contexts as well. The most common encodings for the Audio/Video Profile (AVP) of RTP are listed in &rfc3551; (these "static" types are reserved from payload ID 0 through payload ID 95), although other encodings are allowed (these "dynamic" types use payload IDs 96 to 127) in accordance with the dynamic assignment rules described in Section 3 of RFC 3551. The &PAYLOADTYPE; element's 'id' attribute is REQUIRED and its 'name' attribute is RECOMMENDED. The encodings SHOULD be provided in order of preference.

+

A Jingle video session is described by one or more encodings contained within a wrapper &DESCRIPTION; element qualified by the 'http://www.xmpp.org/extensions/xep-0180.html#ns' namespace &NSNOTE;. In the language of RFC 4566 these encodings are payload-types; therefore, each <payload-type/> child element specifies an encoding that can be used for the video stream. Such encodings are often used in the context of the Real-time Transfer Protocol (RTP; see RFC 3550) but may be used in other contexts as well. The most common encodings for the Audio/Video Profile (AVP) of RTP are listed in &rfc3551; (these "static" types are reserved from payload ID 0 through payload ID 95), although other encodings are allowed in accordance with the dynamic assignment rules described in Section 3 of RFC 3551 (these "dynamic" types use payload IDs 96 to 127). The &PAYLOADTYPE; element's 'id' attribute is REQUIRED and its 'name' attribute is RECOMMENDED. The encodings SHOULD be provided in order of preference.

@@ -195,7 +195,7 @@ OPTIONAL -

Each <payload-type/> element MAY contain one or more child elements that specify particular parameters related to the payload. For example, as described in &rtptheora;, the "configuration", "configuration-uri", "delivery-method", and "sampling" parameters may be specified in relation to usage of the Theora See <http://www.theora.org/>. codec. Where such parameters are encoded via the "fmtp" SDP attribute, they shall be represented in Jingle via the following format:

+

Each <payload-type/> element MAY contain one or more child elements that specify particular parameters related to the payload. For example, as described in &rtptheora;, the "configuration", "configuration-uri", "delivery-method", and "sampling" parameters may be specified in relation to usage of the Theora See <http://www.theora.org/>. codec. Where such parameters are encoded via the "fmtp" SDP attribute, they shall be represented in Jingle via the following format, where the <parameter/> element is a child of the &PAYLOADTYPE; element:

]]> @@ -229,7 +229,7 @@ ]]>
-

Upon receiving the session-initiate stanza, the receiver determines whether it can provisionally accept the session and proceed with the negotiation. The general Jingle error cases are specified in XEP-0166. In addition, the receiver must determine if it supports any of the payload types advertised by the initiator; if it does not, it MUST reject the session by sending a <unsupported-codecs/> error:

+

Upon receiving the session-initiate stanza, the receiver determines whether it can provisionally accept the session and proceed with the negotiation. The general Jingle error cases are specified in XEP-0166. In addition, the receiver must determine if it supports any of the payload types advertised by the initiator; if it does not, it MUST reject the session by sending a ¬acceptable; error, which SHOULD include a Jingle-specific error condition of <unsupported-codecs/>:

- + ]]> @@ -268,7 +268,7 @@ - + @@ -278,7 +278,7 @@ + type='result'/> ]]>

After successful transport negotiation (not shown here), the receiver then accepts the session:

]]> -

In the context of Jingle video sessions, the <media> is "video", the <port> is the preferred port for such communications (which may be determined dynamically), the <transport> is whatever transport method is negotiated via the Jingle negotiation (e.g., "RTP/AVT"), and the <fmt list> is the payload-type ID.

+

In the context of Jingle video sessions, the <media> is "video", the <port> is the preferred port for such communications (which may be determined dynamically), the <transport> is whatever transport method is negotiated via the Jingle negotiation (e.g., "RTP/AVP"), and the <fmt list> is the payload-type ID.

For example, consider the following static payload-type:

]]> +

That Jingle-formatted information would be mapped to SDP as follows:

@@ -337,12 +338,13 @@ m=video 9000 RTP/AVP 28 ]]> +

That Jingle-formatted information would be mapped to SDP as follows:

-

As noted, if additional parameters are to be specified, they shall be represented as attributes of the <payload-type/> element of the child <parameter/> element, as in the following example.

+

As noted, if additional parameters are to be specified, they shall be represented as attributes of the <payload-type/> element or its child <parameter/> element, as in the following example.

@@ -350,6 +352,7 @@ a=fmtp:98 width=352;height=288;
]]> +

That Jingle-formatted information would be mapped to SDP as follows:

-

If an entity supports Jingle video exchanges via RTP, it MUST advertise that fact by returning a feature of "http://www.xmpp.org/extensions/xep-0180.html#ns" in response to &xep0030; information requests.

+

If an entity supports Jingle video exchanges via RTP, it MUST advertise that fact by returning a feature of "http://www.xmpp.org/extensions/xep-0180.html#ns" in response to &xep0030; information requests &NSNOTE;.

-

Informational messages may be sent by either party within the context of Jingle to communicate the status of a Jingle video session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "session-info", where the informational message is a payload element qualified by the 'http://www.xmpp.org/extensions/xep-0180.html#ns-info' namespace. No payload elements have yet been defined, but may be specified in a future version of this document.

+

Informational messages may be sent by either party within the context of Jingle to communicate the status of a Jingle video session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "session-info". No informational message payload elements have yet been defined, but they may be specified in a future version of this document.

@@ -403,7 +406,7 @@ delivery-method=inline; configuration=somebase16string; -

Until this specification advances to a status of Draft, its associated namespaces shall be "http://www.xmpp.org/extensions/xep-0180.html#ns" and "http://www.xmpp.org/extensions/xep-0180.html#ns-info"; upon advancement of this specification, the ®ISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.

+

Until this specification advances to a status of Draft, its associated namespaces shall be "http://www.xmpp.org/extensions/xep-0180.html#ns" and "http://www.xmpp.org/extensions/xep-0180.html#ns-errors"; upon advancement of this specification, the ®ISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.

The XMPP Registrar shall include "video-rtp" in its registry of Jingle content description formats. The registry submission is as follows:

@@ -462,6 +465,27 @@ delivery-method=inline; configuration=somebase16string; + + ]]> +
+ + + + + + + + + + + + + ]]> diff --git a/xep-0181.xml b/xep-0181.xml index 96313d6b..eb0dc69b 100644 --- a/xep-0181.xml +++ b/xep-0181.xml @@ -73,10 +73,10 @@

The format for the XML DTMF representation is as follows &NSNOTE;:

]]> -

The <dtmf/> element SHOULD possess one 'action' attribute, which MUST be either "button-up" or "button-down", specifying whether the button is being depressed or released. This allows DTMF tones to be reconstructed in real-time. If the 'action' attribute is not included, the recipient MUST assume this to be a "button-down" event, and imply a "button-up" event after a reasonable timeout (100 milliseconds is RECOMMENDED) or when another DMTF event is received.

+

The <dtmf/> element SHOULD possess an 'action' attribute, the value of which MUST be either "button-up" or "button-down" (specifying whether the button is being depressed or released). This enables DTMF tones to be reconstructed in real time. If the 'action' attribute is not included, the recipient MUST assume that the action is a "button-down" event and act as if a "button-up" event occurs after a reasonable timeout (100 milliseconds is RECOMMENDED) or when another DMTF event is received.

Unless the 'action' attribute has a value of "button-up", the <dmtf/> element MUST possess a 'code' attribute that specifies the tone to be generated. The value of the 'code' attribute SHOULD be one the following characters: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, #, and * -- however, the characters A, B, C, and D MAY be sent as well. Although A, B, C, and D were originally defined as part of DTMF, they were never deployed to telephony consumers and were used only for control purposes at private branch exchanges (PBXs) and central office operator stations; however, they are used in certain non-telephony applications of DTMF, such as ham radio.

The <dtmf> element SHOULD be sent as the payload of a Jingle session-info message as illustrated in the following example &NSNOTE;.

+ action='button-down'/> ]]> @@ -101,7 +101,7 @@ id='dtmf1' type='result'/> ]]>
-

If the receiving entity does not understand or cannot process the payload, it MUST return an error &feature; with a Jingle-specific error condition of <unsupported-info/>.

+

If the receiving entity does not understand or cannot process the payload, it MUST return a &feature; stanza error, which SHOULD include a Jingle-specific error condition of <unsupported-info/>.

]]> -

If the recipient does not support the requested DTMF method, it MUST return an error of a <feature-not-implemented/> error with a DTMF-specific error condition of <unsupported-dtmf-method/>:

+

If the recipient does not support the requested DTMF method, it MUST return a <feature-not-implemented/> stanza error, which SHOULD include a DTMF-specific error condition of <unsupported-dtmf-method/>:

- + + + + + + + + + + + + + + + + + @@ -217,6 +234,28 @@ - ]]> + ]]> + + + + + + + + + + + + + + + + ]]> + diff --git a/xep-0208.xml b/xep-0208.xml index 992d295d..b1aaa553 100644 --- a/xep-0208.xml +++ b/xep-0208.xml @@ -49,12 +49,12 @@ -

&xep0166; defines a framework for negotiating and managing out-of-band data exchange sessions over XMPP. Unfortunately, most developers of XMPP clients have limited experience with multimedia applications such as voice and video, making it difficult to get started with implementation of Jingle technologies. Therefore this document provides a simple transport and session type that client developers can use to bootstrap Jingle implementations.

-

Note: The methods specified herein are provided for experimentation and unit testing only and are not intended for inclusion in released software or production environments.

+

&xep0166; defines a framework for using XMPP to negotiate and manage out-of-band media sessions. Unfortunately, most developers of XMPP clients have limited experience with multimedia applications such as voice and video, making it difficult to get started with implementation of Jingle technologies. Therefore this document provides a simple transport and session type that client developers can use to bootstrap Jingle implementations.

+

Note: The methods specified herein are provided for experimentation and unit testing only. They are not intended for inclusion in released software or production environments.

-

The intent of this simple Jingle profile is to enable exchange of data using the Echo Protocol specified in &rfc0862;, but using a port other than 7 -- the default port for this usage is 17777. The protocol flow is as follows. (The following examples use &xep0177; as the transport protocol; although it is possible to complete echo protocol exchanges via TCP, that is deemed less useful and there is no Jingle transport for direct TCP exchanges.)

+

The intent of this simple Jingle profile is to enable exchange of data using the Echo Protocol specified in &rfc0862;, but using a port other than 7 (the default port for this experimental usage is 17777). The protocol flow is as follows. (The following examples use &xep0177; as the transport protocol; although it is possible to complete echo protocol exchanges via TCP, that is deemed less useful and there is no Jingle transport for direct TCP exchanges.)

]]> -

Note: The port SHOULD be 17777.

]]> @@ -87,7 +86,7 @@ ]]>

The parties may now exchange data using the echo protocol in order to test the connection.

-

Note: Protocol flows for additional use cases (e.g., renegotiation) will be added to future versions of this specification.

+

Note: Protocol flows for additional use cases (e.g., renegotiation) may be added to future versions of this specification.

diff --git a/xep-0215.xml b/xep-0215.xml index 16ab3ece..44a919b9 100644 --- a/xep-0215.xml +++ b/xep-0215.xml @@ -63,17 +63,16 @@

The administrator of an XMPP server may wish to deploy one or more STUN servers (see &rfc3489; and &rfc3489bis;) in order to ease the process of negotiating media exchanges via &xep0176;. A client can become aware of a STUN server in the following ways:

    -
  1. The server is specified in the default settings for the client.
  2. -
  3. The server is manually added by a human user into the client's configuration.
  4. -
  5. The server is discovered via DNS SRV records as specified in Section 9.1 of RFC 3489.
  6. +
  7. The server is specified in the client's default settings.
  8. +
  9. The server is manually added into the client's configuration by a human user.
  10. +
  11. The server is discovered via DNS SRV records (see &rfc2782;) as specified in Section 9.1 of RFC 3489.
-

Unfortunately, the foregoing methods are subject to human error or cannot be deployed in wide range of scenarios. Therefore, this document defines a way for an XMPP server to advertise a list of STUN servers and provide credentials for use by an XMPP client at a STUN server. This method SHOULD be used only as a fallback when DNS SRV lookups are not possible for the client or server.

+

Unfortunately, the foregoing methods are subject to human error or cannot be deployed in wide range of scenarios. Therefore, this document defines a way for an XMPP server to advertise a list of STUN servers and provide credentials for use by an XMPP client at a STUN server. This method should be used only as a fallback when DNS SRV lookups are not possible for the client or server.

Note: The protocol specified herein is functionally equivalent to the protocol currently used in the Google Talk service and documented at <http://code.google.com/apis/talk/jep_extensions/jingleinfo.html>.

In order to learn about available STUN servers associated with or known by an XMPP server, a client sends an IQ-get containing a <stun/> element qualified by the "http://www.xmpp.org/extensions/xep-0215.html#ns" namespace &NSNOTE;.

-

An example of the payload format for this node is as follows:

]]> +

The XMPP server SHOULD return the list of STUN servers, but MAY instead return an appropriate error, such as &unavailable; if the server does not support the STUN Server Discovery protocol or &forbidden; if the requesting entity does not have permission to receive the list of STUN servers.

]]> -

(Naturally, the XMPP MAY instead return an appropriate error, such as &unavailable; if the server does not support the STUN Server Discovery protocol or &forbidden; if the requesting entity does not have permission to receive the server list.)

-

The 'host' attribute is REQUIRED and specifies either a fully qualified domain name (FQDN) or an IP address (IPv4 or IPv6). The 'port' attribute is REQUIRED and specifies the communications port to be used at the host. The port is necessary since this specification assumes that DNS SRV lookups are not possible.

-

A STUN server may require a username and password in order to accept STUN binding requests and/or STUN allocate requests. In this case, the XMPP server would typically generate a short-term authentication credential based on a private key shared with the STUN server (naturally, other implementations are possible, and long-term credentials could be used instead; see RFC 3489 and rfc3489bis for details).

+

The syntax of the <server/> element is as follows:

+
    +
  • The <server/> element SHOULD be empty.
  • +
  • The 'host' attribute is REQUIRED and specifies either a fully qualified domain name (FQDN) or an IP address (IPv4 or IPv6).
  • +
  • The 'port' attribute is REQUIRED and specifies the communications port to be used at the host. The port is necessary since this specification assumes that DNS SRV lookups are not possible.
  • +
  • The 'username' and 'password' attributes are OPTIONAL and are used as described below.
  • +
+

A STUN server may require a username and password in order to accept STUN binding requests and/or STUN allocate requests. In this case, the XMPP server would typically generate a short-term authentication credential based on a private key shared with the STUN server. Other implementations are possible, and long-term credentials could be used instead; see RFC 3489 and rfc3489bis for details).

]]> -

The 'username' and 'password' attributes are OPTIONAL.

An XMPP server MAY send an updated list of STUN servers by "pushing" the list to a client that has previously requested the list:

If an entity supports the STUN Server Discovery protocol, it MUST report that fact by including a service discovery feature of "http://www.xmpp.org/extensions/xep-0215.html#ns" &NSNOTE; in response to a &xep0030; information request:

]]> ...