1282 Commits

Author SHA1 Message Date
Henrik Boström
e8c97c0d09 Reland "Rename requested_resolution to scale_resolution_down_to."
This is a reland of commit 82617ac51e7825db53451818f4d1ad52b69761fd

The reason for the revert was a downstream use of
`rtc::VideoSinkWants::requested_resolution`, so in this reland we don't
rename this field, it's fine just to rename the one in
RtpEncodingParameters for now.

Original change's description:
> Rename `requested_resolution` to `scale_resolution_down_to`.
>
> This is a pure refactor/rename CL without any changes in behavior.
>
> This field is called scaleResolutionDownTo in the spec and JavaScript.
> Let's make C++ match to avoid confusion.
>
> In order not to break downstream during the transition a variable with
> the old name being a pure reference to the renamed attribute is added.
> This means we have to add custom constructors, but we can change this
> back to "= default" when the transition is completed, which should only
> be a couple of CLs away.
>
> Bug: webrtc:375048799
> Change-Id: If755102ccd79d46020ce5b33acd3dfcc29799e47
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366560
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#43300}

NOTRY=True

Bug: webrtc:375048799
Change-Id: Ic4ee156c1d50aa36070a8d84059870791dcbbe5e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366660
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43304}
2024-10-25 08:39:49 +00:00
Florent Castelli
af44d8ff06 Revert "Rename requested_resolution to scale_resolution_down_to."
This reverts commit 82617ac51e7825db53451818f4d1ad52b69761fd.

Reason for revert: Break downstream projects

Original change's description:
> Rename `requested_resolution` to `scale_resolution_down_to`.
>
> This is a pure refactor/rename CL without any changes in behavior.
>
> This field is called scaleResolutionDownTo in the spec and JavaScript.
> Let's make C++ match to avoid confusion.
>
> In order not to break downstream during the transition a variable with
> the old name being a pure reference to the renamed attribute is added.
> This means we have to add custom constructors, but we can change this
> back to "= default" when the transition is completed, which should only
> be a couple of CLs away.
>
> Bug: webrtc:375048799
> Change-Id: If755102ccd79d46020ce5b33acd3dfcc29799e47
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366560
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#43300}

Bug: webrtc:375048799
Change-Id: Ie41723a39420e12e7b5b681d3d00ccd14f66b4b1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366642
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#43301}
2024-10-24 14:51:29 +00:00
Henrik Boström
82617ac51e Rename requested_resolution to scale_resolution_down_to.
This is a pure refactor/rename CL without any changes in behavior.

This field is called scaleResolutionDownTo in the spec and JavaScript.
Let's make C++ match to avoid confusion.

In order not to break downstream during the transition a variable with
the old name being a pure reference to the renamed attribute is added.
This means we have to add custom constructors, but we can change this
back to "= default" when the transition is completed, which should only
be a couple of CLs away.

Bug: webrtc:375048799
Change-Id: If755102ccd79d46020ce5b33acd3dfcc29799e47
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366560
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43300}
2024-10-24 11:38:21 +00:00
Harald Alvestrand
b7abaee819 Revert "Use Payload Type suggester for all codec merging"
This reverts commit 0bac2aae596771db020f01a57fee4828081fbc38.

Reason for revert: Suspected breakages downstream

Original change's description:
> Use Payload Type suggester for all codec merging
>
> Bug: webrtc:360058654
> Change-Id: Id475762253c427c1800c2352a60fc0121c2dc388
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364783
> Reviewed-by: Florent Castelli <orphis@webrtc.org>
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#43267}

Bug: webrtc:360058654, b/375132036
Change-Id: Ieda626270193e7e6c93903b3c03a691b2bf0c1e2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366540
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43290}
2024-10-23 11:37:18 +00:00
Åsa Persson
929c02a479 Add IsSameRtpCodec method to Codec.
This is similar to MatchesRtpCodec but not an exact match of parameters, unspecified parameters are treated as default. Use IsSameRtpCodec for comparison when codec is configured via encodings.

Bug: b:299588022
Change-Id: I0ea800e50af6f5666e3e867a928e15b0aa044635
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365142
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43272}
2024-10-21 11:25:24 +00:00
Harald Alvestrand
0bac2aae59 Use Payload Type suggester for all codec merging
Bug: webrtc:360058654
Change-Id: Id475762253c427c1800c2352a60fc0121c2dc388
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364783
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43267}
2024-10-18 16:58:42 +00:00
Olov Brändström
558c2dc539 Change timestamps type from int64 to Timestamp in MediaReceiverInfo.
We should use the Timestamp type, rather then int64, to store timestamps. In https://webrtc-review.googlesource.com/c/src/+/365001/ an additional int64 timestamp was added (last_sender_report_timestamp_ms).

This CL fixes the new timestamp, as well as other similar timestamps in MediaReceiverInfo (last_sender_report_utc_timestamp_ms and last_sender_report_remote_utc_timestamp_ms).

Bug: webrtc:372393493
Change-Id: I0e473730e85a69ec595b421e2c3db920364008eb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365641
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Olov Brändström <brandstrom@google.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43248}
2024-10-16 11:02:37 +00:00
Emil Vardar
183a522bdc Enable corruption detection when the encrypted extension is present
Credit: https://webrtc-review.googlesource.com/c/src/+/365584 with ASAN issue solved.

Bug: webrtc:358039777
Change-Id: If609d9dfe5de3d53970490a87cd71bbc884e680b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365680
Commit-Queue: Emil Vardar (xWF) <vardar@google.com>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43244}
2024-10-16 07:12:12 +00:00
Patrick Reynolds
36e5979951 Work around stdc++ bug with clang
std::optional<T>::emplace() without a value is broken
on clang++ with gnu libstdc++. this workarounds the bug
by using the assignment operator instead.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101227

Bug: None
Change-Id: I6fd096ff4d632259e6eab776e318c1d7b15e4bd5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365400
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43229}
2024-10-14 07:16:36 +00:00
Olov Brändström
51b682648e Add an environment clock timestamp to SenderReportStats.
Add an environment clock timestamp to SenderReportStats and make it visible in rtc_stats_collector.cc. This make it possible to use the pc->GetConfiguration().stats_timestamp_with_environment_clock() flag to decide which timestamp to use when creating a RTCRemoteOutboundRtpStreamStats object.

