41889 Commits

Author SHA1 Message Date
Sergio Garcia Murillo
02f375da42 Check arrayview is not empty before accessing it
Bug: webrtc:353764813
No-Try: True
Change-Id: I873f115c13e23d827f3967bc505da4b9d1a70753
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357580
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42657}
2024-07-22 07:58:22 +00:00
Mirko Bonadei
4bded9601b Remove iOS Debug (simulator) from LKGR bots.
Temporarily skip while the bot gets fixed.

Bug: chromium:353975341
Change-Id: Ib42c18e929547c7abc58f2878c79f00f87001cae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357540
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42656}
2024-07-19 17:01:11 +00:00
Sergey Silkin
1a33aa4a8e Override stream settings in a separate function
Bug: webrtc:351644568, b/352504711
Change-Id: I706d5a85b83603613693f63c5d3faa9946e90afc
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357440
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42655}
2024-07-19 13:59:27 +00:00
Sergey Silkin
5fe85d23a2 Reland "Pass true stream resolutions to GetSimulcastConfig()"
This is a reland of commit 09f03be54804e81f626c26e8fde8c86cc952545f

Use max_num_layers instead of encoder_config.number_of_streams when calculation stream resolutions in EncoderStreamFactory::GetStreamResolutions().

Original change's description:
> 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}

Bug: webrtc:351644568, b/352504711
Change-Id: Ib3fd859257b61c2a5d695b8b8f45c95495117c0e
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357520
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42654}
2024-07-19 13:12:59 +00:00
Sergey Silkin
ede05c35e4 Revert "Pass true stream resolutions to GetSimulcastConfig()"
This reverts commit 09f03be54804e81f626c26e8fde8c86cc952545f.

Reason for revert: breaks downstream projects

Original change's description:
> 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}

Bug: webrtc:351644568, b/352504711
Change-Id: I7aadbe49419b7ac610db4db99284fdcdce9deff5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357500
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42653}
2024-07-19 09:46:34 +00:00
Philipp Hancke
3753c8190e h264: fix first_packet_in_frame logic for multislice in a single rtp packet
a frame must be (or should be) first when it contains either SPS (but not just PPS),
is an IDR or is a slice with first_mb_in_slice == 0.

Fixes an edge case where a STAP-A with SPS, PPS and multiple slices of an IDR fit
into a single RTP packet which can happen with small 320x196 frames

BUG=webrtc:352379280,webrtc:346608838

Change-Id: Ic6dea6c81db759d0d7ddd4054407103fd791f6c5
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357121
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42652}
2024-07-19 08:49:24 +00:00
Sergey Silkin
09f03be548 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}
2024-07-19 08:47:09 +00:00
Sergio Garcia Murillo
45e5e385f3 Use ArrayView on H264 bitstream parsing
No-Try: true
Bug: webrtc:42225170
Change-Id: I4682f400054fee5c86ea24bebf6d703fb90074da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/354722
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42650}
2024-07-19 08:16:11 +00:00
Sergey Silkin
b27ac6bc83 Set min bitrate equal to kDefaultMinVideoBitrateBps
If experimental min bitrate value is not configured, set the min bitrate for the first simulcast stream equal to kDefaultMinVideoBitrateBps (=30kbps).

Min bitrate depends on resolution. At absence of the experimental min bitrate override, we got high min bitrate values for high resolutions (600kbps for VP8 720p, for example) before. That led to encode pauses [1] which is an undesired behavior.

[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/modules/video_coding/utility/simulcast_rate_allocator.cc;l=173;drc=f317f7106a7a15a04da7cd30c2e2ddb1b3025bc6

Bug: webrtc:351644568, b/352504711
Change-Id: Ifc93cc230fb194d2c9a739368d415f24385939fd
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357420
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42649}
2024-07-19 06:54:36 +00:00
Sergey Silkin
4dedf5efae Use EncoderStreamFactory::CreateEncoderStreams() instead of GetSimulcastConfig()
In preparation for upcoming changes in GetSimulcastConfig(), which will require a vector of stream resolutions instead of just the max resolution as an input, switch tests to use CreateEncoderStreams() instead of calling GetSimulcastConfig() directly.

