draft-ietf-rtcweb-video-02.txt   draft-ietf-rtcweb-video-03.txt 
Network Working Group A.B. Roach Network Working Group A.B. Roach
Internet-Draft Mozilla Internet-Draft Mozilla
Intended status: Standards Track October 27, 2014 Intended status: Standards Track November 25, 2014
Expires: April 30, 2015 Expires: May 29, 2015
WebRTC Video Processing and Codec Requirements WebRTC Video Processing and Codec Requirements
draft-ietf-rtcweb-video-02 draft-ietf-rtcweb-video-03
Abstract Abstract
This specification provides the requirements and considerations for This specification provides the requirements and considerations for
WebRTC applications to send and receive video across a network. It WebRTC applications to send and receive video across a network. It
specifies the video processing that is required, as well as video specifies the video processing that is required, as well as video
codecs and their parameters. codecs and their parameters.
Status of This Memo Status of This Memo
skipping to change at page 1, line 33 skipping to change at page 1, line 33
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on April 30, 2015. This Internet-Draft will expire on May 29, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 12 skipping to change at page 2, line 12
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Pre and Post Processing . . . . . . . . . . . . . . . . . . . 2 3. Pre and Post Processing . . . . . . . . . . . . . . . . . . . 2
3.1. Camera Source Video . . . . . . . . . . . . . . . . . . . 3 3.1. Camera Source Video . . . . . . . . . . . . . . . . . . . 3
3.2. Screen Source Video . . . . . . . . . . . . . . . . . . . 3 3.2. Screen Source Video . . . . . . . . . . . . . . . . . . . 3
4. Stream Orientation . . . . . . . . . . . . . . . . . . . . . 4 4. Stream Orientation . . . . . . . . . . . . . . . . . . . . . 3
5. Codec-Specific Considerations . . . . . . . . . . . . . . . . 4 5. Mandatory to Implement Video Codec . . . . . . . . . . . . . 4
5.1. VP8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6. Codec-Specific Considerations . . . . . . . . . . . . . . . . 5
5.2. H.264 . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6.1. VP8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
6. Mandatory to Implement Video Codec . . . . . . . . . . . . . 6 6.2. H.264 . . . . . . . . . . . . . . . . . . . . . . . . . . 5
6.1. Temperature of Working Group . . . . . . . . . . . . . . 6 7. Security Considerations . . . . . . . . . . . . . . . . . . . 6
7. Security Considerations . . . . . . . . . . . . . . . . . . . 7 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 7
10.1. Normative References . . . . . . . . . . . . . . . . . . 7 10.1. Normative References . . . . . . . . . . . . . . . . . . 7
10.2. Informative References . . . . . . . . . . . . . . . . . 9 10.2. Informative References . . . . . . . . . . . . . . . . . 8
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Introduction 1. Introduction
One of the major functions of WebRTC endpoints is the ability to send One of the major functions of WebRTC endpoints is the ability to send
and receive interactive video. The video might come from a camera, a and receive interactive video. The video might come from a camera, a
screen recording, a stored file, or some other source. This screen recording, a stored file, or some other source. This
specification defines how the video is used and discusses special specification defines how the video is used and discusses special
considerations for processing the video. It also covers the video- considerations for processing the video. It also covers the video-
related algorithms WebRTC devices need to support. related algorithms WebRTC devices need to support.
skipping to change at page 3, line 42 skipping to change at page 3, line 42
be prepared to handle mid-stream resolution changes in a way that be prepared to handle mid-stream resolution changes in a way that
preserves their utility. Precise handling (e.g., resizing the preserves their utility. Precise handling (e.g., resizing the
element a video is rendered in versus scaling down the received element a video is rendered in versus scaling down the received
stream; decisions around letter/pillarboxing) is left to the stream; decisions around letter/pillarboxing) is left to the
discretion of the application. discretion of the application.
Additionally, attention is drawn to the requirements in Additionally, attention is drawn to the requirements in
[I-D.ietf-rtcweb-security-arch] section 5.2 and the considerations in [I-D.ietf-rtcweb-security-arch] section 5.2 and the considerations in
[I-D.ietf-rtcweb-security] section 4.1.1. [I-D.ietf-rtcweb-security] section 4.1.1.
TODO: Do we want to define additional metadata to indicate whether a
stream is sourced from a camera versus a screen capture? This would
allow the receiving party to tune, e.g., output filters. It would
appear that H.263 has this kind of indicator built into its
bitstream, but I found no analog in H.264 or VP8.
4. Stream Orientation 4. Stream Orientation
In some circumstances - and notably those involving mobile devices - In some circumstances - and notably those involving mobile devices -
the orientation of the camera may not match the orientation used by the orientation of the camera may not match the orientation used by
the encoder. Of more importance, the orientation may change over the the encoder. Of more importance, the orientation may change over the
course of a call, requiring the receiver to change the orientation in course of a call, requiring the receiver to change the orientation in
which it renders the stream. which it renders the stream.
While the sender may elect to simply change the pre-encoding While the sender may elect to simply change the pre-encoding
orientation of frames, this may not be practical or efficient (in orientation of frames, this may not be practical or efficient (in
particular, in cases where the interface to the camera returns pre- particular, in cases where the interface to the camera returns pre-
compressed video frames). Note that the potential for this behavior compressed video frames). Note that the potential for this behavior
adds another set of circumstances under which the resolution of a adds another set of circumstances under which the resolution of a
screen might change in the middle of a video stream, in addition to screen might change in the middle of a video stream, in addition to
those mentioned under "Screen Sourced Video," above. those mentioned under "Screen Sourced Video," above.
To accommodate these circumstances, RTCWEB implementations SHOULD To accommodate these circumstances, RTCWEB implementations that can
support generating and receiving the R0 and R1 bits of the generate media in orientations other than the default MUST support
Coordination of Video Orientation (CVO) mechanism described in generating the R0 and R1 bits of the Coordination of Video
section 7.4.5 of [TS26.114]. (TODO: Is "SHOULD support" the right Orientation (CVO) mechanism described in section 7.4.5 of [TS26.114],
level here?) They MAY support the other bits in the CVO extension, and MUST send them for all orientations when the peer indicates
including the higher-resolution rotation bits. support for the mechanism. They MAY support sending the other bits
in the CVO extension, including the higher-resolution rotation bits.
All implementations SHOULD support interpretation of the R0 and R1
bits, and MAY support the other CVO bits.
Further, some codecs support in-band signaling of orientation (for Further, some codecs support in-band signaling of orientation (for
example, the SEI "Display Orientation" messages in H.264 and H.265). example, the SEI "Display Orientation" messages in H.264 and H.265).
If CVO has been negotiated, then the sender MUST NOT make use of such If CVO has been negotiated, then the sender MUST NOT make use of such
codec-specific mechanisms. However, when support for CVO is not codec-specific mechanisms. However, when support for CVO is not
signaled in the SDP, then such implementations MAY make use of the signaled in the SDP, then such implementations MAY make use of the
codec-specific mechanisms instead. codec-specific mechanisms instead.
5. Codec-Specific Considerations 5. Mandatory to Implement Video Codec
WebRTC endpoints are not required to support the codecs mentioned in For the definitions of "WebRTC Brower," "WebRTC Non-Browser", and
this section. "WebRTC-Compatible Endpoint" as they are used in this section, please
refer to [I-D.ietf-rtcweb-overview].
However, to foster interoperability between endpoints that have WebRTC Browsers MUST implement the VP8 video codec as described in
codecs in common, if they do support one of the listed codecs, then [RFC6386] and H.264 as described in [H264].
they need to meet the requirements specified in the subsection for
that codec. WebRTC Non-Browsers that support transmitting and/or receiving video
MUST implement the VP8 video codec as described in [RFC6386] and
H.264 as described in [H264].
To promote the use of non-royalty bearing video codecs,
participants in the RTCWEB working group, and any successor
working groups in the IETF, intend to monitor the evolving
licensing landscape as it pertains to the two mandatory-to-
implement codecs. If compelling evidence arises that one of the
codecs is available for use on a royalty-free basis, the working
group plans to revisit the question of which codecs are required
for Non-Browsers, with the intention being that the royalty-free
codec will remain mandatory to implement, and the other will
become optional.
These provisions apply to WebRTC Non-Browsers only. There is no
plan to revisit the codecs required for WebRTC Browsers.
"WebRTC-compatible endpoints" are free to implement any video codecs
they see fit. This follows logically from the definition of "WebRTC-
compatible endpoint." It is, of course, advisable to implement at
least one of the video codecs that is mandated for WebRTC Browsers,
and implementors are encouraged to do so.
6. Codec-Specific Considerations
SDP allows for codec-independent indication of preferred video SDP allows for codec-independent indication of preferred video
resolutions using the mechanism described in [RFC6236]. If a resolutions using the mechanism described in [RFC6236]. If a
recipient of video indicates a receiving resolution, the sender recipient of video indicates a receiving resolution, the sender
SHOULD accommodate this resolution, as the receiver may not be SHOULD accommodate this resolution, as the receiver may not be
capable of handling higher resolutions. capable of handling higher resolutions.
Additionally, codecs may include codec-specific means of signaling Additionally, codecs may include codec-specific means of signaling
maximum receiver abilities with regards to resolution, frame rate, maximum receiver abilities with regards to resolution, frame rate,
and bitrate. and bitrate.
Unless otherwise signaled in SDP, recipients of video streams are Unless otherwise signaled in SDP, recipients of video streams are
MUST be able to decode video at a rate of at least 20 fps at a MUST be able to decode video at a rate of at least 20 fps at a
resolution of at least 320x240. These values are selected based on resolution of at least 320x240. These values are selected based on
the recommendations in [HSUP1]. the recommendations in [HSUP1].
Encoders are encouraged to support encoding media with at least the Encoders are encouraged to support encoding media with at least the
same resolution and frame rates cited above. same resolution and frame rates cited above.
5.1. VP8 6.1. VP8
If VP8, defined in [RFC6386], is supported, then the endpoint MUST For the VP8 codec, defined in [RFC6386], endpoints MUST support the
support the payload formats defined in [I-D.ietf-payload-vp8]. In payload formats defined in [I-D.ietf-payload-vp8]. In addition they
addition it MUST support the 'bilinear' and 'none' reconstruction MUST support the 'bilinear' and 'none' reconstruction filters.
filters.
TODO: There have been claims that VP8 already requires supporting TODO: There have been claims that VP8 already requires supporting
both filters; if true, these do not need to be reiterated here. both filters; if true, these do not need to be reiterated here.
In addition to the [RFC6236] mechanism, VP8 encoders MUST limit the In addition to the [RFC6236] mechanism, VP8 encoders MUST limit the
streams they send to conform to the values indicated by receivers in streams they send to conform to the values indicated by receivers in
the corresponding max-fr and max-fs SDP attributes. the corresponding max-fr and max-fs SDP attributes.
5.2. H.264 6.2. H.264
If [H264] is supported, then the device MUST support the payload For the [H264] codec, endpoints MUST support the payload formats
formats defined in [RFC6184]. In addition, they MUST support defined in [RFC6184]. In addition, they MUST support Constrained
Constrained Baseline Profile Level 1.2, and they SHOULD support H.264 Baseline Profile Level 1.2, and they SHOULD support H.264 Constrained
Constrained High Profile Level 1.3. High Profile Level 1.3.
Implementations of the H.264 codec have utilized a wide variety of Implementations of the H.264 codec have utilized a wide variety of
optional parameters. To improve interoperability the following optional parameters. To improve interoperability the following
parameter settings are specified: parameter settings are specified:
packetization-mode: Packetization-mode 1 MUST be supported. Other packetization-mode: Packetization-mode 1 MUST be supported. Other
modes MAY be negotiated and used. modes MAY be negotiated and used.
profile-level-id: Implementations MUST include this parameter within profile-level-id: Implementations MUST include this parameter within
SDP and SHOULD interpret it when receiving it. SDP and SHOULD interpret it when receiving it.
skipping to change at page 6, line 15 skipping to change at page 6, line 31
the highest quality of video possible. the highest quality of video possible.
sprop-parameter-sets: H.264 allows sequence and picture information sprop-parameter-sets: H.264 allows sequence and picture information
to be sent both in-band, and out-of-band. WebRTC implementations to be sent both in-band, and out-of-band. WebRTC implementations
MUST signal this information in-band; as a result, this parameter MUST signal this information in-band; as a result, this parameter
will not be present in SDP. will not be present in SDP.
TODO: Do we need to require the handling of specific SEI messages? TODO: Do we need to require the handling of specific SEI messages?
One example that has been raised is freeze-frame messages. One example that has been raised is freeze-frame messages.
6. Mandatory to Implement Video Codec
Note: This section is here purely as a placeholder, as there is not
yet WG Consensus on Mandatory to Implement video codecs. The issue
is more complicated than may be immediately apparent to newcomers,
who are strongly encouraged to familiarize themselves with the
previous discussions on the topic before engaging on this issue.
The currently recorded working group consensus is that all
implementations MUST support a single, specified mandatory-to-
implement codec. The remaining decision point is a selection of this
single codec.
6.1. Temperature of Working Group
To capture the conversation so far, this section summarizes the
result of a straw poll that the working group undertook in December
2013 and January 2014. Respondents were asked to answer "Yes,"
"Acceptable," or "No" for each option. The options were collected
from the working group at large prior to the initiation of the straw
poll.
Yes Acc No
--- --- ---
1. All entities MUST support H.264 48% 11% 41%
2. All entities MUST support VP8 41% 17% 42%
3. All entities MUST support both H.264 and VP8 9% 38% 53%
4. Browsers MUST support both H.264 and VP8, other
entities MUST support at least one of H.264
and VP8 11% 34% 55%
5. All entities MUST support at least one of
H.264 and VP8 10% 16% 74%
6. All entities MUST support H.261 5% 23% 72%
7. There is no MTI video codec 12% 30% 58%
8. All entities MUST support H.261 and all entities
MUST support at least one of H.264 and VP8 4% 28% 68%
9. All entities MUST support Theora 7% 26% 67%
10. All entities MUST implement at least two of
{VP8, H.264, H.261} 5% 30% 65%
11. All entities MUST implement at least two of
{VP8, H.264, H.263} 5% 25% 70%
12. All entities MUST support decoding using both
H.264 and VP8, and MUST support encoding using
at least one of H.264 or VP8 7% 20% 73%
13. All entities MUST support H.263 6% 19% 75%
14. All entities MUST implement at least two of
{VP8, H.264, Theora} 6% 27% 67%
15. All entities MUST support decoding using Theora 1% 15% 84%
16. All entities MUST support Motion JPEG 1% 25% 74%
7. Security Considerations 7. Security Considerations
This specification does not introduce any new mechanisms or security This specification does not introduce any new mechanisms or security
concerns beyond what the other documents it references. In WebRTC, concerns beyond what the other documents it references. In WebRTC,
video is protected using DTLS/SRTP. A complete discussion of the video is protected using DTLS/SRTP. A complete discussion of the
security can be found in [I-D.ietf-rtcweb-security] and security can be found in [I-D.ietf-rtcweb-security] and
[I-D.ietf-rtcweb-security-arch]. Implementers should consider [I-D.ietf-rtcweb-security-arch]. Implementers should consider
whether the use of variable bit rate video codecs are appropriate for whether the use of variable bit rate video codecs are appropriate for
their application based on [RFC6562]. their application based on [RFC6562].
skipping to change at page 8, line 8 skipping to change at page 7, line 21
[HSUP1] ITU-T Recommendation H.Sup1, "Application profile - Sign [HSUP1] ITU-T Recommendation H.Sup1, "Application profile - Sign
language and lip-reading real-time conversation using low language and lip-reading real-time conversation using low
bit rate video communication", May 1999. bit rate video communication", May 1999.
[I-D.ietf-payload-vp8] [I-D.ietf-payload-vp8]
Westin, P., Lundin, H., Glover, M., Uberti, J., and F. Westin, P., Lundin, H., Glover, M., Uberti, J., and F.
Galligan, "RTP Payload Format for VP8 Video", draft-ietf- Galligan, "RTP Payload Format for VP8 Video", draft-ietf-
payload-vp8-11 (work in progress), February 2014. payload-vp8-11 (work in progress), February 2014.
[I-D.ietf-rtcweb-overview]
Alvestrand, H., "Overview: Real Time Protocols for
Browser-based Applications", draft-ietf-rtcweb-overview-12
(work in progress), October 2014.
[IEC23001-8] [IEC23001-8]
ISO/IEC 23001-8:2013/DCOR1, "Coding independent media ISO/IEC 23001-8:2013/DCOR1, "Coding independent media
description code points", 2013. description code points", 2013.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC4175] Gharai, L. and C. Perkins, "RTP Payload Format for [RFC4175] Gharai, L. and C. Perkins, "RTP Payload Format for
Uncompressed Video", RFC 4175, September 2005. Uncompressed Video", RFC 4175, September 2005.
 End of changes. 16 change blocks. 
95 lines changed or deleted 69 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/