This CL is the third (and possible the last) of a series of CLs that aim to replace the UTC timestamps in RTCStats objects to Environment clock timestamps. The other CLs where https://webrtc-review.googlesource.com/c/src/+/363946 and https://webrtc-review.googlesource.com/c/src/+/364782.

When Chromium and Google internal uses of RTCStats are updated to set the stats_timestamp_with_environment_clock configuration, the flag can be deleted.

Bug: chromium:369369568
Change-Id: Ic0b07d7b012505267bd6516f19a9ba90df4cafab
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365001
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Olov Brändström <brandstrom@google.com>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43206}
2024-10-09 12:59:08 +00:00
Olov Brändström
b9c4c242d4 rename timestamps to show epoch
I missed one timestamp in https://webrtc-review.googlesource.com/c/src/+/363946, meaning that the config flag that was added do not yet work for all timestamps in RTCStats objects. The RTCRemoteOutboundRtpStreamStats still has UTC timestamps even if the config flag is set.

I will solve this by saving both an UTC (existing) and env (to be added) timestamp, and then let rtc_stats_collector choose timestamp based on the value of the config flag (just like RTCRemoteInboundRtpStreamStats is done in the 363946 commit).

Before adding the new env_ timestamp I want to make this change. I rename the existing timestamp to show what epoch it uses (NTP or UTC). This will later make it clear which timestamp is which.

So this CL will make no logical change, just renaming members.

I only need to rename the last_sender_report_timestamp_ms, but opted to rename the remote timestamp as well, to be consistent with the naming convention I add in this CL.

Bug: chromium:369369568
Change-Id: Icfe7cf274995b39799e1478a1bb8cdf5134f0b16
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364782
Commit-Queue: Olov Brändström <brandstrom@google.com>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43194}
2024-10-08 16:27:58 +00:00
Shigemasa Watanabe
c42162cacb Add multiple codec settings to RtpConfig for Mixed-codec simulcast.
I have implemented that adds multiple codec settings to RtpConfig and
passes them down to the lower layers from WebRtcVideoSendChannel.

Bug: webrtc:362277533
Change-Id: I088d6583f7dcbd4de5deb1e9e08c80a6dc10494f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364440
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43166}
2024-10-03 14:05:52 +00:00
Olov Brändström
4baeed3b97 Use environment monotonic timestamps (i.e. not UTC) in RTCStats.
Add media config for using environment monotonic timestamps (i.e. not UTC) in RTCStats constructor, and implemented the usage of the flag.

Bug: chromium:369369568
Change-Id: Ia93d048742c28af201164fe7b2152b791bb6d0b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363946
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Olov Brändström <brandstrom@google.com>
Cr-Commit-Position: refs/heads/main@{#43156}
2024-10-03 09:07:17 +00:00
Harald Alvestrand
b3ac753f26 Iteratively fix unit tests to work with late assignment.
A number of unit tests assume that payload types will be assigned
without generating an offer. These are flushed out by running tests
with the --force_fieldtrials=WebRTC-PayloadTypesInTransport argument.

Bug: webrtc:360058654
Change-Id: I17cd5bfa275904a9630068190b1cd246e9ce8741
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362500
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43127}
2024-10-01 13:22:40 +00:00
Fanny Linderborg
a61a25a0b1 Correct format for TODO comments
Bug: webrtc:358039777
Change-Id: Iad5f8867bcbca883b16617819ea24a965160d23e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363802
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Fanny Linderborg <linderborg@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43089}
2024-09-27 07:17:40 +00:00
Qiu Jianlin
6f90609fca Compare only profile & tier when matching HEVC codec.
Level asymmetry is implicitly enabled for HEVC. When comparing two
codec params to see if they match, we only compare profile & tier,
similar as H.264.

Bug: chromium:41480904
Change-Id: I9e9debdf1b34f33986da9344b9fee14071b1ed60
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363205
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Jianlin Qiu <jianlin.qiu@intel.com>
Cr-Commit-Position: refs/heads/main@{#43069}
2024-09-23 14:27:10 +00:00
Harald Alvestrand
e2952a058e Eliminate a pointless IsEnabled helper
Makes code easier to read.

Bug: None
Change-Id: I736f1a152101264184c3d7b1c7a72d1a3b022147
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362962
Reviewed-by: Emil Lundmark <lndmrk@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43051}
2024-09-19 13:38:35 +00:00
Taylor Brandstetter
bbea923c9f Removed unused absl::InlinedVector.
Bug: None
Change-Id: I4db7391b70297272cd107a1090e87d5328bced4d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362528
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43039}
2024-09-17 17:49:50 +00:00
Henrik Boström
2b5f7cb4b3 Adjust requested_resolution to match frame's aspect ratio.
This API should not modify the aspect ratio of the frame, e.g. if the
frame is 1280x720 and requested_resolution is 1280x360, the result
should be 640x360, not a streched out 1280x360 frame. The spec version
of this API calls this "maxWidth" and "maxHeight" which is the right
way to think about it rather than a forced width and height.

VideoAdapter continues to be used to apply adaptation restrictions, but
we now make sure to calculate the correct frame size BEFORE applying
restrictions. Prior to this CL, the VideoAdapter was also used to apply
requested_resolution restrictions. This is actually wrong and would
cause strange scaling factors in some cases, e.g. f=1280x720 + r=720x405
would result in 640x360 instead of 720x405. Now we make f=720x405 first
and only adjust further if restrictions or alignments require us to.

Since this is a change in behavior a WebRtcVideoChannelTest is updated.
Encodings integration test is also added, both for aspect ratio (new
behavior) and orientation agnosticism (old behavior still passing).

Bug: webrtc:366067962
Change-Id: I4e8dc27da5a84d73238b8ab74ef197eb5ee8072a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362101
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43020}
2024-09-13 10:26:34 +00:00
Harald Alvestrand
6aab4ccf42 Change cricket::Codec default id from 0 to -1
This allows detecting if it has been set reliably.
0 is a valid payload type.

Bug: webrtc:360058654
Change-Id: Ic3646abe20d0247592145ad27549fa46ddb7ec90
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362261
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43016}
2024-09-12 21:26:48 +00:00
Harald Alvestrand
97c594fafe Add field trial for late PT allocation
Note: Does not include code for the actual late allocation
of PTs.

Bug: webrtc:360058654
Change-Id: Iaa6bd2db2f974aad84fe1ae9c1aca5aea5d1d25e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362320
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43014}
2024-09-12 14:42:27 +00:00
Harald Alvestrand
dc56a36ff8 Use PayloadTypePicker in WebRtcVoiceEngine
This entails passing in a PayloadTypeSuggester as a dependency. PT suggesting is still done according to the old method, but with new code.

