New issue
Advanced search Search tips

Issue 857003 link

Starred by 40 users

Issue metadata

Status: Verified
Owner:
Closed: Jan 21
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue 777617
issue 799030
issue 872431
issue 883888
issue 884023
issue 902678
issue 920979

Blocking:
issue 857004
issue 897356


Participants' hotlists:
WebRTC-Unified-Plan

Show other hotlists

Other hotlists containing this issue:
Hotlist-1
WebRTC-1.0-Spec-Compliance


Sign in to add a comment

Make Unified Plan the default SDP semantics

Project Member Reported by hbos@chromium.org, Jun 27 2018

Issue description

RTCPeerConnection currently operates in two modes, "plan-b" and "unified-plan", controlled by sdpSemantics in RTCConfiguration passed to the PC constructor.

"Plan B" and "Unified Plan" clients cannot connect (setRemoteDescription fails) if multiple senders or receivers of the same media kind (audio or video).

This bug tracks making "unified-plan" the default behavior, which is blocked on transceiver support. Switching will cause breakages and may be difficult.

RTCRtpTransceiver bug:  https://crbug.com/777617 

Plan B:

Current Chrome behavior. Behavior incompatible with spec.
Supports senders and receivers but not transceivers. Senders and receivers are not created in pairs and they do not become inactive when a track is removed rather they are removed and never reused.
SDP for creating and parsing offer/answer is NOT in accordance with spec.

Unified Plan:

Spec and Firefox behavior.
Supports transceivers (sender-receiver pairs), always creates both sender and a receiver, maps to the SDP m-line. When no longer sending or receiving a track the transceiver's direction changes. Inactive transceivers could be reused in the future. Allows early media.
SDP for creating and parsing offer/answer is in accordance with spec.
 

Comment 1 by hbos@chromium.org, Jun 27 2018

Blocking: 857004

Comment 2 by hbos@chromium.org, Jun 27 2018

Blockedon: 799030
We need to make a migration plan, including PSAs/docs explaining the difference and timeline plan, and perhaps some examples of what may break and how to fix.
Blockedon: 872431
Labels: -M-70 M-71
Labels: -M-71 M-72
Current thinking is that we'll flip the flag for M72.

Status: Started (was: Assigned)
Blockedon: 883888
Blockedon: 884023
Project Member

Comment 10 by bugdroid1@chromium.org, Oct 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/386afc6d643d0cc52572df9f0ab007c44dcc732e

commit 386afc6d643d0cc52572df9f0ab007c44dcc732e
Author: Henrik Boström <hbos@chromium.org>
Date: Mon Oct 08 07:47:15 2018

Make RTCUnifiedPlanByDefault a base::Feature.

It was previously a blink::RuntimeEnabledFeature
(--enable-blink-feature), making it a base::Feature (--enable-feature)
allows us to control it with Finch experiments. The blink feature is
kept for backwards compatibility; either one of the flags can be used to
enable Unified Plan by default.

This also adds the flag to the chrome://flags page.

Bug:  857003 
Change-Id: I2fafec1a54ded69c37cc469b4f43c10e1a5f7ef3
Reviewed-on: https://chromium-review.googlesource.com/c/1264580
Commit-Queue: Henrik Boström <hbos@chromium.org>
Reviewed-by: Philip Jägenstedt <foolip@chromium.org>
Reviewed-by: Harald Alvestrand <hta@chromium.org>
Cr-Commit-Position: refs/heads/master@{#597493}
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/chrome/browser/about_flags.cc
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/chrome/browser/flag_descriptions.cc
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/chrome/browser/flag_descriptions.h
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/third_party/WebKit/LayoutTests/VirtualTestSuites
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/third_party/blink/common/features.cc
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/third_party/blink/public/common/features.h
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
[modify] https://crrev.com/386afc6d643d0cc52572df9f0ab007c44dcc732e/tools/metrics/histograms/enums.xml

Project Member

Comment 11 by bugdroid1@chromium.org, Oct 11

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b432cc6a63126a99c554ed838dcefca602b47d5f

commit b432cc6a63126a99c554ed838dcefca602b47d5f
Author: Henrik Boström <hbos@chromium.org>
Date: Thu Oct 11 15:22:11 2018

Add warning for complex Plan B SDP usage.

This is only applicable when the application does not specify the
sdpSemantics and is relying on the default behavior which is about to
change from Plan B to Unified Plan. In "complex" use cases, Plan B SDP
would be rejected by Unified Plan clients. This CL adds a warning if:
- The SDP is "complex Plan B SDP".
- The RTCPeerConnection was constructed without specifying sdpSemantics.

Bug:  857003 
Change-Id: I82b88fde2687edd68e0dc8e1126b16e49bf54c2b
Reviewed-on: https://chromium-review.googlesource.com/c/1275892
Commit-Queue: Henrik Boström <hbos@chromium.org>
Reviewed-by: Philip Jägenstedt <foolip@chromium.org>
Reviewed-by: Harald Alvestrand <hta@chromium.org>
Cr-Commit-Position: refs/heads/master@{#598769}
[modify] https://crrev.com/b432cc6a63126a99c554ed838dcefca602b47d5f/third_party/blink/public/platform/web_feature.mojom
[modify] https://crrev.com/b432cc6a63126a99c554ed838dcefca602b47d5f/third_party/blink/renderer/core/frame/deprecation.cc
[modify] https://crrev.com/b432cc6a63126a99c554ed838dcefca602b47d5f/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
[modify] https://crrev.com/b432cc6a63126a99c554ed838dcefca602b47d5f/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.h
[modify] https://crrev.com/b432cc6a63126a99c554ed838dcefca602b47d5f/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_test.cc
[modify] https://crrev.com/b432cc6a63126a99c554ed838dcefca602b47d5f/tools/metrics/histograms/enums.xml

Blockedon: 899747
For those following this bug who missed the PSA in discuss-webrtc@, here it is:
"PSA: Unified Plan M71 Experiment; M72 Target - Applications May Break! Please Update Your Code"
https://groups.google.com/forum/#!topic/discuss-webrtc/aPRI0-l7lvY
Blockedon: 902678
Blockedon: 906029
Blocking: 897356
Blockedon: -906029
Blockedon: -899747
Blocking: 920979
Blockedon: 920979
Blocking: -920979

Comment 21 by hbos@chromium.org, Jan 18 (5 days ago)

NextAction: 2019-01-21
Tip-of-tree now has Unified Plan by default: https://chromium-review.googlesource.com/c/chromium/src/+/1407188

The flip making the Unified Plan experiment 100% enabled in M72 has also just landed. I'll check back and verify Canary and Beta in a couple of days before updating the status.

Comment 22 by hbos@chromium.org, Jan 21 (2 days ago)

NextAction: ----
Status: Verified (was: Started)
I've verified that Unified Plan is LAUNCHED in M72 Beta and Dev (may require restart to get the new experiment config that says 100% enabled), and Unified Plan is enabled by default in-code as of 73.0.3676.0.

Sign in to add a comment