commit | 09f03be54804e81f626c26e8fde8c86cc952545f | [log] [tgz] |
---|---|---|
author | Sergey Silkin <ssilkin@webrtc.org> | Thu Jul 18 16:20:28 2024 |
committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri Jul 19 08:47:09 2024 |
tree | 7ffe5039bec98c6d3aebfe53f2429b698e545d18 | |
parent | 45e5e385f39715e6bee778ea9a7bc3b9abb4c67a [diff] |
Pass true stream resolutions to GetSimulcastConfig() Before this change GetSimulcastConfig() received only maximum resolution as an input parameter and derived resolutions for low quality simulcast streams assuming 1/2 scaling factor [1]. These days applications can configure resolution scaling factors via RtpEncodingParameters. If the configured resolution scaling factors were different from 1/2 then we got wrong bitrate limits from GetSimulcastConfig(). Now resolutions are calculated using scaling factor from RtpEncodingParameters (or default 1/2) for all streams in EncoderStreamFactory::CreateEncoderStreams() and then passed to GetSimulcastConfig(). Moved tests from simulcast_unittest.cc to encoder_stream_factory_unittest.cc. Mapping of old to new tests: * GetConfigWithLimitedMaxLayersForResolution -> ReducesStreamCountWhenResolutionIsLow * GetConfigWithLowResolutionScreenshare -> ReducesLegacyScreencastStreamCountWhenResolutionIsLow * GetConfigWithNotLimitedMaxLayersForResolution -> KeepsStreamCountUnchangedWhenLegacyLimitIsDisabled * GetConfigWithNormalizedResolution -> AdjustsResolutionWhenUnaligned * GetConfigWithNormalizedResolutionDivisibleBy4 -> MakesResolutionDivisibleBy4 * GetConfigWithNormalizedResolutionDivisibleBy8 -> not needed (MakesResolutionDivisibleBy4 should be enough). * GetConfigForLegacyLayerLimit -> KeepsStreamCountUnchangedWhenResolutionIsHigh and ReducesStreamCountWhenResolutionIsLow * GetConfigForLegacyLayerLimitWithRequiredHD -> KeepsStreamCountUnchangedWhenLegacyLimitIsDisabled [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/video/config/simulcast.cc;l=297-298;drc=1b78a7eb3f418460da03672b1d1af1d9488bb544 Bug: webrtc:351644568, b/352504711 Change-Id: I0028904ab0bb1e27b9c1b7cd3fb9a8ccf447fa35 No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357280 Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42651}
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.