Bug: webrtc:360058654
Change-Id: I12a7d2aa6aa482fb62ff3dfb34b9761ebb7dddef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361200
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42989}
2024-09-09 18:44:21 +00:00
Harald Alvestrand
927244db7e Set MID in AudioReceiveChannel
This variable was present but unset.

Bug: webrtc:360058654
Change-Id: I492069a1e87208c6fbb5ad5f0a00fcc2ccc0bc25
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361824
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42988}
2024-09-09 17:58:33 +00:00
Ilya Nikolaevskiy
9f096a8707 Allow VideoEncoderSoftwareFallbackWrapper to return SIMULCAST_PARAMS_NOT_SUPPORTED
Now some HW encoders support simulcast. If parameters are not suitable for
single encoder simulcast, the error code should be forwarded back to
SimulcastEncoderAdapter instead of trying software fallback.

Bug: webrtc:347737882
Change-Id: Id02ff1afc012cd46761d9530b1ce368d5dc480bb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361744
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42972}
2024-09-06 12:26:43 +00:00
Björn Terelius
05e1a1f570 Explicitly set encoder_context to nullptr in SimulcastEncoderAdapter after move.
Bug: None
Change-Id: Idac2efa73835ff5e1c37e1f19d7d2127c62e5900
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361642
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42957}
2024-09-05 10:26:59 +00:00
Fanny Linderborg
ac505c5b9a Enable the FrameInstrumentationGenerator if its extension is negotiated
Bug: webrtc:358039777
Change-Id: I5d1181d174e3e23506baa7f168849f02922311b5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361580
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Fanny Linderborg <linderborg@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42947}
2024-09-04 15:48:00 +00:00
Florent Castelli
c5b9a609ea Propagate environment to RtpSenders
Will be later used to conditionally enable mixed codec simulcast
with a field trial.

Bug: webrtc:42220378
Change-Id: I527a488c04cd2b5a9f4ec703504b67943e966ab0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361403
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42929}
2024-09-03 11:56:22 +00:00
Emil Vardar
55ed9501d2 Propagate corruption score to VideoReceiverInfo.
Bug: webrtc:358039777
Change-Id: Ib9f4e17b80b9af2182a019f3201882fd887da506
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361080
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Emil Vardar (xWF) <vardar@google.com>
Cr-Commit-Position: refs/heads/main@{#42918}
2024-09-03 06:32:57 +00:00
Florent Castelli
8037fc6ffa Migrate absl::optional to std::optional
Bug: webrtc:342905193
No-Try: True
Change-Id: Icc968be43b8830038ea9a1f5f604307220457807
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361021
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42911}
2024-09-02 12:16:47 +00:00
Henrik Boström
da72666d94 Support standard simulcast with requested_resolution.
According to spec, if you ask for three encodings you get three
encodings (duh). But according to legacy code, if you ask for three
encodings AND codec is VP9, then surely you meant a single encoding that
is kSVC where the other encodings influence the scalability mode of the
first encoding.

Standard simulcast support in VP9 was shipped as an opt-in feature where
you have to specify `scalability_mode` and `scale_resolution_down_by` in
order to let WebRTC know that you want to disable the legacy path.

But `scale_resolution_down_by` is not the only way to configure
resolution, there is also the `requested_resolution` code path. This CL
adds standard simulcast support for this code path as well.

Prior to this change, our parameterized test would have passed in VP8
but failed in VP9. With this change the test passes for all codecs.

Bug: webrtc:361124448
Change-Id: Ic5a7136de8abf430813fd01342862775fca145fb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/360100
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42822}
2024-08-21 09:35:52 +00:00
Mirko Bonadei
07e83f244b Roll chromium_revision ba1ae79f58..6f9b3224db (1319128:1338914)
Change log: ba1ae79f58..6f9b3224db
Full diff: ba1ae79f58..6f9b3224db