Bug: webrtc:351644568, b/352504711
Change-Id: I541dd54a21a8b75028cff07a250f858a47898223
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357400
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42648}
2024-07-18 16:35:10 +00:00
Mirko Bonadei
83671efdb9 Revert "Add a dependancy on //third_party/jni_zero:jni_zero_java"
This reverts commit 5ccec98826adc84bdb4c8177580a6f23074d8058.

Reason for revert: Breaks downstream project.

Original change's description:
> Add a dependancy on //third_party/jni_zero:jni_zero_java
>
> JniZero's native side expects JniZero's java side to exist, add a
> dependancy on //third_party/jni_zero:jni_zero_java from
> sdk/android:base_java.
>
> Bug: webrtc:353174456
> Change-Id: I9240eab3da78efd394e4ee581cf71fd41976eb48
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357200
> Commit-Queue: Mohamed Heikal <mheikal@google.com>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Auto-Submit: Mohamed Heikal <mheikal@google.com>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42639}

Bug: webrtc:353174456
Change-Id: I58bdb9e1797f6d2f716225abc5c337cd90290159
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357460
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Mohamed Heikal <mheikal@google.com>
Cr-Commit-Position: refs/heads/main@{#42647}
2024-07-18 15:27:33 +00:00
Sergey Silkin
9e1460f9a3 Parameterize "scale resolution down by" tests
Merge GetAndSetRtpSendParametersScaleResolutionDownByVP8, GetAndSetRtpSendParametersScaleResolutionDownByVP8WithOddResolution, GetAndSetRtpSendParametersScaleResolutionDownByH264 and GetAndSetRtpSendParametersScaleResolutionDownByH264WithOddResolution into one parameterized test.

PS. Not sure why we need separate tests for VP8 and H264. Underlaying code paths are codec agnostic as I can see.

Bug: webrtc:351644568, b/352504711
Change-Id: Ic95c59c1bfacdba8a42de8ecca9cab42014842e9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357360
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42646}
2024-07-17 12:33:01 +00:00
Danil Chapovalov
faf5b0308c Delete forwarding rtp_rtcp/time_util.h as unused
All known users are updated to use ntp_time_util.h directly

Bug: webrtc:343076000
Change-Id: I7229b9e5dd72d83bfd98ba4050ae7583d792575b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357300
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42645}
2024-07-17 08:53:00 +00:00
Sergey Silkin
1b78a7eb3f Remove dependency on WebRTC-LowresSimulcastBitrateInterpolation
Dependency on WebRTC-LowresSimulcastBitrateInterpolation field trial in LimitSimulcastLayerCount() is unnecessary.

Bug: webrtc:351644568, b/352504711
Change-Id: I9daf9cbfb5b6a582cd9f03ce1a86e5bbd2b2bfd4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357260
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42644}
2024-07-17 07:51:33 +00:00
Philipp Hancke
bdfe6ae801 video_replay: ignore non-rtp packets
which cause log spam otherwise, in particular RTCP packets

BUG=None

Change-Id: I73c2b17afb4f69102e25eb360699ea7d93bb8175
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356100
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42643}
2024-07-16 16:24:04 +00:00
Johannes Kron
f6a804826c Add QualityConvergenceController to VideoStreamEncoder
QualityConvergenceController is a layer between VideoStreamEncoder
and QualityConvergenceMonitor that takes care of the simulcast
logic.

Bug: chromium:328598314
Change-Id: Iad8a9d9138e69a60fd508a7ef038220947888f0a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356420
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42642}
2024-07-16 10:20:27 +00:00
Bjorn Terelius
1766a3dbce Treat negative SCTP message size limit as maximal (only bounded by buffer size)
Bug: webrtc:350362794
Change-Id: Ie80e89a1359fbe7229452e59715b66e951a2592b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357240
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42641}
2024-07-16 09:21:06 +00:00
webrtc-version-updater
1869616223 Update WebRTC code version (2024-07-16T04:07:40).
Bug: None
Change-Id: Ida79ed1533dcd696d10ba4624603140a6c02d20e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357220
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#42640}
2024-07-16 06:18:54 +00:00
Mohamed
5ccec98826 Add a dependancy on //third_party/jni_zero:jni_zero_java
JniZero's native side expects JniZero's java side to exist, add a
dependancy on //third_party/jni_zero:jni_zero_java from
sdk/android:base_java.

