commit | b90cd919831112f95c5997782f6a88152a98dfc5 | [log] [tgz] |
---|---|---|
author | Henrik Boström <hbos@webrtc.org> | Thu Jul 27 11:48:18 2023 |
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Jul 27 13:30:52 2023 |
tree | b0475f2295859db42844d55c114cd528bce69d3a | |
parent | 6143ec939a32af5f1cd1d7210e781b2b54f379e7 [diff] |
Fix first encoding's maxBitrate being ignored when scalability is set. EncoderStreamFactory has two code paths for creating a stream: the "simulcast path" and the "default path". Only the former cares about encoding paramter's maxBitrate. The latter assumes that `encoder_config.max_bitrate_bps` already encompasses the maxBitrate of the first encoding, but this is not always the case. As of M113, when scalability mode is specified, {active,inactive} does not count as simulcast stream but as a default stream represented by encoding[0]. The problem is that `encoder_config.max_bitrate_bps` only includes `encodings[0].max_bitrate_bps` when `encodings.size() == 1` which isn't the case here. This CL fixes the problem by making the "create default stream" code path look at the first encoding's maxBitrate and remove existing assumptions that `encoder_config.max_bitrate_bps` encompasses `encodings[0].max_bitrate_bps`. This is a step in the right direction since we're trying to remove all special cases and have encodings map 1:1 with SSRCs, so the "max bps of entire stream" should indeed be a separate limit than the per-encoding limits and it was confusing that sometimes it included and sometimes it excluded encoding[0]'s limit. This issue did not happen in {inactive,active} since that code path counts as "simulcast stream", so "default stream" is only ever applicable for index 0. TESTED=Simulcast Playground, see https://crbug.com/1455962. Bug: chromium:1455962 Change-Id: I7c44925b780623b5979751e8959e972293648a3d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/313282 Commit-Queue: Henrik Boström <hbos@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40482}
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.