Commit graph

109 commits

Author SHA1 Message Date
Philipp Hancke
bce57cda1e Piggyback DTLS handshake in initial STUN packets
This change puts the DTLS handshake as payload of STUN packets with a custom STUN attribute (registered with the IANA) and starts the DTLS handshake before the ICE transport becomes writable. Effectively, STUN acts as a transport layer for DTLS during the handshake phase.

This will theoretically reduce the call setup time by one RTT for aggressive nomination or two RTTs for regular nomination.

The latest DTLS packet (flight) is cached and sent on every STUN request or response. DTLS packets are extracted from every authenticated STUN request or response and handled to the DTLS layer for processing.
The caching also increases the resilience to packet loss as STUN pacing is more aggressive (every 20ms) than the exponential backoff used by DTLS which should reduce call setup time in lossy networks.

If the other side of the connection does not support this feature the fallback to normal DTLS happens as soon as the ICE transport becomes writable. This also handles edge-cases like fragmentation of the DTLS handshake.

The feature is only supported when ECDSA certificates are used since RSA certificates are too large to transport as STUN attributes. The observed attributes for the server and client flights with the certificates were around 600 to 650 bytes. This may be further reduced by using raw public keys defined in RFC 7250.

This feature is disabled by default and guarded by the field trial
  WebRTC-IceHandshakeDtls
and requires experimentation and standardization before roll-out in the browser.

Parts of this landed in
  https://webrtc-review.googlesource.com/c/src/+/370679

BUG=webrtc:367395350

Change-Id: I4809438b2a267c4690a9b2bd6f1766d2f959500d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362480
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43742}
2025-01-15 07:54:23 -08:00
Philipp Hancke
3905b25018 clean up WebRTC-DisableTlsSessionTicketKillswitch
which shipped in M131.

BUG=webrtc:367181089

Change-Id: I967bafbab99bf211b0e6a4454f6598fd52493b26
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/370080
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43674}
2025-01-08 01:00:56 -08:00
Jonas Oreland
12574a315f DTLS 1.3 - patch 4
This patchs adds a field trial for enabling DTLS1.3, WebRTC-ForceDtls13
- "Enabled" set max version to DTLS1.3
- "Only" set min & max version to DTLS1.3

Wireup a FieldTrialsView so that this does not
use the global string.

Also convert the WebRTC-DisableTlsSessionTicketKillswitch
from global string to FieldTrialsView.

BUG=webrtc:383141571

Change-Id: Ia775efc1dcbffd01bfddb6030490438cb8de89d7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/372261
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43616}
2024-12-19 07:37:19 -08:00
Mirko Bonadei
7976b77345 Revert "Follow codec preference order for sending codec fallback."
This reverts commit 1ad3e14e99.

Reason for revert: Breaks downstream project. We are investigating into a potential problem when running on mobile platforms. We will get back with info or reland.

Original change's description:
> Follow codec preference order for sending codec fallback.
>
> When encoder selector is not enabled, currently we always fallback to
> VP8 no matter how the codec preference is setup. Update to follow codec
> preference order for the fallback.
>
> Bug: chromium:378566918
> Change-Id: Ia3fbfc9d407683ef7b3d6246af7e9ec58535dc89
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/370707
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Henrik Boström <hbos@webrtc.org>
> Commit-Queue: Jianlin Qiu <jianlin.qiu@intel.com>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#43566}

Bug: chromium:378566918
Change-Id: I09086b5ad100a8f66e87df167e903d0b5fe5b589
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/372080
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43600}
2024-12-18 09:16:09 -08:00
Qiu Jianlin
1ad3e14e99 Follow codec preference order for sending codec fallback.
When encoder selector is not enabled, currently we always fallback to
VP8 no matter how the codec preference is setup. Update to follow codec
preference order for the fallback.