Bug: webrtc:353174456
Change-Id: I9240eab3da78efd394e4ee581cf71fd41976eb48
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357200
Commit-Queue: Mohamed Heikal <mheikal@google.com>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Mohamed Heikal <mheikal@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42639}
2024-07-15 20:08:47 +00:00
Danil Chapovalov
1bb68532dd Remove legacy implementation of AudioEncoderFactory::MakeAudioEncoder in a pc test
All calls in code under test were migrated to AudioEncoderFactory::Create and thus there is no longer need to propagate older function.

Bug: webrtc:343086059
Change-Id: I9e0ea4024759deb22c0d284e0e4bac7322a08f62
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357181
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42638}
2024-07-15 11:31:18 +00:00
Sergey Silkin
ea615affcc Remove WebRTC-VP8ConferenceTemporalLayers field trial
WebRTC-VP8ConferenceTemporalLayers experiment is restricted to <= M126. Number of temporal layers is controlled via scalaiblity mode now.

Bug: webrtc:351644568, b/352504711,  chromium:40097057, b/140159553
Change-Id: I025f8f64e8d5144cf54fe8bf26e8b99daae6e079
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357104
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42637}
2024-07-15 10:26:18 +00:00
Sergey Silkin
c14e2cc4ca Set is_highest_layer_max_bitrate_configured outside of loop
Bug: webrtc:351644568, b/352504711
Change-Id: Ia1798e35adf8b34357103ae3aba8ab16499a458f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357081
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42636}
2024-07-15 10:25:14 +00:00
Sergey Silkin
108c94b1d4 Do not expose GetNormalSimulcastLayers and GetScreenshareLayers
This is a cleanup of simulcast.cc. Remove GetNormalSimulcastLayers and GetScreenshareLayers from simulcast.h. Move the implementations to anonymous namespace in simulcast.cc.

Bug: webrtc:351644568, b/352504711
Change-Id: Iff03161e5c44cb0e7faa60b16cfc2fc9b903d5ce
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357103
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42635}
2024-07-15 10:24:12 +00:00
Sergey Silkin
3f9589ae64 Remove max_qp argument from GetSimulcastConfig()
This is a cleanup of simulcast.cc. max_qp is not needed to decide simulcast config. Move setting of max QP in VideoStream one level up, to EncoderStreamFactory::CreateEncoderStreams(), where it can be set per stream.

Bug: webrtc:351644568, b/352504711
Change-Id: Ia0e3e9d90032383574dc8867b30d362e9c5df7e8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357102
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42634}
2024-07-15 10:23:10 +00:00
Sergey Silkin
55d328dc25 Add ssilkin@webrtc to OWNERS in video/
Bug: none
Change-Id: Ie5b5e339634c07d260cc3e10312f97aad63fa552
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357180
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42633}
2024-07-15 09:11:54 +00:00
webrtc-version-updater
cfac4fb9f6 Update WebRTC code version (2024-07-14T04:04:54).
Bug: None
Change-Id: I5709605b18dd318ebbbfa3814f4e6a826e501384
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357140
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#42632}
2024-07-14 06:16:48 +00:00
webrtc-version-updater
83e34e3fea Update WebRTC code version (2024-07-13T04:03:04).
Bug: None
Change-Id: I0f2655cf1885cba50a112273ffa2f796d0cef9a6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357120
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#42631}
2024-07-13 06:03:47 +00:00
Sergey Silkin
e9810a8adb Use GetTemporalLayerSum
Bug: b/337757868
Change-Id: Ieff4c22425bab06c12419d64db7a2eef69cc54d6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355962
Auto-Submit: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42630}
2024-07-12 15:25:28 +00:00
Sergey Silkin
c0a32fe01b Remove bitrate_priority argument from GetSimulcastConfig()
This is a cleanup of simulcast.cc. bitrate_priority is not needed to decide simulcast config. Move setting of bitrate priority in VideoStream one level up, to EncoderStreamFactory::CreateEncoderStreams().

