Contact emails
Explainer
Simulcast capability allows a client to send multiple encodings (layers) of the same video source.
This scenario is most relevant in group/conference calls utilizing a central routing server (aka Selective Forwarding Unit or SFU).
The SFU allows a diverse set of clients to interact, each maximizing their experience without negatively affecting one another.
Simulcast is already supported in WebRTC by munging the SDP.
This forms part of the RTCPeerConnection API, and allows applications to use Simulcast in WebRTC directly by calling the addTransceiver() API, without munging or hacking the platform.
Design doc/Spec
http://w3c.github.io/webrtc-pc/#simulcast-functionality
https://tools.ietf.org/html/draft-ietf-mmusic-rid-15
https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13
Summary
This intent to implement and ship covers spec-compliant Simulcast.
With addTransceiver(), users supply multiple send encodings for a single source and use the rid attribute of RTCRtpCodingParameters to uniquely identify them.
This has no effect outside of the Simulcast scenario.
Motivation
This is part of the “WebRTC 1.0 complete” effort - giving support for all the relevant features of the WebRTC-PC specification.
This enables the users to explicitly request simulcast for video sources, without needing to manipulate the SDP in the peer-to-peer negotiation.
Risks
Interoperability and Compatibility
This improves interoperability as Simulcast is currently achieved in a non-standard way.
All browsers agreed to complete the WebRTC 1.0 specification, so there shouldn’t be any long term interoperability issues.
Compatibility is maintained for the legacy scenario. Users can still munge the SDP to use simulcast without being spec-compliant.
Edge: Public support for implementing WebRTC 1.0
Firefox: Shipped simulcast. Public support for implementing WebRTC 1.0
Safari: Public support for implementing WebRTC 1.0
Web / Framework developers: Positive, simulcast support is a much requested feature.
Ergonomics
RIDs and layers are used when creating RTCRtpSender and in calls to RTCRtpSender.getParameters() and RTCRtpSender.setParameters()
Activation
There shouldn’t be any activation issues.
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes.
Is this feature fully tested by web-platform-tests?
WPT tests check the specification of layers with the rid attribute:
Existing WPT tests as part of the webrtc suite:
RTCRtpParameters-encodings.html - checks that supplied rid values propagates to the sender, and is returned via getParameters().
RTCRtpSender-getParameters.html - checks that rid property is returned empty in non-simulcast scenario.
RTCRtpSender-setParameters.html - checks that rid values cannot be modified after layers are created.
Link to entry on the feature dashboard
https://www.chromestatus.com/feature/4699744823672832
Requesting approval to ship?
Yes.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANJD8SaLTwp0NYqcquJ3tFXmLiSb56rWcsiy0o3cCczpuZ3gHg%40mail.gmail.com.
Amit, I think this feature "shallow" in the sense that it's just a more convenient way to achieve the same SDP sent over the network. If so it sounds like a great web developer convenience (nobody loves SDP, I've heard) and not adding any new network behavior, making it fairly high value and low risk. If that's not right, please correct me.For testing this, are all of the effects of this feature really testable using web-platform-tests? Is there a way to test cross-browser what the resulting SDP is when using this API? If not, do you have a sense for what the minimum additional infrastructure in web-platform-test would be to support testing this?Given that Firefox has already shipped this and Edge is switching to Chromium, the interop risk would be that this isn't implemented in WebKit. I've poked https://bugs.webkit.org/show_bug.cgi?id=173262 and +Youenn Fablet here in case there are any issues to raise around this.
Amit, I think this feature "shallow" in the sense that it's just a more convenient way to achieve the same SDP sent over the network. If so it sounds like a great web developer convenience (nobody loves SDP, I've heard) and not adding any new network behavior, making it fairly high value and low risk. If that's not right, please correct me.For testing this, are all of the effects of this feature really testable using web-platform-tests? Is there a way to test cross-browser what the resulting SDP is when using this API? If not, do you have a sense for what the minimum additional infrastructure in web-platform-test would be to support testing this?Given that Firefox has already shipped this and Edge is switching to Chromium, the interop risk would be that this isn't implemented in WebKit. I've poked https://bugs.webkit.org/show_bug.cgi?id=173262 and +Youenn Fablet here in case there are any issues to raise around this.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Responding to the queries:Tracking bug for this release:This feature is "shallow", it's a more convenient and spec-compliant way of achieving simulcast which is possible today through SDP munging and "proprietary" (non-spec-compliant) application logic. It does not add new network activity in terms of the media that gets sent.However, it is not a way to achieve the same SDP. It generates different SDP which is spec-compliant that triggers the same behavior. But users should be oblivious to the SDP in this case and shouldn't need to inspect or modify it.Testability: all of the new effects of this feature are testable using web-platform-tests, i.e. the ergonomics around interacting with the layers and configuring the peer connection.The actual video being sent is not testable, nor should it be tested with WPT (IMHO), rather with other mechanisms/frameworks.A really important aspect in spec-compliant simulcast is that it assumes that an SFU is used to mediate between all the participants in the group call. Two peers do not need simulcast, as they can directly negotiate the optimal parameters for their connection.What this means is that two browsers cannot communicate directly via this API and they must use a mediator. We do not need to test the cross browser behavior. We can test that the SDP generated by each implementation fulfills the spec requirements when going through the same API setup (i.e. addTransceiver with multiple layers).
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/3cbc713c-0a65-46ec-b1b3-a27cc27eeda7%40chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANJD8SaLTwp0NYqcquJ3tFXmLiSb56rWcsiy0o3cCczpuZ3gHg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/3bbacbde-0acc-4de0-a251-5be04d1a765a%40chromium.org.
Ping API owners for more LGTMs than Philip J's. This feature is on track and there is consensus among all major browsers.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
It is a q quite odd to include a=ssrc lines on unified plan sdp without simulcast with the rationale that not enough endpoints support the mid extension but then drop them on simulcast sdp with the rationale that all other endpoints must support rid.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALiegfkAHy-XOa2HWf%3DzdY0p70yWWDngsbLVTYUJw6tF2D%3DysA%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/3bf7963a-356e-4916-8f9b-cfbc768e7667%40chromium.org.
I do not think we should hold off, the implementation follows the spec.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYfjqqQUrxPFCN4g2dkDzVngOkz5-tLJ8zAfs%3DNDuU9uxA%40mail.gmail.com.
It's been pointed out in private conversation that there doesn't exist a spec for how to expose SSRC information and RID information at the same time in the SDP. Perhaps we will have to write one.
Personally, I think this should be a standalone IETF spec ("how to live with SSRC and RID signalling at the same time"), rather than attempting to patch this into one of the others.
On Mon, Mar 4, 2019 at 11:38 AM Philip Jägenstedt wrote:
--On Mon, Mar 4, 2019 at 3:32 AM wrote:On Thursday, February 28, 2019 at 1:18:52 PM UTC-8, ami...@chromium.org wrote:I do not think we should hold off, the implementation follows the spec.[BA] The WEBRTC APIs have maintained a mechanism for obtaining SSRCs since the object model was first added several years ago. This was done so as to maintain backward compatibility with existing conferencing systems. In order to ease the implementation burden and assist in meeting the March 2020 charter deadline, Taylor Brandstetter of Google requested that the instead of surfacing SSRCs within the object model, that they be surfaced in the SDP instead His proposal accepted by the WG, on the understanding that Google would implement its own proposal. Firefox has already shipped SSRC support in SDP as agreed upon. The history is detailed in Github Issue https://github.com/w3c/webrtc-pc/issues/1174.The consequences of reopening this issue are potentially severe. The alternative to surfacing the SSRCs in SDP is to surface them in the object model as per the original design. However, at this point with Firefox having already shipped SDP support based on Google's proposal, going the object model route would require additional work that will undoubtedly push schedules out.The WebRTC WG Charter expires in March 2020. By that time it is expected that the WG will demonstrate API as well as protocol interop. One of the last impediments to reaching PR is demonstrating API and protocol interop with simulcast. Given the tightness of the charter deadlines, requiring major additional work such as adding SSRCs back to the object model, or requiring conferencing system updates in order to demonstrate protocol interop increases the chance that the WG will fail to reach its milestones. After 8+ years of operation, the W3C (and many of the WG participants) are eager to wrap things up.Amit, is the plan to expose SSRC in the SDP like Firefox do?And does the spec actually require anything on this point, are there tests that are passing in Firefox and failing in Chrome or vice versa? If there's not, can they be added?
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
On Thursday, February 28, 2019 at 1:18:52 PM UTC-8, ami...@chromium.org wrote:I do not think we should hold off, the implementation follows the spec.[BA] The WEBRTC APIs have maintained a mechanism for obtaining SSRCs since the object model was first added several years ago. This was done so as to maintain backward compatibility with existing conferencing systems. In order to ease the implementation burden and assist in meeting the March 2020 charter deadline, Taylor Brandstetter of Google requested that the instead of surfacing SSRCs within the object model, that they be surfaced in the SDP instead His proposal accepted by the WG, on the understanding that Google would implement its own proposal. Firefox has already shipped SSRC support in SDP as agreed upon. The history is detailed in Github Issue https://github.com/w3c/webrtc-pc/issues/1174.The consequences of reopening this issue are potentially severe. The alternative to surfacing the SSRCs in SDP is to surface them in the object model as per the original design. However, at this point with Firefox having already shipped SDP support based on Google's proposal, going the object model route would require additional work that will undoubtedly push schedules out.
In general I'm in favor of removing SSRC from SDP and webrtc.org code as much as we can (and replace them with MID and RID). So we are more then happy to remove SSRC's from simulcast SDP in Firefox to have browsers move forward the same way and help with interop.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALiegf%3DCr8x%3DXVWU9u%3DVeBgvh_MTdN14VF%3D0YWo-GFg9sdJYyQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/2f7d4ee0-d149-4f13-8fe1-2014bc3a8825%40chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOqqYVH1GJfEUxquJvVsKV3OPduKK_pm8SCw3bgrJf1MJWT5dg%40mail.gmail.com.
Given that there doesn't seem to have been consensus at the last WG interim is this shipping?Bugs like https://bugs.chromium.org/p/chromium/issues/detail?id=944821 break current behaviour even when not using the new API which makes this seems premature -- the workaround is to revert to plan-b sdpSemantics which is highly counterproductive.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/2f7d4ee0-d149-4f13-8fe1-2014bc3a8825%40chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.