Bug: chromium:378566918
Change-Id: Ia3fbfc9d407683ef7b3d6246af7e9ec58535dc89
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/370707
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Jianlin Qiu <jianlin.qiu@intel.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43566}
2024-12-13 15:38:18 -08:00
Alessio Bazzica
cd013b1d59 Opus decoder: stereo decoding by default (behind field trial)
- Add `WebRTC-Audio-OpusDecodeStereoByDefault` field trial
- Behind that field trial, `AudioDecoderOpus::SdpToConfig` uses 2
  instead of 1 as default number of channels when the `stereo` codec
  param is unspecified
- Instead of wiring up `FieldTrialsView` to `SdpToConfig`, which
  requires API changes that break downstream projects, a change in
  `AudioDecoderOpus::Config` is made to signal when the number of
  channels is forced via SDP config

Bug: webrtc:379996136
Change-Id: If70eb19bc7e3bc74dd0423610cb04ae33ea602fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/368860
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43440}
2024-11-22 07:37:10 +00:00
Philipp Hancke
8d8fc3222a Cleanup WebRTC-LegacyTlsProtocols field trial from field trial list
which is already gone from the code.

BUG=webrtc:40644300

Change-Id: Ic4a53d7895fa49d8417f11778d128740cecaee49
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/368180
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#43401}
2024-11-14 17:13:37 +00:00
Philipp Hancke
7a79d68645 Remove WebRTC-SetCodecPreferences-ReceiveOnlyFilterInsteadOfThrow killswitch
which launched a while back.

BUG=webrtc:40644399,webrtc:364825888

Change-Id: Ied1d76d8ab2cbb395e09c08f6354d99b4e082cef
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/367840
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#43383}
2024-11-11 06:58:35 +00:00
Philipp Hancke
0e5d73510d DTLS: cleanup extension permutation
which shipped in M129.

BUG=webrtc:42225803