Bug: webrtc:351644568
Change-Id: I002d728ccf8d141fe4bbb32b390129ce57c830cd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357101
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42629}
2024-07-12 15:02:59 +00:00
Danil Chapovalov
cd8b36bb9f Fix integer underflow in H264 bitstream parser
num_ref are represented using golomb and may be very large.
BitstreamReader is generally resilent to many consenquites fail reads, but not when number of reads comparable to int limit.
This change address the issue in two ways, either one is enough, but both are helpful in their own way:

H264 parser now fails faster when number of references is too large.
BitstreamReader now is resilent to unlimited number of fail reads.

Bug: chromium:352402499
Change-Id: I19646bc3f53cd2970393d00bc143400b1fdf5473
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357100
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42628}
2024-07-12 15:01:55 +00:00
Jeremy Leconte
4643fb7e01 Revert "Reland "Remove jni_zero type aliases in jni_generator_helper.h.""
This reverts commit 4f3d660f4f28a1dcdb577ab89d57830083ac883a.

Reason for revert: downstream still broken

Original change's description:
> Reland "Remove jni_zero type aliases in jni_generator_helper.h."
>
> This is a reland of commit 9fcaa034bc032da9de5d6fcdd45528169f44d343
>
> Original change's description:
> > Remove jni_zero type aliases in jni_generator_helper.h.
> >
> > This CL removes some type alias from
> > sdk/android/src/jni/jni_generator_helper.h and make sure all the
> > jni_zero types are referred to using the jni_zero:: namespace.
> >
> > The goal is to remove sdk/android/src/jni/jni_generator_helper.h
> > in future CLs.
> >
> > Bug: b/319078685, b/351773023
> > Change-Id: Ief60fce3e8f301f09ac5392d143aa5a82a445bcb
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356882
> > Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
> > Reviewed-by: Jeremy Leconte <jleconte@google.com>
> > Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#42618}
>
> Bug: b/319078685, b/351773023
> Change-Id: I604b0842d220d76c36b73d2d49bcefe0ee7ae14f
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356903
> Commit-Queue: Jeremy Leconte <jleconte@google.com>
> Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42626}

Bug: b/319078685, b/351773023
Change-Id: I9429789e44c82735305b2d0d90cbaa4891d79622
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357041
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Owners-Override: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#42627}
2024-07-12 08:36:45 +00:00
Mirko Bonadei
4f3d660f4f Reland "Remove jni_zero type aliases in jni_generator_helper.h."
This is a reland of commit 9fcaa034bc032da9de5d6fcdd45528169f44d343

Original change's description:
> Remove jni_zero type aliases in jni_generator_helper.h.
>
> This CL removes some type alias from
> sdk/android/src/jni/jni_generator_helper.h and make sure all the
> jni_zero types are referred to using the jni_zero:: namespace.
>
> The goal is to remove sdk/android/src/jni/jni_generator_helper.h
> in future CLs.
>
> Bug: b/319078685, b/351773023
> Change-Id: Ief60fce3e8f301f09ac5392d143aa5a82a445bcb
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356882
> Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
> Reviewed-by: Jeremy Leconte <jleconte@google.com>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42618}

Bug: b/319078685, b/351773023
Change-Id: I604b0842d220d76c36b73d2d49bcefe0ee7ae14f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356903
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42626}
2024-07-12 08:07:37 +00:00
Sergey Silkin
3d20dce85f Delete unused YUV files
Bug: none
Change-Id: I2b7794d76be0461271218a55f25021a065a318bc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357000
Auto-Submit: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42625}
2024-07-11 20:26:16 +00:00
Lambros Lambrou
c2f0260894 Restrict ScreenCaptureKit capturer to macOS 14+.
ScreenCapturerSCK uses some fields that were not available in macOS 13
but the code compiles with the older SDK because of missing annotations
that were added in the macOS 15 SDK.

