W3C WebRTC/MediaCapture WG Meeting
March 1, 2017
8 AM PDT
1
Chairs: Harald Alvestrand
Stefan Hakansson
Bernard Aboba
W3C WG IPR Policy
2
Welcome!
3
About this Virtual Meeting
Information on the meeting:
4
For Discussion Today
5
WebRTC PC Pull Requests
6
Accepts track for backwards compatibility: Means associated sender/receiver. Throws InvalidAccessError if there’s none or more than one possible, or wrong pc.
8.5 The stats selection algorithm is as follows:
A stats object is said to "correspond to" a selector if its "ssrc" stats attribute matches an ssrc in the selector.
7
8
“Hybrid” solution uses “username” for the OAuth “kid”, and uses “credential” for “mac_key” and “access_token”:
dictionary OAuthCredential {� DOMString mac_key; // base64-encoded� DOMString access_token; // base64-encoded�};��dictionary RTCIceServer {� required (DOMString or sequence<DOMString>) urls;� DOMString username;� (DOMString or OAuthCredential) credential;� RTCIceCredentialType credentialType = "password";�};
9
10
11
12
13
14
Issue 1024/PR 1025: Codecs[] can be reordered or removed but not modified (Taylor)
Added the following restriction to setParameters():
When using the setParameters method, the codecs sequence from the corresponding call to getParameters can be reordered and entries can be removed, but entries cannot be added, and the RTCRtpCodecParameters dictionary members cannot be modified.
Promise<void> setParameters(optional RTCRtpParameters parameters);
dictionary RTCRtpCodecParameters {� unsigned short payloadType;� DOMString mimeType;� unsigned long clockRate;� unsigned short channels = 1;� DOMString sdpFmtpLine;�};
15
Issue 1024/PR 1025: Codecs[] can be reordered or removed but not modified (cont’d)
Added the following restriction to setCodecPreferences():
The codecs sequence passed into setCodecPreferences can only contain codecs that are returned by RTCRtpSender.getCapabilities(kind) or RTCRtpReceiver.getCapabilities(kind), where kind is the kind of the RTCRtpTransceiver on which the method is called. Additionally, the RTCRtpCodecParameters dictionary members cannot be modified. If codecs does not fulfill these requirements, the User Agent must throw an InvalidAccessError.
Section 5.4 says:
“When generating a session description using either createOffer or createAnswer, the user agent must use the indicated codecs, in the order specified in the codecs argument, for the media section corresponding to this RTCRtpTransceiver. Note that calls to createAnswer will use only the common subset of these codecs and the codecs that appear in the offer. This method allows applications to disable the negotiation of specific codecs. It also allows an application to cause a remote peer to prefer the codec that appears first in the list for sending.”
16
WebRTC PC Issues
17
Issue 1040: Codecs supporting multiple clock rates/packetization-mode (Bernard)
Examples:
18
Question: How do we differentiate these codecs in the following methods:
static RTCRtpCapabilities getCapabilities(DOMString kind);
void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
dictionary RTCRtpCodecCapability {� DOMString mimeType;�};
Issue 1040: Codecs supporting multiple clock rates/packetization-mode (cont’d)
partial dictionary RTCRtpCodecCapability {� DOMString mimeType;� unsigned long clockRate;� DOMString sdpFmtpLine;�};
2. If we add attributes, can setCodecPreferences() set any of them? Example: An application that only requires Opus mono.
Can it set stereo=0 via setCodecPreferences() prior to calling createOffer()?
19
Issue 1022: sdpFmtpLine isn’t very convenient (Taylor)
m=audio 12346 RTP/AVP 100� a=rtpmap:100 telephone-event/8000� a=fmtp:100 0-15,66,70
20
Issue 845: “Throw a FooError” steps not consistent (Taylor)
Proposal:
This is the wording suggested by WebIDL. The links further clarify what the wording means. We can define the terms “throw” and “created” in the Terminology section, and link to them throughout the document.
21
Issue 526: NetworkError is not defined and might not be needed (Bernard)
22
Issue 526: NetworkError is not defined and might not be needed (cont’d)
When the WebSocket connection is closed, possibly cleanly, the user agent must queue a task to run the following substeps:
23
Issue 526: NetworkError is not defined and might not be needed (cont’d)
User agents must not convey any failure information to scripts in a way that would allow a script to distinguish the following situations:
In all of these cases, the the WebSocket connection close code would be 1006, as required by the WebSocket Protocol specification. [WSP]
Allowing a script to distinguish these cases would allow a script to probe the user's local network in preparation for an attack.
In particular, this means the code 1015 is not used by the user agent (unless the server erroneously uses it in its close frame, of course).
The task source for all tasks queued in this section is the WebSocket task source.
24
Issue 526: NetworkError is not defined (cont’d)
25
Issue 526: NetworkError is not defined and might not be needed (cont’d)
When the RTCDataChannel is closed, possibly cleanly, the user agent must queue a task to run the following substeps:
26
Issue 1021: Parameter for packetization interval (Bernard)
27
Issue 1021: Parameter for packetization interval (cont’d)
28
Issue 1021: Parameter for packetization interval (cont’d)
partial dictionary RTCRtpCodecCapability {� unsigned long maxptime; //The maximum packetization time supported by the RTCRtpReceiver.� unsigned long ptime; //The preferred duration of media represented by a packet in milliseconds for the RTCRtpSender or RTCRtpReceiver.�};
partial dictionary RTCRtpCodecParameters {� unsigned long maxptime; // The maximum packetization time set on the RTCRtpSender. Not specified if unset. If ptime is also set, maxptime is ignored.� unsigned long ptime; // The duration of media represented by a packet in milliseconds for the RTCRtpSender. If unset, the RTCRtpSender may select any value up to maxptime.�};
29
Issue 763: Handling of Simulcast Errors (Bernard)
30
partial dictionary RTCRtpCodecCapability {� Unsigned long maxSimulcastStreams = 0;�};
Thank you
Special thanks to:
W3C/MIT for WebEx
WG Participants, Editors & Chairs
31