Change-Id: I5021c7878069a1cd0eafd078b73fa57c5b9b2155
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364360
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#43313}
2024-10-28 10:04:37 +00:00
Emil Vardar
cdc38b9b4e Remove unused field trial.
Bug: webrtc:358039777
Change-Id: I47e6cebb2525035cfabed828129741eb93f445e8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/365901
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Fanny Linderborg <linderborg@webrtc.org>
Commit-Queue: Emil Vardar (xWF) <vardar@google.com>
Cr-Commit-Position: refs/heads/main@{#43266}
2024-10-18 16:33:17 +00:00
Emil Vardar
81d5ab8efb Add field trial to enable negotiation of encrypted RTP header extensions
Bug: webrtc:358039777
Change-Id: I2c59f4c8a3ed16862077c7c3484c1b5b39864c81
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364661
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Emil Vardar (xWF) <vardar@google.com>
Cr-Commit-Position: refs/heads/main@{#43203}
2024-10-09 09:34:33 +00:00
Philipp Hancke
518de1673e Reland "Disable TLS session ticket for DTLS"
This is a reland of commit e77d75193f.

No changes were required to the CL, downstream tests have been fixed.

Original change's description:
> Disable TLS session ticket for DTLS
>
> since it makes no sense for the WebRTC usage of DTLS and increases
> the size of the last handshake flight considerably
> Guarded by killswitch
>   WebRTC-DisableTlsSessionTicketKillswitch
>
> BUG=webrtc:367181089
>
> Co-authored-by: Jody Ho <jodyho@meta.com>
> Change-Id: I4bb17bba8a17c65c8e0fefe2d8962974703feee7
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362526
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: David Benjamin <davidben@webrtc.org>
> Commit-Queue: Philipp Hancke <phancke@meta.com>
> Cr-Commit-Position: refs/heads/main@{#43046}

Bug: webrtc:367181089
Change-Id: I4b3f813e4a0dd4d0458ee14c15c51ee6f9b84461
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363220
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43066}
2024-09-23 11:35:24 +00:00
Mirko Bonadei
4595711bf5 Revert "Disable TLS session ticket for DTLS"
This reverts commit e77d75193f.

Reason for revert: Speculative rollback (breaks downstream test).

Original change's description:
> Disable TLS session ticket for DTLS
>
> since it makes no sense for the WebRTC usage of DTLS and increases
> the size of the last handshake flight considerably
> Guarded by killswitch
>   WebRTC-DisableTlsSessionTicketKillswitch
>
> BUG=webrtc:367181089
>
> Co-authored-by: Jody Ho <jodyho@meta.com>
> Change-Id: I4bb17bba8a17c65c8e0fefe2d8962974703feee7
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362526
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: David Benjamin <davidben@webrtc.org>
> Commit-Queue: Philipp Hancke <phancke@meta.com>
> Cr-Commit-Position: refs/heads/main@{#43046}

Bug: webrtc:367181089
Change-Id: I02b59232fae9f729341811042a02f7cf346d4bbe
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362982
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43052}
2024-09-19 14:40:50 +00:00
Philipp Hancke
e77d75193f Disable TLS session ticket for DTLS
since it makes no sense for the WebRTC usage of DTLS and increases
the size of the last handshake flight considerably
Guarded by killswitch
  WebRTC-DisableTlsSessionTicketKillswitch

BUG=webrtc:367181089

Co-authored-by: Jody Ho <jodyho@meta.com>
Change-Id: I4bb17bba8a17c65c8e0fefe2d8962974703feee7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/362526
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: David Benjamin <davidben@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Cr-Commit-Position: refs/heads/main@{#43046}
2024-09-18 18:59:56 +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
Florent Castelli
64d68c3984 Add WebRTC-MixedCodecSimulcast field trial
Disable the checks ensuring we reject mixed-codec simulcast
when the field trial is enabled.
The feature is however not yet implemented.

Bug: webrtc:362277533
Change-Id: Ib1601767c951d61aaa37a3d8767d0a81444d626c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361404
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42942}
2024-09-04 08:45:44 +00:00
Ilya Nikolaevskiy
e432503389 Rewrite simulcast config to equivalent SVC for vp9 simulcast
This allows to utilize libvpx optimizations considerably improving performance.
The change happens inside libvpx_vp9_encoder and is invisible to other parts of webrtc.

This CL includes unit tests, an E2E test already exists: StandardPath/PeerConnectionEncodingsIntegrationParameterizedTest.Simulcast/VP9 in peerconnection_unittests.

Bug: webrtc:347737882
Change-Id: I03bc27c920787a7305a9775e6341e26904592fb8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/360280
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42931}
2024-09-03 12:10:33 +00:00
Johannes Kron
8401f56a54 Add fieldtrials WebRTC-QCM-Static-{AV1, VP8, VP9}
The fieldtrials can be used to override the static QP threshold
that is used in QualityConvergenceMonitor to determine if an
encoded video stream has reached its target quality.

The fieldtrials do not change the dynamic detection.

Bug: chromium:328598314
Change-Id: I5995860eff461f0c712293e34cf75834ce414bed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/361201
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42928}
2024-09-03 11:27:39 +00:00
Sergey Silkin
058972f84e Make LAYER_DROP and max_consec_drop=2 to be default settings
Based on the results of the experiment (b/335129329).

Bug: webrtc:15827, b/320629637, b/335129329, chromium:329396373
Change-Id: I1599f4c1be79ee3385aac1ff345168982c8278f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/360960
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Auto-Submit: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42895}
2024-08-30 10:10:09 +00:00
Per K
b60f0ffbce Dont signal ReadyToSend in RtpTransport::SendPacket
Before this cl, ReadyToSend signaled false if sending a packet failed and transport->GetError() returns ECONN.
ECONN may be reported by the TCP connection (TcpConnection) if the remote closed the connection. TcpConnection will attempt to reconnect and should change the writable state if it fail.
Changing the state in the context of sending packets may cause recursive
calls and seems to cause problems with incorrect states.
It is simpler if RtpTransport::SendPacket ignore these failures and
upper layers treat these lost packets similar to if the packets had been
lost via UDP.
For safety, this change can be reverted by field trial WebRTC-SetReadyToSendFalseIfSendFail/Enabled/.

