commit | 80850ca477988836019b90a75eef07780b3ef77b | [log] [tgz] |
---|---|---|
author | Henrik Boström <hbos@webrtc.org> | Wed Mar 22 17:08:00 2023 |
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Mar 23 10:46:17 2023 |
tree | 69548b5123773d69de1c548dc59d8b36069ddc7e | |
parent | 9a2938b24c4adc086a17bc5661dde8a26ab0d5ff [diff] |
Fix crash happening when changing from legacy to standard VP9. Attempting to ship "WebRTC-AllowDisablingLegacyScalability" revealed a DCHECK that happens when negotiating 3 VP9 streams prior to the setParameters() call: 1. By default, `scalability_mode` is missing, so those 3 streams defaulted to legacy SVC, meaning only a single stream is used. 2. Then, setParameters() was called to make `encodings[0].scalability_mode = "L2T2_KEY"` and `encodings[1-2].active = false`. The inactive streams were just dummies and never expected to exist. Without simulcast support this is OK, because both 1) and 2) are interpreted to have a single stream. But with simulcast support, 1) is interpreted as single stream and 2) as three streams (1 active, 2 inactive). This should be roughly the same setup, but our code treats them differently. The DCHECK crash was a mismatch in number of streams in one of the layers. The fix is to re-create the streams when the number of streams change for this reason. The new test revealed other issues and fixes too: - Support for multiple spatial layers (e.g. "L2T2_KEY") when multiple encodings exist but only one encoding is active. - Allow inactive layers not to have a scalability mode set. A laundry list (https://crbug.com/webrtc/15028) has been created to update known places doing "if streams == 1" that need to do "if active streams == 1" instead. Credit: The RecreateWebRtcStream() fix is based on eshr@'s POC from https://webrtc-review.googlesource.com/c/src/+/298565. Bug: webrtc:15016 Change-Id: I909a3f83a4ef53562894549ade0a870b208cec7e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/298443 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Evan Shrubsole <eshr@google.com> Cr-Commit-Position: refs/heads/main@{#39651}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.