Changed dependencies
* fuchsia_version: version:21.20240620.2.1..version:22.20240801.2.1
* reclient_version: re_client_version:0.148.0.41b09b51-gomaip..re_client_version:0.155.0.f89f6fe3-gomaip
* src/base: aa6dbe6d6a..f092508cc2
* src/build: 5bce81deee..a0e5713502
* src/buildtools: 94d7b86a83..1926812554
* src/buildtools/linux64: git_revision:b2afae122eeb6ce09c52d63f67dc53fc517dbdc8..git_revision:05eed8f6252e2dd6b555e0b65192ef03e2c4a276
* src/buildtools/mac: git_revision:b2afae122eeb6ce09c52d63f67dc53fc517dbdc8..git_revision:05eed8f6252e2dd6b555e0b65192ef03e2c4a276
* src/buildtools/reclient: re_client_version:0.148.0.41b09b51-gomaip..re_client_version:0.155.0.f89f6fe3-gomaip
* src/buildtools/win: git_revision:b2afae122eeb6ce09c52d63f67dc53fc517dbdc8..git_revision:05eed8f6252e2dd6b555e0b65192ef03e2c4a276
* src/ios: 9e33110a5d..a603c11cfa
* src/testing: a1b47952f3..7605e1a3e3
* src/third_party: 91945cadc2..49b13d9832
* src/third_party/android_build_tools/aapt2: G1S0vNnfv3f8FD-9mH5RFSUiK-mnSwri_IdiVQKwLP0C..cfGQ9GV4juNnGZIPzTmaL3ehiZM1hs6UsB5HUA8fT6oC
* src/third_party/android_build_tools/bundletool: CaAT7TJbLQC0LVo1i2TXtaMjK4SZBQ33n-s6DcBbZfgC..sZ24OFOduSafn8fvR3ajsGS6KP_oS_Tq0Cw3SA8XiD0C
* src/third_party/android_build_tools/manifest_merger: 8yUA9fKPOvtc2p3lVEA3l885a1V4-CXZuKt6xAbdR4AC..xoWqP0Bmz9ReU5nL9ems2x3Ir4Ir3PMTLyba0Ibs824C
* src/third_party/android_sdk/public: mU9jm4LkManzjSzRquV1UIA7fHBZ2pK7NtbCXxoVnVUC..fv6JzkTqfxfIbmsRC8u1b2y0EQO7yQDMDzY3-g0NVu4C
* src/third_party/android_system_sdk: 4QeolYaSKWBtVTgzJU4tHUfzA9OJTDM8YUcD426IctwC..XzzECzCzGLrccJS1U-HdmM5VMh9BotgQ_mWhFQ464PwC
* src/third_party/android_toolchain/ndk: wpJvg81kuXdMM66r_l9Doa-pLfR6S26Jd1x40LpwWEoC..Idl-vYnWGnM8K3XJhM3h6zjYVDXlnljVz3FE00V9IM8C
* src/third_party/androidx/cipd: Z7XlkD_7fIL0GqryXCpnM2SunziZ3jWsNCO2UIOAheMC..o9-gndsuJRMgUwrhQG8Ozqkmxs-SQt9pn6kzqZmuQYMC
* src/third_party/breakpad/breakpad: 76788faa4e..1420017c7f
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/022cd349fe..2feeb46c60
* src/third_party/dav1d/libdav1d: 92f592ed10..2355eeb8f2
* src/third_party/depot_tools: f1c7c96958..75932421da
* src/third_party/ffmpeg: d941d9677b..67060f141b
* src/third_party/flatbuffers/src: 6ede1ccc9e..fb9afbafc7
* src/third_party/freetype/src: 73720c7c99..ec378cecaf
* src/third_party/googletest/src: 1d17ea141d..ff233bdd4c
* src/third_party/icu: 163e29159e..9408c6fd4a
* src/third_party/kotlin_stdlib: _4e0lDaCjMgaNeq2v2olJs_15Ax3PxGfCU9fMt0FTKcC..qtDQdcYfgSh4FeSY3TnkSjnZ5FqCbP1kjk1Zj1m6Jd4C
* src/third_party/kotlinc/current: 9KgLQsrBWX4kePu9T7eDB1JknSYIPKmmumTEE70lyHYC..dsxRhKDTq0fkLEZLBAcBOaGkoSlvPe_gpTl3o680x7MC
* src/third_party/libaom/source/libaom: https://aomedia.googlesource.com/aom.git/+log/afedaf9da5..d8ef6563e0
* src/third_party/libc++/src: 09b99fd8ab..7993b2fda2
* src/third_party/libc++abi/src: bac941ca44..eb6567388e
* src/third_party/libunwind/src: dcc1ffafb5..6db1ccfa71
* src/third_party/libvpx/source/libvpx: 253d6365e3..428f3104fa
* src/third_party/openh264/src: 09a4f3ec84..478e5ab3ec
* src/third_party/perfetto: f9098afffa..26643fc4e9
* src/third_party/r8: M8rc1oybTkWXWpoImSQ8gAwv6mdEyvAPnQNs6Dus_28C..PXH37yAaLUOxMKapVN58gGbrt4ncdU0of7PVnU1hqlAC
* src/third_party/re2/src: 6144b62bec..6dcd83d60f
* src/third_party/turbine: xWEBZuFKl1Dvw_zOpabeMkGVYlEllIxK06D-RoC6wUsC..HLBr7iWMO2VeD_WbrAA1eq33jZZCVxvA3noE3LNzSlQC
* src/tools: a8fe86b922..1487e03fbb
* src/tools/luci-go: git_revision:6fb4d5d26773ebddeac2c57506324493e4220007..git_revision:be41b8d978e22d396ecb4aa9f50ddc3f25977359
* src/tools/luci-go: git_revision:6fb4d5d26773ebddeac2c57506324493e4220007..git_revision:be41b8d978e22d396ecb4aa9f50ddc3f25977359
Added dependencies
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_cast_framework
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_location
* src/third_party/android_deps/cipd/libs/com_squareup_moshi_moshi
* src/third_party/android_deps/cipd/libs/com_android_support_swiperefreshlayout
* src/third_party/android_deps/cipd/libs/com_android_support_localbroadcastmanager
* src/third_party/android_deps/cipd/libs/com_android_support_support_annotations
* src/third_party/android_deps/cipd/libs/org_checkerframework_dataflow_errorprone
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_encoders
* src/third_party/android_deps/cipd/libs/org_robolectric_junit
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_iid_interop
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_installations_interop
* src/third_party/android_deps/cipd/libs/net_bytebuddy_byte_buddy_agent
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlin_kotlin_parcelize_runtime
* src/third_party/android_deps/cipd/libs/org_robolectric_nativeruntime
* src/third_party/android_deps/cipd/libs/org_bouncycastle_bcprov_jdk18on
* src/third_party/android_deps/cipd/libs/org_robolectric_shadows_versioning
* src/third_party/android_deps/cipd/libs/net_ltgt_gradle_incap_incap
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_annotations
* src/third_party/android_deps/cipd/libs/com_google_j2objc_j2objc_annotations
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_messaging
* src/third_party/android_deps/cipd/libs/com_android_support_viewpager
* src/third_party/android_deps/cipd/libs/org_robolectric_sandbox
* src/third_party/android_deps/cipd/libs/android_arch_lifecycle_livedata_core
* src/third_party/android_deps/cipd/libs/com_google_googlejavaformat_google_java_format
* src/third_party/android_deps/cipd/libs/com_google_errorprone_error_prone_type_annotations
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_common
* src/third_party/android_deps/cipd/libs/org_checkerframework_checker_compat_qual
* src/third_party/android_deps/cipd/libs/com_google_code_findbugs_jsr305
* src/third_party/android_deps/cipd/libs/com_google_auto_value_auto_value_annotations
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_auth
* src/third_party/android_deps/cipd/libs/com_google_android_play_core_common
* src/third_party/android_deps/cipd/libs/com_android_support_cursoradapter
* src/third_party/android_deps/cipd/libs/com_google_errorprone_javac
* src/third_party/android_deps/cipd/libs/com_google_dagger_dagger
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlinx_kotlinx_coroutines_guava
* src/third_party/android_deps/cipd/libs/com_android_support_customview
* src/third_party/android_deps/cipd/libs/com_google_android_play_feature_delivery
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_base
* src/third_party/android_deps/cipd/libs/org_mockito_mockito_subclass
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_vision_common
* src/third_party/android_deps/cipd/libs/io_grpc_grpc_stub
* src/third_party/android_deps/cipd/libs/org_mockito_mockito_core
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlinx_kotlinx_coroutines_android
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_components
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_instantapps
* src/third_party/android_deps/cipd/libs/net_bytebuddy_byte_buddy
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlinx_atomicfu_jvm
* src/third_party/android_deps/cipd/libs/io_perfmark_perfmark_api
* src/third_party/android_deps/cipd/libs/android_arch_lifecycle_livedata
* src/third_party/android_deps/cipd/libs/com_github_ben_manes_caffeine_caffeine
* src/third_party/android_deps/cipd/libs/com_google_errorprone_error_prone_check_api
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_cloud_messaging
* src/third_party/android_deps/cipd/libs/com_googlecode_java_diff_utils_diffutils
* src/third_party/android_deps/cipd/libs/io_grpc_grpc_binder
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_phenotype
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_cast
* src/third_party/android_deps/cipd/libs/com_google_auto_service_auto_service_annotations
* src/third_party/android_deps/cipd/libs/org_checkerframework_checker_qual
* src/third_party/android_deps/cipd/libs/javax_inject_javax_inject
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_identity_credentials
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_encoders_json
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_flags
* src/third_party/android_deps/cipd/libs/com_android_tools_sdk_common
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_tasks
* src/third_party/android_deps/cipd/libs/com_google_protobuf_protobuf_javalite
* src/third_party/android_deps/cipd/libs/org_ow2_asm_asm
* src/third_party/android_deps/cipd/libs/com_squareup_wire_wire_runtime_jvm
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_auth_base
* src/third_party/android_deps/cipd/libs/org_robolectric_shadows_framework
* src/third_party/android_deps/cipd/libs/org_robolectric_utils
* src/third_party/android_deps/cipd/libs/org_ow2_asm_asm_util
* src/third_party/android_deps/cipd/libs/android_arch_lifecycle_runtime
* src/third_party/android_deps/cipd/libs/org_robolectric_robolectric
* src/third_party/android_deps/cipd/libs/org_mockito_mockito_android
* src/third_party/android_deps/cipd/libs/org_robolectric_pluginapi
* src/third_party/android_deps/cipd/libs/com_google_protobuf_protobuf_java
* src/third_party/android_deps/cipd/libs/com_android_support_support_core_utils
* src/third_party/android_deps/cipd/libs/org_checkerframework_checker_util
* src/third_party/android_deps/cipd/libs/com_android_support_support_core_ui
* src/third_party/android_deps/cipd/libs/com_android_support_asynclayoutinflater
* src/third_party/android_deps/cipd/libs/org_objenesis_objenesis
* src/third_party/android_deps/cipd/libs/com_android_support_print
* src/third_party/android_deps/cipd/libs/com_google_android_datatransport_transport_api
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_vision
* src/third_party/android_deps/cipd/libs/com_android_tools_layoutlib_layoutlib_api
* src/third_party/android_deps/cipd/libs/org_robolectric_annotations
* src/third_party/android_deps/cipd/libs/com_google_dagger_dagger_spi
* src/third_party/android_deps/cipd/libs/com_google_errorprone_error_prone_annotations
* src/third_party/android_deps/cipd/libs/android_arch_core_runtime
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_iid
* src/third_party/android_deps/cipd/libs/com_squareup_moshi_moshi_adapters
* src/third_party/android_deps/cipd/libs/com_google_android_annotations
* src/third_party/android_deps/cipd/libs/com_squareup_javapoet
* src/third_party/android_deps/cipd/libs/com_google_errorprone_error_prone_annotation
* src/third_party/android_deps/cipd/libs/org_eclipse_jgit_org_eclipse_jgit
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_stats
* src/third_party/android_deps/cipd/libs/com_google_dagger_dagger_producers
* src/third_party/android_deps/cipd/libs/org_hamcrest_hamcrest
* src/third_party/android_deps/cipd/libs/com_android_support_drawerlayout
* src/third_party/android_deps/cipd/libs/com_google_errorprone_error_prone_core
* src/third_party/android_deps/cipd/libs/org_robolectric_plugins_maven_dependency_resolver
* src/third_party/android_deps/cipd/libs/com_android_support_interpolator
* src/third_party/android_deps/cipd/libs/io_grpc_grpc_protobuf_lite
* src/third_party/android_deps/cipd/libs/com_google_code_gson_gson
* src/third_party/android_deps/cipd/libs/android_arch_core_common
* src/third_party/android_deps/cipd/libs/com_google_guava_guava
* src/third_party/android_deps/cipd/libs/com_android_support_versionedparcelable
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlin_kotlin_android_extensions_runtime
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_basement
* src/third_party/android_deps/cipd/libs/org_robolectric_resources
* src/third_party/android_deps/cipd/libs/com_google_dagger_dagger_compiler
* src/third_party/android_deps/cipd/libs/javax_annotation_javax_annotation_api
* src/third_party/android_deps/cipd/libs/io_grpc_grpc_context
* src/third_party/android_deps/cipd/libs/org_ccil_cowan_tagsoup_tagsoup
* src/third_party/android_deps/cipd/libs/io_grpc_grpc_api
* src/third_party/android_deps/cipd/libs/org_ow2_asm_asm_commons
* src/third_party/android_deps/cipd/libs/com_squareup_javawriter
* src/third_party/android_deps/cipd/libs/com_android_support_slidingpanelayout
* src/third_party/android_deps/cipd/libs/com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework
* src/third_party/android_deps/cipd/libs/com_android_support_support_compat
* src/third_party/android_deps/cipd/libs/org_ow2_asm_asm_analysis
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm
* src/third_party/android_deps/cipd/libs/org_robolectric_utils_reflector
* src/third_party/android_deps/cipd/libs/com_google_auto_auto_common
* src/third_party/android_deps/cipd/libs/com_github_kevinstern_software_and_algorithms
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlinx_kotlinx_metadata_jvm
* src/third_party/android_deps/cipd/libs/org_conscrypt_conscrypt_openjdk_uber
* src/third_party/android_deps/cipd/libs/com_android_support_documentfile
* src/third_party/android_deps/cipd/libs/io_grpc_grpc_core
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_iid
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlin_kotlin_stdlib_jdk7
* src/third_party/android_deps/cipd/libs/org_jsoup_jsoup
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_measurement_connector
* src/third_party/android_deps/cipd/libs/android_arch_lifecycle_common
* src/third_party/android_deps/cipd/libs/com_google_errorprone_javac_shaded
* src/third_party/android_deps/cipd/libs/com_google_firebase_firebase_installations
* src/third_party/android_deps/cipd/libs/com_google_android_material_material
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_gcm
* src/third_party/android_deps/cipd/libs/com_squareup_okio_okio_jvm
* src/third_party/android_deps/cipd/libs/org_codehaus_mojo_animal_sniffer_annotations
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_auth_api_phone
* src/third_party/android_deps/cipd/libs/com_google_android_gms_play_services_clearcut
* src/third_party/android_deps/cipd/libs/org_ow2_asm_asm_tree
* src/third_party/android_deps/cipd/libs/com_google_guava_guava_android
* src/third_party/android_deps/cipd/libs/com_android_support_collections
* src/third_party/android_deps/cipd/libs/com_android_support_coordinatorlayout
* src/third_party/android_deps/cipd/libs/io_github_java_diff_utils_java_diff_utils
* src/third_party/android_deps/cipd/libs/com_google_guava_failureaccess
* src/third_party/android_deps/cipd/libs/org_robolectric_nativeruntime_dist_compat
* src/third_party/android_deps/cipd/libs/com_android_tools_common
* src/third_party/android_deps/cipd/libs/org_robolectric_shadowapi
* src/third_party/android_deps/cipd/libs/com_google_auto_service_auto_service
* src/third_party/android_deps/cipd/libs/javax_annotation_jsr250_api
* src/third_party/android_deps/cipd/libs/android_arch_lifecycle_viewmodel
* src/third_party/android_deps/cipd/libs/org_jetbrains_kotlin_kotlin_stdlib_jdk8
* src/third_party/android_deps/cipd/libs/com_android_support_loader
* src/third_party/android_deps/cipd/libs/org_pcollections_pcollections
Removed dependencies
* src/third_party/android_deps/libs/android_arch_core_common
* src/third_party/android_deps/libs/android_arch_core_runtime
* src/third_party/android_deps/libs/android_arch_lifecycle_common
* src/third_party/android_deps/libs/android_arch_lifecycle_livedata
* src/third_party/android_deps/libs/android_arch_lifecycle_livedata_core
* src/third_party/android_deps/libs/android_arch_lifecycle_runtime
* src/third_party/android_deps/libs/android_arch_lifecycle_viewmodel
* src/third_party/android_deps/libs/com_android_support_asynclayoutinflater
* src/third_party/android_deps/libs/com_android_support_collections
* src/third_party/android_deps/libs/com_android_support_coordinatorlayout
* src/third_party/android_deps/libs/com_android_support_cursoradapter
* src/third_party/android_deps/libs/com_android_support_customview
* src/third_party/android_deps/libs/com_android_support_documentfile
* src/third_party/android_deps/libs/com_android_support_drawerlayout
* src/third_party/android_deps/libs/com_android_support_interpolator
* src/third_party/android_deps/libs/com_android_support_loader
* src/third_party/android_deps/libs/com_android_support_localbroadcastmanager
* src/third_party/android_deps/libs/com_android_support_print
* src/third_party/android_deps/libs/com_android_support_slidingpanelayout
* src/third_party/android_deps/libs/com_android_support_support_annotations
* src/third_party/android_deps/libs/com_android_support_support_compat
* src/third_party/android_deps/libs/com_android_support_support_core_ui
* src/third_party/android_deps/libs/com_android_support_support_core_utils
* src/third_party/android_deps/libs/com_android_support_swiperefreshlayout
* src/third_party/android_deps/libs/com_android_support_versionedparcelable
* src/third_party/android_deps/libs/com_android_support_viewpager
* src/third_party/android_deps/libs/com_android_tools_common
* src/third_party/android_deps/libs/com_android_tools_layoutlib_layoutlib_api
* src/third_party/android_deps/libs/com_android_tools_sdk_common
* src/third_party/android_deps/libs/com_github_ben_manes_caffeine_caffeine
* src/third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms
* src/third_party/android_deps/libs/com_google_android_annotations
* src/third_party/android_deps/libs/com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework
* src/third_party/android_deps/libs/com_google_android_datatransport_transport_api
* src/third_party/android_deps/libs/com_google_android_gms_play_services_auth
* src/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone
* src/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base
* src/third_party/android_deps/libs/com_google_android_gms_play_services_base
* src/third_party/android_deps/libs/com_google_android_gms_play_services_basement
* src/third_party/android_deps/libs/com_google_android_gms_play_services_cast
* src/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework
* src/third_party/android_deps/libs/com_google_android_gms_play_services_clearcut
* src/third_party/android_deps/libs/com_google_android_gms_play_services_cloud_messaging
* src/third_party/android_deps/libs/com_google_android_gms_play_services_flags
* src/third_party/android_deps/libs/com_google_android_gms_play_services_gcm
* src/third_party/android_deps/libs/com_google_android_gms_play_services_iid
* src/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps
* src/third_party/android_deps/libs/com_google_android_gms_play_services_location
* src/third_party/android_deps/libs/com_google_android_gms_play_services_phenotype
* src/third_party/android_deps/libs/com_google_android_gms_play_services_stats
* src/third_party/android_deps/libs/com_google_android_gms_play_services_tasks
* src/third_party/android_deps/libs/com_google_android_gms_play_services_vision
* src/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common
* src/third_party/android_deps/libs/com_google_android_material_material
* src/third_party/android_deps/libs/com_google_android_play_core_common
* src/third_party/android_deps/libs/com_google_android_play_feature_delivery
* src/third_party/android_deps/libs/com_google_auto_auto_common
* src/third_party/android_deps/libs/com_google_auto_service_auto_service
* src/third_party/android_deps/libs/com_google_auto_service_auto_service_annotations
* src/third_party/android_deps/libs/com_google_auto_value_auto_value_annotations
* src/third_party/android_deps/libs/com_google_code_findbugs_jsr305
* src/third_party/android_deps/libs/com_google_code_gson_gson
* src/third_party/android_deps/libs/com_google_dagger_dagger
* src/third_party/android_deps/libs/com_google_dagger_dagger_compiler
* src/third_party/android_deps/libs/com_google_dagger_dagger_producers
* src/third_party/android_deps/libs/com_google_dagger_dagger_spi
* src/third_party/android_deps/libs/com_google_errorprone_error_prone_annotation
* src/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations
* src/third_party/android_deps/libs/com_google_errorprone_error_prone_check_api
* src/third_party/android_deps/libs/com_google_errorprone_error_prone_core
* src/third_party/android_deps/libs/com_google_errorprone_error_prone_type_annotations
* src/third_party/android_deps/libs/com_google_errorprone_javac
* src/third_party/android_deps/libs/com_google_errorprone_javac_shaded
* src/third_party/android_deps/libs/com_google_firebase_firebase_annotations
* src/third_party/android_deps/libs/com_google_firebase_firebase_common
* src/third_party/android_deps/libs/com_google_firebase_firebase_components
* src/third_party/android_deps/libs/com_google_firebase_firebase_encoders
* src/third_party/android_deps/libs/com_google_firebase_firebase_encoders_json
* src/third_party/android_deps/libs/com_google_firebase_firebase_iid
* src/third_party/android_deps/libs/com_google_firebase_firebase_iid_interop
* src/third_party/android_deps/libs/com_google_firebase_firebase_installations
* src/third_party/android_deps/libs/com_google_firebase_firebase_installations_interop
* src/third_party/android_deps/libs/com_google_firebase_firebase_measurement_connector
* src/third_party/android_deps/libs/com_google_firebase_firebase_messaging
* src/third_party/android_deps/libs/com_google_googlejavaformat_google_java_format
* src/third_party/android_deps/libs/com_google_guava_failureaccess
* src/third_party/android_deps/libs/com_google_guava_guava
* src/third_party/android_deps/libs/com_google_guava_guava_android
* src/third_party/android_deps/libs/com_google_j2objc_j2objc_annotations
* src/third_party/android_deps/libs/com_google_protobuf_protobuf_java
* src/third_party/android_deps/libs/com_google_protobuf_protobuf_javalite
* src/third_party/android_deps/libs/com_googlecode_java_diff_utils_diffutils
* src/third_party/android_deps/libs/com_squareup_javapoet
* src/third_party/android_deps/libs/com_squareup_javawriter
* src/third_party/android_deps/libs/com_squareup_moshi_moshi
* src/third_party/android_deps/libs/com_squareup_moshi_moshi_adapters
* src/third_party/android_deps/libs/com_squareup_okio_okio_jvm
* src/third_party/android_deps/libs/com_squareup_wire_wire_runtime_jvm
* src/third_party/android_deps/libs/io_github_java_diff_utils_java_diff_utils
* src/third_party/android_deps/libs/io_grpc_grpc_api
* src/third_party/android_deps/libs/io_grpc_grpc_binder
* src/third_party/android_deps/libs/io_grpc_grpc_context
* src/third_party/android_deps/libs/io_grpc_grpc_core
* src/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite
* src/third_party/android_deps/libs/io_grpc_grpc_stub
* src/third_party/android_deps/libs/io_perfmark_perfmark_api
* src/third_party/android_deps/libs/javax_annotation_javax_annotation_api
* src/third_party/android_deps/libs/javax_annotation_jsr250_api
* src/third_party/android_deps/libs/javax_inject_javax_inject
* src/third_party/android_deps/libs/net_bytebuddy_byte_buddy
* src/third_party/android_deps/libs/net_bytebuddy_byte_buddy_agent
* src/third_party/android_deps/libs/net_ltgt_gradle_incap_incap
* src/third_party/android_deps/libs/org_bouncycastle_bcprov_jdk18on
* src/third_party/android_deps/libs/org_ccil_cowan_tagsoup_tagsoup
* src/third_party/android_deps/libs/org_checkerframework_checker_compat_qual
* src/third_party/android_deps/libs/org_checkerframework_checker_qual
* src/third_party/android_deps/libs/org_checkerframework_checker_util
* src/third_party/android_deps/libs/org_checkerframework_dataflow_errorprone
* src/third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations
* src/third_party/android_deps/libs/org_conscrypt_conscrypt_openjdk_uber
* src/third_party/android_deps/libs/org_eclipse_jgit_org_eclipse_jgit
* src/third_party/android_deps/libs/org_hamcrest_hamcrest
* src/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_android_extensions_runtime
* src/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_parcelize_runtime
* src/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_jdk7
* src/third_party/android_deps/libs/org_jetbrains_kotlin_kotlin_stdlib_jdk8
* src/third_party/android_deps/libs/org_jetbrains_kotlinx_atomicfu_jvm
* src/third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_coroutines_android
* src/third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm
* src/third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_coroutines_guava
* src/third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_metadata_jvm
* src/third_party/android_deps/libs/org_jsoup_jsoup
* src/third_party/android_deps/libs/org_mockito_mockito_android
* src/third_party/android_deps/libs/org_mockito_mockito_core
* src/third_party/android_deps/libs/org_mockito_mockito_subclass
* src/third_party/android_deps/libs/org_objenesis_objenesis
* src/third_party/android_deps/libs/org_ow2_asm_asm
* src/third_party/android_deps/libs/org_ow2_asm_asm_analysis
* src/third_party/android_deps/libs/org_ow2_asm_asm_commons
* src/third_party/android_deps/libs/org_ow2_asm_asm_tree
* src/third_party/android_deps/libs/org_ow2_asm_asm_util
* src/third_party/android_deps/libs/org_pcollections_pcollections
* src/third_party/android_deps/libs/org_robolectric_annotations
* src/third_party/android_deps/libs/org_robolectric_junit
* src/third_party/android_deps/libs/org_robolectric_nativeruntime
* src/third_party/android_deps/libs/org_robolectric_nativeruntime_dist_compat
* src/third_party/android_deps/libs/org_robolectric_pluginapi
* src/third_party/android_deps/libs/org_robolectric_plugins_maven_dependency_resolver
* src/third_party/android_deps/libs/org_robolectric_resources
* src/third_party/android_deps/libs/org_robolectric_robolectric
* src/third_party/android_deps/libs/org_robolectric_sandbox
* src/third_party/android_deps/libs/org_robolectric_shadowapi
* src/third_party/android_deps/libs/org_robolectric_shadows_framework
* src/third_party/android_deps/libs/org_robolectric_shadows_versioning
* src/third_party/android_deps/libs/org_robolectric_utils
* src/third_party/android_deps/libs/org_robolectric_utils_reflector
DEPS diff: ba1ae79f58..6f9b3224db/DEPS