Bug: webrtc:361124449 b/359989715
Change-Id: I8e7016dfb4301862286215c4512aa8ac03a16685
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/360120
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42868}
2024-08-27 14:16:53 +00:00
Dan Tan
43c0cf9cf8 Support borrowing of underused audio bitrate.
Controlled via added field trial WebRTC-ElasticBitrateAllocation.

Bug: webrtc:350555527
Change-Id: If57552144bd4a50421d618fd8bdab31d7c4afc35
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/359506
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Dan Tan <dwtan@google.com>
Cr-Commit-Position: refs/heads/main@{#42834}
2024-08-23 07:44:45 +00:00
Danil Chapovalov
759f8d80f0 Delete expired and unused field trial WebRTC-Audio-OpusPlcUsePrevDecodedSamples
Bug: b/143582588, webrtc:42221607
Change-Id: I49f477ab785801c8ef7143ab8b8654dd7379dfbd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/359560
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42783}
2024-08-14 17:21:39 +00:00
Danil Chapovalov
c2160b14b1 Delete expired field trial Audio-OpusAvoidNoisePumpingDuringDtx
Bug: webrtc:42222522, chromium:40174928
Change-Id: I2391b3078e5fff93edca3c3e6e568560b2a1c1cc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357742
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42691}
2024-07-30 09:43:52 +00:00
Philipp Hancke
76430c0bf1 TLS: enable TLS client hello permutation by default
this is flipping
  WebRTC-PermuteTlsClientHello
to a killswitch in the SSLStreamAdapter used for DTLS.

BUG=webrtc:42225803

Change-Id: I942851c474ec5e723c5b6c9f6206e7eafbe80ea4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357901
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42676}
2024-07-26 17:19:40 +00:00
Danil Chapovalov
f065ff85e2 Cleanup expired field trial WebRTC-VoIPChannelRemixingAdjustmentKillSwitch
Bug: chromium:40108588
Change-Id: Ifc334819dd486ac791b5d04faa6d6bd77a481dd7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349644
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42668}
2024-07-23 13:23:26 +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
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
Erik Språng
db65fda82f Wire up trial for alternative EncoderBitrateAdjuster behavior.
Behind a flag, the new behavior changes how the "media rate" utilization
is calculated:

* Instead of per spatial & temporal layer, it's per spatial layer only.
* Overshoot is compared to real target vs adjusted target.
* Window takes quite periods/frame drops more into consideration.

This should lead to less push-back when not network constrained and
complex content is used causing bursty behavior.

Bug: b/349561566
Change-Id: I402e6531183493c963fec48ae363ce0b859b396a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356480
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42593}
2024-07-05 13:36:26 +00:00
Ilya Nikolaevskiy
881c1a73ad Revert "Reland "Rewrite simulcast config to equivalent SVC for vp9 simulcast""
This reverts commit aab34560cf.

Reason for revert: Breaks downstream projects again.

