Network Working Group | H. T. Alvestrand |
Internet-Draft | |
Intended status: Standards Track | April 30, 2012 |
Expires: October 30, 2012 |
RTCWEB Resolution Negotiation
draft-alvestrand-rtcweb-resolution-00
This draft offers a proposal for a fragment of the SDP usage rules for RTCWEB: Requirements for supporting resolution negotiation.
It proposes to use SDP both for initial and within-call resolution configuration, and suggests that COP should be mentioned as an optional, not mandatory, mechanism.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 30, 2012.
Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
This draft offers a proposal for a fragment of the SDP usage rules for RTCWEB: Requirements for supporting resolution negotiation.
It proposes to use SDP, [RFC6236] in particular, both for initial and within-call resolution configuration, with the "a=recv-ssrc:imageattr" mechanism from [I-D.lennox-mmusic-sdp-source-selection] as a per-stream mechanism, and suggests that Codec Operation Point (COP) specified in [I-D.westerlund-avtext-codec-operation-point] should be mentioned as an optional, not mandatory, mechanism.
The relevant requirement for video resolution negotiation from the RTCWEB use cases document [I-D.ietf-rtcweb-use-cases-and-requirements] is:
The scenarios from which this requirement is derived are:
Formulating the requirements in a form more amenable to implementation, there needs to be specified functions that allow the implementation:
This document does not mention other requirements.
We assume that the normal (payload-dependent) procedures for codec negotiation are sufficient to negotiate any codec parameters needed to ensure that the decoder can handle all incoming streams.
After the initial negotiation, the following variables MUST have a known value for each RTP session (represented by one or more m= lines):
An RTCWEB client MUST support negotiation of resolution using the "imageattr" attribute, as documented in [RFC6236].
An RTCWEB client MUST support a SAR value of 1.0 (square pixels), and MAY choose to support only the 1.0 value of the "sar" attribute.
The interpretation of the negotiation is that any video stream in the m= line containing the a=imageattr attribute will have a resolution within the bounds established by the negotiation.
An RTCWEB client MUST support negotiation of the "a=framerate" attribute, as specified in [RFC4566] section 6. Note that this is an upper bound on framerate; there is no lower bound negotiated.
These bounds MAY be renegotiated over the course of the call, but MUST NOT be renegotiated to render any currently transmitted video stream out of bounds
These bounds may be supplemented by payload-specific mechanisms, and there is no guarantee that all resolutions within the bounds can be supported.
An RTCWEB client MUST support per-SSRC requests for video resolutions, as described in [I-D.lennox-mmusic-sdp-source-selection]. To be precise, it MUST support the a=remote-ssrc:<ssrc> framerate: and a=remote-ssrc:<ssrc>imageattr: attributes.
This satisfies the requirement to indicate the desire of the recipient for a particular spatial or temporal resolution.
We assume that the media sent from a sender to a receiver contains enough information inside the media format to tell what the resolution and framerate is.
The bounds specified for a single stream MUST be within the bounds previously negotiated for the whole session.
This mechanism does not form a negotiation; as specified in the referenced document, it is a declaration by the recipient of what stream formats he desires, and the sender will respond by changing the video he sends. The sender SHOULD honor the requests by the receiver.
The mere fact that a stream is within the bounds negotiated for the session is not a sufficient condition for guaranteeing that the stream will be accepted; any number of issues, including temporary lack of resources at the recipient. Thus, the sender MUST always be prepared for one or more media streams to be refused by the recipient.
An RTCWEB client MAY support the COP mechanism [I-D.westerlund-avtext-codec-operation-point] to negotiate the resolution of video within the limits established by the SDP negotiation without the need for additional SDP exchanges.
This section may be deleted before publication as an RFC; its main purpose is to discuss the decision to make the SDP-based mechanism a MUST and the COP-based mechanism a MAY.
Both mechanisms work by having the receiver declare a wish for a resolution, and the sender switching to that resolution. The main differences are:
This section notes briefly some of the situations in which resizing might be desirable.
Adaptation to bandwidth changes (congestion control) is NOT included in this set, since a more correct model for this is that it should be detected by the sender and the receiver operating in tandem, and the sender should decide which flows, if any, need their bitrates changed.
Turning video streams off (mute) is also not included; use of "size = 0" has been suggested as one mechanism for video mute, but this proposed mechanism is not addressed in this memo.
It is intended that the resolution negotiation be influenced by the constraints set by the application of either mandatory or optional constraints at the WebRTC API, as registered in the registry established by [I-D.burnett-rtcweb-constraints-registry].
The following relationships hold for all attributes that the implementation intends to satisfy (note that the constraints listed here have NOT been registered yet):
video-min-height >= value of imageattr y= xyrange lower bound
video-max-height <= value of imageattr y= xyrange upper bound
video-min-framerate is not represented in SDP
video-max-framerate <= value of a=framerate attribute
video-min-aspect-ratio <= value of imageattr "par=" prange lower bound
video-max-aspect-ratio >= value of imageattr "par=" prange upper bound
The implementation is free to increase "min" values or decrease "max" values (make requirements more restrictive) and add "step" in order to fit with its implementation restrictions.
Constraints specified at PeerConnection creation time are reflected as SDP-wide values. Constraints specified when creating a MediaStream or attaching a MediaStream to a PeerConnection are reflected as ssrc-specific values.
The envisioned usage is that the application will not use the values specified by the client directly, but choose the minimum of the specified bounds and the implementation limitations of the browser, adjusted for any odd requirements of the codec or soft/hardware, and choose a representation in the SDP that adequately represents the possible configurations.
This document makes no request of IANA.
Note to RFC Editor: this section may be removed on publication as an RFC.
All considerations related to normal usage of SDP apply to this memo.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC4566] | Handley, M., Jacobson, V. and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006. |
[RFC6236] | Johansson, I. and K. Jung, "Negotiation of Generic Image Attributes in the Session Description Protocol (SDP)", RFC 6236, May 2011. |
[I-D.ietf-rtcweb-use-cases-and-requirements] | Holmberg, C, Hakansson, S and G Eriksson, "Web Real-Time Communication Use-cases and Requirements", Internet-Draft draft-ietf-rtcweb-use-cases-and-requirements-05, September 2011. |
[I-D.lennox-mmusic-sdp-source-selection] | Lennox, J and H Schulzrinne, "Mechanisms for Media Source Selection in the Session Description Protocol (SDP)", Internet-Draft draft-lennox-mmusic-sdp-source-selection-02, October 2010. |
[I-D.burnett-rtcweb-constraints-registry] | Burnett, D, "IANA Registry for RTCWeb Media Constraints", Internet-Draft draft-burnett-rtcweb-constraints-registry-01, April 2012. |
[I-D.westerlund-avtext-codec-operation-point] | Westerlund, M, Burman, B and L Hamm, "Codec Operation Point RTCP Extension", Internet-Draft draft-westerlund-avtext-codec-operation-point-00, March 2012. |