Clang version changed llvmorg-19-init-14561-gecea8371:llvmorg-20-init-1009-g7088a5ed
Details: ba1ae79f58..6f9b3224db/tools/clang/scripts/update.py

BUG=b/351773023

Change-Id: I1ed351ae305262cc34fccc67bcbd748637b803f4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/358880
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Christoffer Dewerin <jansson@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42744}
2024-08-08 09:20:02 +00:00
Tony Herre
5079e8a30a Allow supplying a custom NetworkControllerInterfaceFactory per-Call in PeerConnectionDependencies
This requires making CallConfig move-only so it can hold a unique_ptr to
the factory, but as discussed with Danil, that seems fine.

Bug: chromium:355610792
Change-Id: Ie52e33faaa4a2af748daeb25f5327b7a532936e2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357862
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Tony Herre <herre@google.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42679}
2024-07-29 07:17:14 +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
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
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
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
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
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
Ilya Nikolaevskiy
5d56b7cdf0 SimulcastEncoderAdapter: ensure registered callback isn't lost
Currently, if the single-encoder mode fails to initialize, the
callback is cleared on the encoder with Release() call.

Below, the encoder_context for the first stream will be reused but
then we only intercept the callback for the stream_idx>0.

Therefore if RegisterEncodeCompleteCallback() is called before the InitEncode(), the first stream will end up with nullptr callback.