Original change's description:
> Reland "Rewrite simulcast config to equivalent SVC for vp9 simulcast"
>
> This reverts commit b58937316b.
>
> Reason for revert: Reland after downstream project fix.
>
> Original change's description:
> > Revert "Rewrite simulcast config to equivalent SVC for vp9 simulcast"
> >
> > This reverts commit 86ff48adae.
> >
> > Reason for revert: Speculative revert due to failing downstream tests
> >
> > Original change's description:
> > > Rewrite simulcast config to equivalent SVC for vp9 simulcast
> > >
> > > This allows to utilize libvpx optimizations considerably improving performance.
> > > The change happens inside libvpx_vp9_encoder and is invisible to other parts of webrtc.
> > >
> > > This CL includes unit tests, an E2E test already exists: StandardPath/PeerConnectionEncodingsIntegrationParameterizedTest.Simulcast/VP9 in peerconnection_unittests.
> > >
> > > Bug: webrtc:347737882
> > > Change-Id: Ic48316ad597700ed07e594d592413cf84b6b20d4
> > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355003
> > > Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> > > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > > Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > > Cr-Commit-Position: refs/heads/main@{#42554}
> >
> > Bug: webrtc:347737882
> > Change-Id: Ib84c9c0e20763348abfae838f2fb1aff31581a55
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355943
> > Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> > Owners-Override: Jeremy Leconte <jleconte@google.com>
> > Reviewed-by: Jeremy Leconte <jleconte@google.com>
> > Commit-Queue: Jeremy Leconte <jleconte@google.com>
> > Cr-Commit-Position: refs/heads/main@{#42564}
>
> Bug: webrtc:347737882
> Change-Id: I020d51892982a6e776bb169584c27f7c1360d521
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356142
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42574}

Bug: webrtc:347737882
Change-Id: Id3472578159cfbe9cffeb812f1cb2c96e722298f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356260
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42579}
2024-07-03 08:17:24 +00:00
Ilya Nikolaevskiy
aab34560cf Reland "Rewrite simulcast config to equivalent SVC for vp9 simulcast"
This reverts commit b58937316b.

Reason for revert: Reland after downstream project fix.

Original change's description:
> Revert "Rewrite simulcast config to equivalent SVC for vp9 simulcast"
>
> This reverts commit 86ff48adae.
>
> Reason for revert: Speculative revert due to failing downstream tests
>
> Original change's description:
> > Rewrite simulcast config to equivalent SVC for vp9 simulcast
> >
> > This allows to utilize libvpx optimizations considerably improving performance.
> > The change happens inside libvpx_vp9_encoder and is invisible to other parts of webrtc.
> >
> > This CL includes unit tests, an E2E test already exists: StandardPath/PeerConnectionEncodingsIntegrationParameterizedTest.Simulcast/VP9 in peerconnection_unittests.
> >
> > Bug: webrtc:347737882
> > Change-Id: Ic48316ad597700ed07e594d592413cf84b6b20d4
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355003
> > Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > Cr-Commit-Position: refs/heads/main@{#42554}
>
> Bug: webrtc:347737882
> Change-Id: Ib84c9c0e20763348abfae838f2fb1aff31581a55
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355943
> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
> Owners-Override: Jeremy Leconte <jleconte@google.com>
> Reviewed-by: Jeremy Leconte <jleconte@google.com>
> Commit-Queue: Jeremy Leconte <jleconte@google.com>
> Cr-Commit-Position: refs/heads/main@{#42564}

Bug: webrtc:347737882
Change-Id: I020d51892982a6e776bb169584c27f7c1360d521
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356142
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42574}
2024-07-02 14:42:35 +00:00
Johannes Kron
e0287f2797 Add default values and field trials to QualityConvergenceMonitor
Add default values and a static Create() function that determines
the parameters to use based on the specified codec and potential
field trial overrides.

Bug: chromium:328598314
Change-Id: I7a9331a1fd0ed4bd258788760592ea84e535e43b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355903
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Markus Handell <handellm@google.com>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42567}
2024-07-01 22:37:46 +00:00
Björn Terelius
b58937316b Revert "Rewrite simulcast config to equivalent SVC for vp9 simulcast"
This reverts commit 86ff48adae.

Reason for revert: Speculative revert due to failing downstream tests

Original change's description:
> Rewrite simulcast config to equivalent SVC for vp9 simulcast
>
> This allows to utilize libvpx optimizations considerably improving performance.
> The change happens inside libvpx_vp9_encoder and is invisible to other parts of webrtc.
>
> This CL includes unit tests, an E2E test already exists: StandardPath/PeerConnectionEncodingsIntegrationParameterizedTest.Simulcast/VP9 in peerconnection_unittests.
>
> Bug: webrtc:347737882
> Change-Id: Ic48316ad597700ed07e594d592413cf84b6b20d4
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355003
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42554}