Bug: chromium:351843815
Change-Id: Ic1a89b4cab43d6ee81d447ccc33ef94439752c45
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356860
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Lambros Lambrou <lambroslambrou@chromium.org>
Cr-Commit-Position: refs/heads/main@{#42624}
2024-07-11 17:04:11 +00:00
Sergey Silkin
be2f8f6ec8 Reduce number of InterpolateSimulcastFormat calls
Call it once instead of 3 times.

Also remove FindSimulcastMaxBitrate, FindSimulcastTargetBitrate, FindSimulcastMinBitrate and a one parameter less version of InterpolateSimulcastFormat.

Bug: b/337757868, webrtc:351644568
Change-Id: I7b4002fc3134c47f368bb833925c959a07ce5177
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356980
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42623}
2024-07-11 14:34:18 +00:00
Danil Chapovalov
954e72b654 Update MockAudioEncoderFactory to override Create instead of MakeAudioEncoder
MakeAudioEncoder planned to be removed, and Create planned to become pure virtual

While at it, cleanup nearby mock usage:
Remove ON_CALL that by default return default constructed result
Remove EXPECT_CALL().Times(AnyNumber()) for a NiceMock
Remove parameters in EXPECT_CALL when all are wildcard
Remove redundant get to deference a smart pointer

Bug: webrtc:343086059
Change-Id: Ica90a4980350cb82bcebd11df6c63a01b828bb9d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356884
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42622}
2024-07-11 13:15:01 +00:00
webrtc-version-updater
7fac89f3f9 Update WebRTC code version (2024-07-11T04:05:56).
Bug: None
Change-Id: Icba831622f7cb10cab9dde73e45e9a5d18035be2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356960
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#42621}
2024-07-11 06:07:00 +00:00
Sergey Silkin
f7a1506703 Adjust max consecutive drops depending on target frame rate
Current thresholds were tuned to guarantee no buffer overshoot in an extreme scenario (encoding a high complexity video in a low bitrate).

Bug: b/337757868, webrtc:351644568
Change-Id: I832b2564af6f18f06550338cc9b3618f8acdf831
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356580
Reviewed-by: Dan Tan <dwtan@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42620}
2024-07-10 17:16:18 +00:00
Mirko Bonadei
756f58963f Revert "Remove jni_zero type aliases in jni_generator_helper.h."
This reverts commit 9fcaa034bc032da9de5d6fcdd45528169f44d343.

Reason for revert: Breaks downstream project.

Original change's description:
> Remove jni_zero type aliases in jni_generator_helper.h.
>
> This CL removes some type alias from
> sdk/android/src/jni/jni_generator_helper.h and make sure all the
> jni_zero types are referred to using the jni_zero:: namespace.
>
> The goal is to remove sdk/android/src/jni/jni_generator_helper.h
> in future CLs.
>
> Bug: b/319078685, b/351773023
> Change-Id: Ief60fce3e8f301f09ac5392d143aa5a82a445bcb
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356882
> Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
> Reviewed-by: Jeremy Leconte <jleconte@google.com>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42618}

Bug: b/319078685, b/351773023
Change-Id: I003acf68e2b84bd0a5cda7c7180a28bcd3ca3772
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356902
Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#42619}
2024-07-10 11:09:17 +00:00
Mirko Bonadei
9fcaa034bc Remove jni_zero type aliases in jni_generator_helper.h.
This CL removes some type alias from
sdk/android/src/jni/jni_generator_helper.h and make sure all the
jni_zero types are referred to using the jni_zero:: namespace.

The goal is to remove sdk/android/src/jni/jni_generator_helper.h
in future CLs.

Bug: b/319078685, b/351773023
Change-Id: Ief60fce3e8f301f09ac5392d143aa5a82a445bcb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356882
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42618}
2024-07-10 10:42:28 +00:00
Ranveer Aggarwal
76960dfdb6 Replace instead of queueing render updates.
Bug: webrtc:351858995
Change-Id: I6c07d71afeae886ff6a20509bca5b5c65f131e41
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356800
Reviewed-by: Fabian Bergmark <fabianbergmark@google.com>
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Commit-Queue: Ranveer Aggarwal‎ <ranvr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42617}
2024-07-10 07:44:47 +00:00
Sergey Silkin
5d24544378 Fix keyframe flag
remove +1 offset.