To ensure this doesn't happen, restore the callback on the reusable encoder.

Bug: none
Change-Id: I1c830f3bf71f64807d5cc1a3000b73834011bde4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356180
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42580}
2024-07-03 08:38:04 +00:00
Sergey Silkin
e19896abec Enable VP9 flexible mode if it is not disabled by the kill-switch
Forgot negation in https://webrtc-review.googlesource.com/c/src/+/355700

Bug: webrtc:329396373
Change-Id: I6217b5b5cdb11b182405ae7b3d3d3c1fa5036bc7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355862
Auto-Submit: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42556}
2024-06-27 16:24:14 +00:00
Evan Shrubsole
479e066495 Fix spatial layers to 1 when doing VP9 simulcast encoding
Libvpx works without this, so the existing tests pass. However, other
encoder implementations (like rtc_video_encoder in Chrome) look at
different fields and get confused about the configuration.

Test: Integration tests with Chrome and windows hardware encoders.
Bug: webrtc:348342168
Change-Id: Id0d96cff34eb34c7e019a24255623f3aeeca5772
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355500
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42555}
2024-06-27 16:23:11 +00:00
Sergey Silkin
0bbc8ce12b Enable flexible mode by default
Added a dedicated kill-switch WebRTC-Video-Vp9FlexibleMode.