Bug: webrtc:347737882
Change-Id: Ib84c9c0e20763348abfae838f2fb1aff31581a55
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355943
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Jeremy Leconte <jleconte@google.com>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#42564}
2024-06-29 17:47:18 +00:00
Ilya Nikolaevskiy
86ff48adae Rewrite simulcast config to equivalent SVC for vp9 simulcast
This allows to utilize libvpx optimizations considerably improving performance.
The change happens inside libvpx_vp9_encoder and is invisible to other parts of webrtc.

This CL includes unit tests, an E2E test already exists: StandardPath/PeerConnectionEncodingsIntegrationParameterizedTest.Simulcast/VP9 in peerconnection_unittests.

Bug: webrtc:347737882
Change-Id: Ic48316ad597700ed07e594d592413cf84b6b20d4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355003
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42554}
2024-06-27 14:27:35 +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
Johannes Kron
1d7d0e6e2c Remove WebRTC-AutomaticAnimationDetectionScreenshare experiment
The experiment has been disabled for several years and the code
is not maintained.

Bug: webrtc:42221141
Change-Id: I631e4bd476ca01eb5312d4077c9467e77c42ff78
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/351143
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42364}
2024-05-22 10:36:49 +00:00
Per K
0ce7de7aa8 Remove RtpPacketHistory::PaddingMode::kPriority
And cleanup WebRTC-PaddingMode-RecentLargePacket

Bug: webrtc:42225520
Change-Id: If84588d9dbd5767c14174ae62a7f6d8284b8ef4a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349621
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42327}
2024-05-16 14:06:24 +00:00
Per K
d1a8ce588f Add field trial to reset BWE if Network adapter changes instead of if IP address changes
Bug: webrtc:14928, webrtc:42225231
Change-Id: I7c3d8d87cb2d0fe8dad5794c6247876c17c73f74
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350561
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42324}
2024-05-16 12:17:51 +00:00
Danil Chapovalov
b0fe794d7d Delete expired field trial WebRTC-SignalNetworkPreferenceChange
Bug: webrtc:42221944
Change-Id: I786d73f5ede27d4ab40a9b3b2fef49da45bd3444
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/350302
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42274}
2024-05-11 09:50:40 +00:00
Sergey Silkin
f5e9f11994 Delete WebRTC-LibaomAv1Encoder-DisableFrameDropping
This was a kill-switch for frame dropping in AV1 encoder. The frame dropping was enabled in June 2023. Since we have not heard about about any issues related to the frame dropping, we can remove the field trial.

Bug: webrtc:42225542
Change-Id: I4b2f1d5ff61e4ae3a4a7fc6711bb83f7d522fc6a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349921
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42241}
2024-05-07 07:47:32 +00:00
Danil Chapovalov
01ff41e594 Cleanup expired field trial WebRTC-Avx2SupportKillSwitch
Bug: webrtc:42221774
Change-Id: I92fab7d14fd0c2a9fd10e91fbad9c2831d7415ac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349643
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42233}
2024-05-06 14:33:21 +00:00
Danil Chapovalov
8b7d89a85f Cleanup expired field trial WebRTC-Video-QualityRampupSettings
Bug: webrtc:42221607
Change-Id: I72f271a2063ed543cd45b771991ce73208ed45c2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349721
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42225}
2024-05-03 15:04:51 +00:00
Sergey Silkin
5ed460aa31 Remove WebRTC-BoostedScreenshareQp
Bug: b/42234864, b/337757868
Change-Id: Iad1a6ec4833868e3a8b60d85847c2d2367fefb88
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349720
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42224}
2024-05-03 11:36:15 +00:00
Danil Chapovalov
111d957ada Cleanup unused field trial WebRTC-Video-BandwidthQualityScalerSettings
Bug: webrtc:42221607, webrtc:42223115
Change-Id: I6eda70ce7c3e914f57fe1a70f33891a5742d985b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349482
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42220}
2024-05-03 10:02:00 +00:00
Per K
363917a1dd Add support for receiving CongestionControlFeedback to RTCPReceiver
Support for parsing the packet is gated behind field trial
WebRTC-RFC8888CongestionControlFeedback/Enabled/.