Bug: webrtc:42225151
Change-Id: Ib735fddfd82f0ae9cfb433648950d936647614a9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356820
Commit-Queue: Erik Språng <sprang@webrtc.org>
Auto-Submit: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42616}
2024-07-10 06:51:47 +00:00
Mirko Bonadei
9ebf0921ea Remove RTC_JNI_GENERATOR_LEGACY_SYMBOLS.
Bug: b/325408567
Change-Id: I4bd5fbe7cecdfd3fcce8da352ce30eeb0f5b6dd7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356780
Reviewed-by: Zoé Lepaul <xalep@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#42615}
2024-07-10 06:47:39 +00:00
webrtc-version-updater
01cba58478 Update WebRTC code version (2024-07-10T04:07:14).
Bug: None
Change-Id: I8a07b46ad4193d61f28ad27341a7083a44ec71cb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356761
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#42614}
2024-07-10 06:12:44 +00:00
Johannes Kron
38e3466837 Remove deprecated function FillTimingInfo()
The function has been deprecated in favor of
FrameEncodeMetadataWriter::FillMetadataAndTimingInfo().

Bug: chromium:328598314
Change-Id: Iaf2008e855dbd71f2d7cf412d95c5932b3645d71
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356042
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42613}
2024-07-09 23:23:55 +00:00
Hirokazu Honda
44a7550acc SimulcastEncoderAdapter: Add sequence checks for encoder contexts lifetime
This CL adds the sequence checks to the functions that creates or
destroys the encoder context. Those functions must be executed on
the webrtc encoder sequence.

Bug: b/320555128
Change-Id: I1daa93f2f5326073e8d75e1d711d7554bed76a62
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356460
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Hirokazu Honda <hiroh@google.com>
Cr-Commit-Position: refs/heads/main@{#42612}
2024-07-09 13:58:54 +00:00
Tommi
06af5b5c64 More use of DeinterleavedView and MonoView in audio classes
Adopt DeinterleavedView and MonoView in the following classes
and deprecate existing versions where external dependencies exist:

* GainApplier
* AdaptiveDigitalGainController
* NoiseLevelEstimator
* VoiceActivityDetectorWrapper (including MonoVad)

Bug: chromium:335805780
Change-Id: I15dad833a87d31476d147dd2456bd1cc39f901ed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355861
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42611}
2024-07-09 13:29:37 +00:00
Tommi
187a4363c0 Remove more sstream deps
Bug: webrtc:8982
Change-Id: I7e1e2a8515b84567d6fe8127ff0e2806a2a4714a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356400
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42610}
2024-07-09 10:30:26 +00:00
Jan Grulich
b1ebcfbfd6 PipeWire camera: support additional formats and fix RGB/BGR mapping
Similar to BGRA/RGBA we added recently, formats from PipeWire are in
big-endian, while WebRTC (using libyuv) is little-endian, therefore we
have to map BGR to RGB and not RGB to RGB as colors would be off. Also
add some additional formats supported by libyuv.

Bug: webrtc:42225999
Change-Id: Iee8303f0922fe434069b2b3f88994abecf7d2cc5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355860
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Jan Grulich <grulja@gmail.com>
Cr-Commit-Position: refs/heads/main@{#42609}
2024-07-09 09:58:37 +00:00
Sergey Silkin
3172d16ea0 Clean up EncoderStreamFactory
* Simplified ctor. Get settings (max_qp, content_type, etc) from encoder_config passed to CreateEncoderStreams().

* Some tests assigned VideoEncoderConfig::video_stream_factory to EncoderStreamFactory they created. That's not really needed. VideoStreamEncoder creates the factory if video_stream_factory is not provided [1]. Removed video_stream_factory initialization in tests.

[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/video/video_stream_encoder.cc;l=1002;drc=1d7d0e6e2c5002815853be251ce43fe88779ac85

Bug: b/347150850, webrtc:42233936
Change-Id: Ie0322abb6c48e1a9bd10e9ed3879e3ed484fea5d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355321
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42608}
2024-07-09 09:47:55 +00:00