Bug: webrtc:329396373
Change-Id: I1acb28032898379eecf7dd81a770c73708286d74
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355700
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42543}
2024-06-26 13:46:07 +00:00
Jesús de Vicente Peña
fc6df056b6 Computing and propagating the audio stats totalprocessingdelay.
Bug: webrtc:344347965
Change-Id: Id7dd74ef085338d14582dcc0db98508d365301e6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/352680
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42507}
2024-06-18 08:05:28 +00:00
Harald Alvestrand
c74412b304 Deprecate rtc::RefCountInterface
and move usages to webrtc::RefCountInterface

This CL also moves more stuff to webrtc:: and adds backwards
compatible aliases for them.

Bug: webrtc:42225969
Change-Id: Iefb8542cff793bd8aa46bef8f2f3c66a1e979d07
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/353720
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42446}
2024-06-07 09:47:26 +00:00
Hirokazu Honda
7c6624a9ea SimulcastEncoderAdapter: Move DestroyStoredEncoders() to protected
The encoders stored in SimulcastEncoderAdapter might have a reference
which is passed by the encoder factory. Therefore, the encoder factory
needs to outlive the encoders.
A class inheriting SimulcastEncoderAdapter possibly owns the resource.
Since a base class' destructor cannot be called before a child class,
the child class needs to destroy encoders by invoking
DestroyStoredEncoders() in the destructor.