Bug: webrtc:15368
Change-Id: Ib4478e821fe5a43510af5131543e7861cf54d901
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/348664
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42215}
2024-05-02 21:01:38 +00:00
Qingsi Wang
81eca8306b Revert "Remove unused WebRTC-Bwe-InjectedCongestionController"
This reverts commit c95cb6bd3e.

Reason for revert: Breaks downstream project

Original change's description:
> Remove unused WebRTC-Bwe-InjectedCongestionController
>
> Instead, PeerConnectionFactoryDependencies.network_controller_factory is
> used if it exists.
>
> Bug: webrtc:8415
> Change-Id: I37d5cc7325072bf1d87993e53949f1b97c277f55
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347860
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Commit-Queue: Per Kjellander <perkj@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#42120}

Bug: webrtc:8415
Change-Id: I3800ce1a65e7ef40313d67308a24d5daa6d3a028
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349560
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42213}
2024-05-02 18:32:19 +00:00
Per K
d48a18fbbb Limit pacingfactor by upper link capacity estimate.
If pacing rate, (current loss based bwe * pacing factor) is larger than the current upper link capacity estimate, reduce pacing factor to max of current bwe and upper link capacity.

Bug: webrtc:42220543
Change-Id: I5246da1f38530f8d411e7314adaa8651fc848f48
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349601
Reviewed-by: Diep Bui <diepbp@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42210}
2024-05-02 15:13:56 +00:00
Jesús de Vicente Peña
eeff850106 Adding the option to experiment with the max_allowed_excess_render_blocks parameter.
Bug: webrtc:337900458
Change-Id: I2108c7c67eb9aa460932efe881760924109b1915
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349460
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42207}
2024-05-02 12:20:23 +00:00
Philipp Hancke
acfd279a14 av1: make packetization generate more evenly sized packets
Implements a two-pass approach to packetization which creates
packets of an even size similar to RtpPacketizer::SplitAboutEqually.
This improves the bandwidth estimation.

The algorithm does a first pass with the existing packetizer, then
iterates through the resulting packet sizes and sums up the bytes left unused in each packet.
It then calculates a new maximum packet length as
  configured_max_packet_len - ((unused_bytes - packets + 1) / packets)
adjusts for the overhead and re-runs the packetization algorithm.

For example, a list of OBUs with sizes
  {1206, 1476, 1431}
currently gets packetized greedily as payload sizes
  {1200, 1200, 1200, 523}
With this change, it gets packetized as
  {1032, 1032, 1032, 1028}

This change is guarded by the field trial
  WebRTC-Video-AV1EvenPayloadSizes
which is acting as a rollout flag.

BUG=webrtc:15927

Co-authored-by: Shyam Sadhwani <shyamsadhwani@meta.com>
Change-Id: I4f0b3c27de6f06104908dd769c4dd1f34115712c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/348100
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42203}
2024-04-30 15:46:06 +00:00
Emil Lundmark
c21a150b25 Use Google issue tracker bug IDs in the field trial registry
This migration was done semi-automatically. I didn't manage to find any
corresponding bug ID for chromium:413437 nor chromium:949536 in the new
issue tracker. Since these are policy-exempt anyway I opted for setting
the ID to NO_BUG and leaving a comment with the old ID.

Bug: None
Change-Id: If2d212ba554e40c42193b51f62a7da8a7f783d41
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349267
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Emil Lundmark <lndmrk@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42190}
2024-04-29 07:49:17 +00:00
Jesús de Vicente Peña
3703b3500c Using Ntp times for the absolute send time.
Bug: webrtc:15930
Change-Id: Ie460ac6e3561efafeb11bf36735cb6f33bdfd8a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349162
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Lionel Koenig Gélas <lionelk@google.com>
Cr-Commit-Position: refs/heads/main@{#42183}
2024-04-26 12:59:09 +00:00