Bug: b:320555128
Test: Build
Test: unit test
Change-Id: I34672556bab5f6b0f754edb840e9eb42d38f292e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/351442
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Hirokazu Honda <hiroh@google.com>
Cr-Commit-Position: refs/heads/main@{#42436}
2024-06-05 08:48:07 +00:00
Harald Alvestrand
752a2b8afb Refactor the GetPayloadTypesAndDefaultCodecs function
This is in preparation for moving the assignment of PT numbers
to a different place.

Bug: webrtc:42226302
Change-Id: I821f2b6b15eb9f9f3715714e2c2c220c5e5a219e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/352921
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42422}
2024-05-31 16:50:01 +00:00
Philipp Hancke
bad99ab253 RTCP: implement reduced size RTCP for audio
reduced-size RTCP, i.e. not prefixing RTCP packets with either a sender report or receiver report has been implemented for a long time but only for video.

This CL adds it for audio as well. This reduces the size of audio NACKs (16 bytes, typically one NACK per packet) sent by not prefixing it with a receiver report (32 bytes).
Other packets are not affected as e.g. transport-cc feedback does not add a RR even though that is technically required.

The effect on NACK can be tested by running Chromium with
  --disable-webrtc-encryption --force-fieldtrials=WebRTC-FakeNetworkReceiveConfig/loss_percent:5/
against this fiddle negotiating audio nack:
https://jsfiddle.net/fippo/8ubtLnfx/1/

BUG=webrtc:340041654

Change-Id: I06fb94742ff1b6f9a464c404bfc53913f23498d8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350269
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42330}
2024-05-16 18:24:10 +00:00
Danil Chapovalov
fd89ff5d93 Provide Environment to SimulcastRateAllocator at construction
So that this class can use propagated field trials instead of the global

Bug: webrtc:42220378
Change-Id: Ic1dba0c4967735606904329f7e9e6c09f186b809
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350641
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42326}
2024-05-16 13:32:54 +00:00
Erik Språng
a8da642371 Reconfigure encoders or source change
This is done in case the new source has a different clock source which
might be out of sync with the previous one, leading to timestamp
conflicts.

Bug: b/340198307
Change-Id: Id1a82823ca85e03d99dad31b7ce9f19f09447755
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350560
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42312}
2024-05-15 13:12:08 +00:00
Danil Chapovalov
179f96de7e Provide Environment to construct VideoBitrateAllocator
To allow various VideoBitrateAllocators to use propagated rather than global field trials

This relands the
https://webrtc-review.googlesource.com/c/src/+/349920
where patchset#1 is identical to the original change,
patchset#2 undoes (postpones) the expectation downstream propagates the Environment too.

Bug: webrtc:42220378
Change-Id: I4a9a32bb0926a875d37f3ba19dd5309e97546553
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350364
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42298}
2024-05-14 11:36:42 +00:00