Commit Graph

33459 Commits

Author SHA1 Message Date
d25af8ceac doc: document rtp payload type mapping behaviour
documents the various payload type mappers used by WebRTC.

BUG=webrtc:12194,webrtc:12295
No-try: true

Change-Id: I88e2388f54e72db5e5fe0f72fa4fe4c455c99679
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220936
Commit-Queue: Philipp Hancke <phancke@nvidia.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34227}
2021-06-04 06:23:32 +00:00
bc8e17583a Roll chromium_revision a11573a242..b54a8c30e7 (888935:889150)
Change log: a11573a242..b54a8c30e7
Full diff: a11573a242..b54a8c30e7

Changed dependencies
* src/build: 2c4263f17a..bf4ecd926c
* src/buildtools: cd7b8c0c22..eb65cc3594
* src/ios: 583ff3aa05..5bd5c4f9b4
* src/testing: 140293d8d4..10cb761b19
* src/third_party: 7dd03bb83f..d030bb4cd0
* src/third_party/androidx: 5wEAJbMDQJnCxXbN6hMn66IR4akg1G25HQtc_8_7Vz0C..8d-gGcc4KVhOnn2B-Od7eR421Q-sNZQ0U7dMrNz_VX4C
* src/third_party/depot_tools: 85557a08f4..9705687c25
* src/third_party/icu: f022e298b4..a0718d4f12
* src/third_party/perfetto: d355130be3..ae2171b89c
* src/tools: 455291f3e9..5617cf30e7
DEPS diff: a11573a242..b54a8c30e7/DEPS

Clang version changed llvmorg-13-init-10392-gd3676d4b:llvmorg-13-init-11649-g4d788fb8
Details: a11573a242..b54a8c30e7/tools/clang/scripts/update.py

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Id1593e0a5d9bb5103d9d81f4ce9539d6566e7a24
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221301
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34226}
2021-06-04 05:23:36 +00:00
ffbfba979f Added PeerConnectionObserverJni::OnRemoveTrack()
Change-Id: I0880caa77a1097f56c560152e85c9ca29242f825

This PR add support for the `PeerConnectionObserverJni::OnRemoveTrack()`
event on Java, allowing to be notified when a remote track has been
removed. It's a very thing JNI wrapper on top of C++ API, being mostly
similar to other already available events like `track` and `addTrack`.

In Javascript API, tracks are not "removed" explicitly from the
PeerConnection, but instead receiver PeerConnection gets notified that
they have been removed from the streams they are associated to, and when
no `MediaStream` object has that track, it's considered that the track
has been removed from the PeerConnection. In Java and C++ APIs there's no
`MediaStreamObserver` class, so there's no way to listen to the
`removeTrack` event the same way happens in Javascript API, but instead
C++ API has a `removeTrack` event at PeerConnection level. This patchset
just only wraps and expose this `removeTrack` event from the C++ API to
the Java API.

This PR has been sponsored by Atos Research and Innovation
(https://atos.net/en/about-us/innovation-and-research).

Bug: webrtc:12850
Change-Id: I0880caa77a1097f56c560152e85c9ca29242f825
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/218847
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Xavier Lepaul‎ <xalep@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34225}
2021-06-03 19:24:55 +00:00
1050fbca91 Remove synchronization from VideoSendStream construction.
* Make VideoSendStream and VideoSendStreamImpl construction non-blocking.
* Move ownership of the rtp video sender to VideoSendStream.
* Most state is constructed in initializer lists.
* More state is now const (including VideoSendStreamImpl ptr)
* Adding thread checks to classes that appear to have had a race before
  E.g. RtpTransportControllerSend. The change in threading now actually
  fixes an issue we weren't aware of.
* Moved from using weak_ptr to safety flag and made some PostTask calls
  cancellable that could potentially have been problematic. Initalizing
  the flag without thread synchronization is also simpler.

This should speed up renegotiation significantly when there are
multiple channels. A follow-up change will improve SetSend as well
which is another costly step during renegotiation.

Bug: webrtc:12840
Change-Id: If4b28da5a085643ce132c7cfcf80a62cd1a625c5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221105
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34224}
2021-06-03 19:13:45 +00:00
c2b4d9be15 Roll chromium_revision fb5254ac9f..a11573a242 (888818:888935)
Change log: fb5254ac9f..a11573a242
Full diff: fb5254ac9f..a11573a242

Changed dependencies
* src/base: 35b913846d..b006ae39d1
* src/ios: d3def84971..583ff3aa05
* src/testing: b97a23bcf3..140293d8d4
* src/third_party: 49f08c53e5..7dd03bb83f
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/ec690bb8de..712eb08096
* src/third_party/depot_tools: c8f63d390c..85557a08f4
* src/third_party/perfetto: 8545284860..d355130be3
* src/tools: c527efca77..455291f3e9
* src/tools/luci-go: git_revision:abd26383ec208bf080ee8585d1495e7f75483ec9..git_revision:c9957ed0ce0fd363aac127056344eba1b873bad0
* src/tools/luci-go: git_revision:abd26383ec208bf080ee8585d1495e7f75483ec9..git_revision:c9957ed0ce0fd363aac127056344eba1b873bad0
* src/tools/luci-go: git_revision:abd26383ec208bf080ee8585d1495e7f75483ec9..git_revision:c9957ed0ce0fd363aac127056344eba1b873bad0
DEPS diff: fb5254ac9f..a11573a242/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Ide8dbdaaacdb5fb504622a2d893ea4b416f4df83
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221260
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34223}
2021-06-03 18:24:05 +00:00
52c7fd6be5 Modernize style in RemoteBitrateEstimatorAbsSendTime implementation
Use dedicated DataSize/DataRate/Time classes instead plain integers
this avoid subtle overflows and makes code easier to follow.

Hide helper structs Probe and Cluster as private structs.
User foreach loops where possible.
Make private constants constexpr instead of using enum hack

Bug: None
Change-Id: I3e71dc1254d7ff8ce71e051de53f0459bfa5264d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219795
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34222}
2021-06-03 14:37:33 +00:00
43eb4f5886 Roll chromium_revision fee5f397ef..fb5254ac9f (888712:888818)
Change log: fee5f397ef..fb5254ac9f
Full diff: fee5f397ef..fb5254ac9f

Changed dependencies
* src/base: d602a0b2fc..35b913846d
* src/build: 20ee3d5c60..2c4263f17a
* src/ios: 337b65b7a2..d3def84971
* src/testing: 1e3826a9d7..b97a23bcf3
* src/third_party: 86b3f37f3a..49f08c53e5
* src/third_party/androidx: 8d-gGcc4KVhOnn2B-Od7eR421Q-sNZQ0U7dMrNz_VX4C..5wEAJbMDQJnCxXbN6hMn66IR4akg1G25HQtc_8_7Vz0C
* src/tools: f1cb971510..c527efca77
* src/tools/luci-go: git_revision:3e796d36914b6ddf5311374284e3ffa06c24fc7e..git_revision:abd26383ec208bf080ee8585d1495e7f75483ec9
* src/tools/luci-go: git_revision:3e796d36914b6ddf5311374284e3ffa06c24fc7e..git_revision:abd26383ec208bf080ee8585d1495e7f75483ec9
* src/tools/luci-go: git_revision:3e796d36914b6ddf5311374284e3ffa06c24fc7e..git_revision:abd26383ec208bf080ee8585d1495e7f75483ec9
DEPS diff: fee5f397ef..fb5254ac9f/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Ic40dad6de0058a8e452111b78759a6cadad79255
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221221
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34221}
2021-06-03 13:01:39 +00:00
096014345f Add a function to check if the packet in a PacketResult has been received.
Bug: webrtc:12839
Change-Id: I0ee2b8fa0dfffd2bda2cba0e360b5f5815bbca9d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221102
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Fanny Linderborg <linderborg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34220}
2021-06-03 12:42:49 +00:00
47f5f8c160 Reduce usage of RtpHeaderParser::CreateForTest in favor of RtpPacket
As a step to delete the legacy rtp packet parser.

Bug: None
Change-Id: I2aae86bc8847acd76cdd89007273a99f0298fdb9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221109
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34219}
2021-06-03 12:29:09 +00:00
943e2e6a57 Revert "Fix incorrect SSRC in RtpPacketSendInfo for RTX packets."
This reverts commit 82aa094a970a2c37634378910116bbe1d5abc633.

Reason for revert: Causes regression for an upstream project

Original change's description:
> Fix incorrect SSRC in RtpPacketSendInfo for RTX packets.
>
> Bug: webrtc:12713
> Change-Id: I1b5fb947ffe4ac80e23a6b891ea1a2c2156ba81f
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/218000
> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#34177}

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:12713
Change-Id: I20facf724bdb0136e7eb079c4834575184764174
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221202
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34218}
2021-06-03 11:59:39 +00:00
fa3ce637fa Simplify VideoSendStreamImpl constructor.
Also renaming 'worker_queue_' variables to 'rtp_transport_queue' to
avoid confusion with the worker thread.

Bug: webrtc:12840
Change-Id: Ia647a9a5ed8fdc59929f5b7ac222328ccd129a18
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221140
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34217}
2021-06-03 11:48:39 +00:00
84f4ca62f0 Remove workaround for broken nearby build in Chrome
https://crbug.com/1212611 was fixed. I confirmed that the Chrome
build works with these includes removed.

Bug: None
Change-Id: I68b0b6fed0562c6f6c981ddb326aa628352382fd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221200
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34216}
2021-06-03 11:44:09 +00:00
e902f28d2a Make VideoSendStreamImpl::configured_pacing_factor_ const
Bug: webrtc:12840
Change-Id: Ie479aa39437e373f3dc84de663dc5641d847ded9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221110
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34215}
2021-06-03 10:57:19 +00:00
28e9653b1f Remove dependency on RtpVideoSenderInterface from EncoderRtcpFeedback.
This removes the two step initialization and explicit circular
dependency between the sender and the observer that complicates
construction and making members const that should be.
Moving forward the encoder feedback instance will move to a different
class, so this CL is one part of making that change possible.

Also removing an unnecessary mutex and replacing with a checker.

Bug: webrtc:12840
Change-Id: I21694806b122592de0cd1e1d96f241d339a0860f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221108
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34214}
2021-06-03 10:46:49 +00:00
1d2b22e193 Use pixels from single active stream if set for balanced degradation settings.
Bug: none
Change-Id: Id9d8dd5a447ea99f080fc597b28afd9fbbe90db2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220922
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34213}
2021-06-03 10:20:56 +00:00
2a25a96973 Disable flacky tests on mac bots
Bug: webrtc:12846
Change-Id: I4bde0e2533e499c0dcc92582288c3c22a2662b08
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221201
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34212}
2021-06-03 09:40:38 +00:00
f3ff3c5b77 Reinstate killswitch for WebRTC-Bwe-ReceiverLimitCapsOnly.
Bug: webrtc:12306
Change-Id: Idd643c3152252732562553f207d0a6335773e98a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221043
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34211}
2021-06-03 09:15:58 +00:00
ab229b0706 Add documentation for RTC event log
Bug: webrtc:12841
Change-Id: I9312a4660b8fd039019795a0a90b2cda25dc773c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221045
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34210}
2021-06-03 09:03:18 +00:00
31b564959c Update comment for RtpVideoStreamReceiver2::RequestPacketRetransmit.
Bug: none
Change-Id: I8a9d13e23e403eac3d31a30fa77336568141c763
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220841
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34209}
2021-06-03 07:41:39 +00:00
e93dc74483 Roll chromium_revision c165693ba5..fee5f397ef (888523:888712)
Change log: c165693ba5..fee5f397ef
Full diff: c165693ba5..fee5f397ef

Changed dependencies
* src/base: 4de14f08ff..d602a0b2fc
* src/build: 9d9c835989..20ee3d5c60
* src/buildtools/third_party/libc++abi/trunk: da3e6cbc62..7e3b76855b
* src/buildtools/third_party/libunwind/trunk: c0776fc649..950faeeabc
* src/ios: 37411e5ef4..337b65b7a2
* src/testing: 8191f849c0..1e3826a9d7
* src/third_party: 175df41f82..86b3f37f3a
* src/third_party/androidx: 5wEAJbMDQJnCxXbN6hMn66IR4akg1G25HQtc_8_7Vz0C..8d-gGcc4KVhOnn2B-Od7eR421Q-sNZQ0U7dMrNz_VX4C
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/053e386fd4..ec690bb8de
* src/third_party/depot_tools: cd3696cf7e..c8f63d390c
* src/third_party/googletest/src: a3460d1aee..53495a2a7d
* src/third_party/perfetto: 34eb6a1472..8545284860
* src/tools: 55a2b2c132..f1cb971510
* src/tools/luci-go: git_revision:d8815e36ea7b66a4b8c9d69fcc2322012d25715f..git_revision:3e796d36914b6ddf5311374284e3ffa06c24fc7e
* src/tools/luci-go: git_revision:d8815e36ea7b66a4b8c9d69fcc2322012d25715f..git_revision:3e796d36914b6ddf5311374284e3ffa06c24fc7e
* src/tools/luci-go: git_revision:d8815e36ea7b66a4b8c9d69fcc2322012d25715f..git_revision:3e796d36914b6ddf5311374284e3ffa06c24fc7e
DEPS diff: c165693ba5..fee5f397ef/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I0783d4cf3724032c470a9c6cdb99b77f2d67dd2b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221181
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34208}
2021-06-03 02:54:05 +00:00
a004715d13 Integrate ClippingPredictor into AudioProcessingImpl and AgcManagerDirect
Integrate ClippingPredictor in AgcManagerDirect and
AudioProcessingImpl. Disable functionality by default.

Bug: webrtc:12774
Change-Id: Ic67a47f439c89b75066506fca8acaf636d8812f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221100
Commit-Queue: Hanna Silen <silen@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34207}
2021-06-03 02:35:05 +00:00
4b3a06139b Add ClippingPredictor implementation
Add implementation for clipping prediction and clipped level step estimation.

Bug: webrtc:12774
Change-Id: I855d22980302aac7d49078ca29755f9422af9cb5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220935
Commit-Queue: Hanna Silen <silen@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34206}
2021-06-02 22:45:46 +00:00
565ad610fa Roll chromium_revision 936a99501f..c165693ba5 (888404:888523)
Change log: 936a99501f..c165693ba5
Full diff: 936a99501f..c165693ba5

Changed dependencies
* src/base: 46f9df2d99..4de14f08ff
* src/build: 1c67111afc..9d9c835989
* src/ios: 43e320696f..37411e5ef4
* src/testing: d0ccab45c8..8191f849c0
* src/third_party: 48be653f77..175df41f82
* src/third_party/harfbuzz-ng/src: 1dffb55361..7ab0f4eda9
* src/third_party/perfetto: 5f30314fb7..34eb6a1472
* src/tools: af5593d971..55a2b2c132
DEPS diff: 936a99501f..c165693ba5/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Ib8987b41ba38a030c1ca5c73d958e35b96f97e64
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221122
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34205}
2021-06-02 19:38:36 +00:00
a43953a518 Add ClippingPredictor config in AudioProcessing config
Bug: webrtc:12774
Change-Id: Id8cdb6b5499a22cbca40d424cf936f81c1e7d8d7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221104
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Hanna Silen <silen@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34204}
2021-06-02 16:16:25 +00:00
cbdbb8c166 Add ability to adjust the suppressor smoothing in AEC3
Bug: b/177359044
Change-Id: I5eddb6fa6f01aa14426161204e37a9097b182234
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217889
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34203}
2021-06-02 15:21:35 +00:00
bd933ee29a SdpOfferAnswerHandler: Significantly reduce audio impairment.
It was found from Chrome tracing that worker packet progression in
https://webrtc.github.io/samples/src/content/peerconnection/negotiate-timing/
during renegotiation of 100 transceivers is hindered by a multi-hundred
millisecond Invoke from the signaling to the worker thread. This
causes audio impairment.

Fix this by splitting the single Invoke into a series of Invokes,
allowing packets received during the renegotiation to be processed
between the worker invocations.

Experimental data of negotiation from 1 to 100 video transceivers

WebRtcDistinctWorkerThread OFF, before change:
4415.60 milliseconds, audio impairment 29760
4216.00 milliseconds, audio impairment 25560
4298.40 milliseconds, audio impairment 25440

WebRtcDistinctWorkerThread OFF, after change:
4258.70 milliseconds, audio impairment 26280
4255.50 milliseconds, audio impairment 25920
4363.10 milliseconds, audio impairment 25200

WebRtcDistinctWorkerThread ON, before change:
4407.80 milliseconds, audio impairment 24840
4541.00 milliseconds, audio impairment 26160
4377.80 milliseconds, audio impairment 17040

WebRtcDistinctWorkerThread ON, after change:
4364.80 milliseconds, audio impairment 0
4174.30 milliseconds, audio impairment 0
4309.00 milliseconds, audio impairment 0

We should reconsider this split after lazy decoders and decoder stream
projects have shipped, see
- bugs.webrtc.org/12462
- crbug.com/1157227
- crbug.com/1187289

Bug: webrtc:12840, webrtc:12462, chromium:1157227, chromium:1187289
Change-Id: I8e3b3943bd76f09da74b457690799415335b51f5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221103
Commit-Queue: Markus Handell <handellm@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34202}
2021-06-02 15:15:04 +00:00
7444b19833 Add integration test for active stream toggling.
Bug: webrtc:12778
Change-Id: I0441d05daef0b2003e6a5710c7a2b30978ffb6ae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220930
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34201}
2021-06-02 13:51:35 +00:00
44107890bb Roll chromium_revision e53f664c6c..936a99501f (888291:888404)
Change log: e53f664c6c..936a99501f
Full diff: e53f664c6c..936a99501f

Changed dependencies
* src/base: 2da50e266c..46f9df2d99
* src/build: 315c86c03e..1c67111afc
* src/ios: 69983d6297..43e320696f
* src/testing: 4c66b38dd1..d0ccab45c8
* src/third_party: e51e46fe7f..48be653f77
* src/third_party/freetype/src: 0d1c306e51..2a6665a4c0
* src/third_party/harfbuzz-ng/src: b37f03f16b..1dffb55361
* src/third_party/perfetto: 31cfc47480..5f30314fb7
* src/tools: c089269b8a..af5593d971
* src/tools/luci-go: git_revision:03ab00ce4982877f2d4a0b0db48cd355e5ca65ab..git_revision:d8815e36ea7b66a4b8c9d69fcc2322012d25715f
* src/tools/luci-go: git_revision:03ab00ce4982877f2d4a0b0db48cd355e5ca65ab..git_revision:d8815e36ea7b66a4b8c9d69fcc2322012d25715f
* src/tools/luci-go: git_revision:03ab00ce4982877f2d4a0b0db48cd355e5ca65ab..git_revision:d8815e36ea7b66a4b8c9d69fcc2322012d25715f
DEPS diff: e53f664c6c..936a99501f/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I8f0a1370ce6baaba6077df2492fa835675d0aed5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221081
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34200}
2021-06-02 13:16:04 +00:00
fccb052ee3 Add event traces to interesting places in WebRTC.
Bug: webrtc:12840
Change-Id: I2fe749039059c9f3d6da064dce10d9c24a27d02e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221044
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34199}
2021-06-02 13:06:04 +00:00
486b0401c5 Make VP8 DefaultTemporalLayers always report TL count even with no rate.
If at creation of a VP8 encoder there is not enough bitrate to enable a
given spatial layer - the configuration won't be updated to indicate
the correct temporal layer count. This means GetEncoderInfo() will
indicate lack of temporal layer support, which triggers issues with
rate allocation.

This CL fixes that by always setting an initial bitrate of 0bps.

Bug: webrtc:12788
Change-Id: I10974e85446b58e597d2ca415eaf2550306ce986
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220929
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34198}
2021-06-02 10:35:07 +00:00
1c7ff0d001 dcsctp: Stay in stream if not producing fragment
If there is only little space left in a packet, and the remaining data
for a partially sent message is much larger, it will not generate a
small fragment for this message. This is to avoid fragmenting a message
into too many packets, as that increases the risk of losing messages
when partial reliability is enabled.

And when a stream doesn't want to generate a too small fragment, the
scheduler should _not_ switch streams. It should only switch streams
when a message has been fully sent. Previously, it would switch stream
when a stream doesn't want to produce a message, but as noted above,
that could happen for other reasons.

This required some refactoring, which also increased its robustness by
now only doing explicit stream switching on fully produced messages.

Bug: webrtc:12832
Change-Id: Icb213774fd0d26fba5640b00aac0407d393e4bfc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220937
Commit-Queue: Victor Boivie <boivie@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34197}
2021-06-02 09:45:59 +00:00
5981bf2eb6 Add resolution alignment properties to RTCVideoEncoder protocol.
With this change, RTCVideoEncoder can specify:
- requested_resolution_alignment,
- apply_alignment_to_all_simulcast_layers
in the same way scaling_settings is specified.

Change-Id: I3de79a2eabaae581d6a9f2ef3e39496b9545a4f5

Bug: webrtc:12829
Change-Id: I3de79a2eabaae581d6a9f2ef3e39496b9545a4f5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220933
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Abby Yeh <abbyyeh@webrtc.org>
Commit-Queue: Peter Hanspers <peterhanspers@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34196}
2021-06-02 09:30:06 +00:00
aaa835c7b6 Update WebRTC code version (2021-06-02T04:02:07).
TBR=webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com,mbonadei@webrtc.org

Bug: None
Change-Id: I5159b5857a2d147ff5db8aa5d0d1f8e748a020f1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221060
Reviewed-by: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34195}
2021-06-02 05:12:58 +00:00
f32b400505 Roll chromium_revision 45bbaf2c3c..e53f664c6c (888151:888291)
Change log: 45bbaf2c3c..e53f664c6c
Full diff: 45bbaf2c3c..e53f664c6c

Changed dependencies
* src/base: ce32b174c9..2da50e266c
* src/ios: 602dc9f9bb..69983d6297
* src/testing: 9eb686fdda..4c66b38dd1
* src/third_party: 155f8a29fa..e51e46fe7f
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/26af1f63b6..053e386fd4
* src/third_party/depot_tools: 30cde45e06..cd3696cf7e
* src/third_party/perfetto: d53f42ae59..31cfc47480
* src/tools: 6f3006eca1..c089269b8a
DEPS diff: 45bbaf2c3c..e53f664c6c/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: Idf364ecc5c7978b36ceb0bdd954be9925f20dacb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221061
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34194}
2021-06-02 04:45:58 +00:00
62678f5c7b Roll chromium_revision 10da87c3f6..45bbaf2c3c (888035:888151)
Change log: 10da87c3f6..45bbaf2c3c
Full diff: 10da87c3f6..45bbaf2c3c

Changed dependencies
* src/base: 2ca551e60b..ce32b174c9
* src/build: 5fc569acb3..315c86c03e
* src/ios: 36fad7d567..602dc9f9bb
* src/testing: c829c1dd65..9eb686fdda
* src/third_party: 83e94aa41c..155f8a29fa
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/12d96cda9c..26af1f63b6
* src/third_party/depot_tools: 424504a1b2..30cde45e06
* src/third_party/perfetto: 0d6614b33d..d53f42ae59
* src/tools: 62445a37e8..6f3006eca1
DEPS diff: 10da87c3f6..45bbaf2c3c/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I4eefcd85bcefe7764cfc321bde79cf29412ac781
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220830
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34193}
2021-06-01 22:20:24 +00:00
bf952fa207 Roll chromium_revision ed24ed8d5d..10da87c3f6 (887902:888035)
Change log: ed24ed8d5d..10da87c3f6
Full diff: ed24ed8d5d..10da87c3f6

Changed dependencies
* src/base: 47943882fb..2ca551e60b
* src/build: 2b0e673533..5fc569acb3
* src/buildtools: fba2905150..cd7b8c0c22
* src/ios: 2795ac478a..36fad7d567
* src/testing: 345bb3dfa9..c829c1dd65
* src/third_party: 330fd4a954..83e94aa41c
* src/third_party/depot_tools: 0694fa65f8..424504a1b2
* src/third_party/perfetto: b3f455e9ed..0d6614b33d
* src/tools: 6f518dc84c..62445a37e8
DEPS diff: ed24ed8d5d..10da87c3f6/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I3ed6c9519fcd653efff96a77e62d323210744e1e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220829
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34192}
2021-06-01 19:00:51 +00:00
78c73477c7 Add DesktopCaptureOption enumerate_current_process_windows to avoid hang
Enumerating windows owned by the current process on Windows has some
complications due to the GetWindowText*() APIs potentially causing a
deadlock. The APIs will send messages to the window's message loop, and
if the message loop is waiting on this operation we will enter a
deadlock.

I previously put in a mitigation for this [1] which brought the
incidence rate down by an order of magnitude, but we are still seeing
this issue fairly frequently.

So, I've added  DesktopCaptureOption enumerate_current_process_windows
which allows consumers to avoid this issue completely by ignoring
these potentially problematic windows.

By default the flag is set to true which equates with the current
behavior, consumers can set the flag to false to get the new behavior.

I've also updated all the capturers that enumerate windows on Windows
to respect the option.

[1] https://webrtc-review.googlesource.com/c/src/+/195365

Bug: chromium:1152841
Change-Id: I0e0d868957d6fbe1e607a440b3a909d005c93ccf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219380
Commit-Queue: Austin Orion <auorion@microsoft.com>
Reviewed-by: Joe Downing <joedow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#34191}
2021-06-01 18:20:50 +00:00
803fdc4106 dcsctp: Stay within stream while producing from it
The way that the "next stream" was picked when round-robin cycling was
flawed. When a message was produced in its entirety, the "next stream"
would be put at a stream identifier value that was just larger than what
was previously used. And then, for each fragment that was to be created,
it would try to resolve the nearest stream (above or equal to that
number) that had messages to send - always starting from that stream id
that didn't necessarily point to the stream for which fragments were
actually produced.

For example, if the previous stream ID for which a message was fully
produced on was 5, then the next_stream_id would be set to 6, and then
when producing next fragment, it might have produced something from
stream_id=1, because that was the only stream with messages in it. It
wouldn't update next_stream_id at this time; it would still be 6.

After a single fragment had been produced from that stream, a message
was queued on stream_id=6. The next time a fragment was to be produced,
it would not continue one stream_id=1, but instead pick the new stream,
which would suddenly produce a new fragment (with B flag set) while the
previous message (from stream_id=1) wasn't finished yet.

The fix is simple; Just ensure that we continue iterating from where we
ever produce a fragment from.

Bug: webrtc:12832
Change-Id: Icc761c572ed200db607a7609dab1ac6a8aeb2f04
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220938
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Victor Boivie <boivie@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34190}
2021-06-01 17:24:06 +00:00
f865444877 Make AV1 respect spatial layer active flag.
Bug: webrtc:12788
Change-Id: Ied629e1635b6ff9bf92fab2d1af708163f9dd28c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220928
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34189}
2021-06-01 16:07:25 +00:00
d23628dfb6 Remove RecordingState::keyframe_needed.
This variable is not used, always set to false but complicates
things for `keyframe_generation_requested_` as setting keyframe_needed
requires keyframe_generation_requested_ to be read synchronously from
what soon will be a different thread than where SetAndGetRecordingState
is called on.

Bug: webrtc:11993
Change-Id: I25675d9b70c9ec96a2542e7cf5480c835ea984eb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220840
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34188}
2021-06-01 15:39:41 +00:00
d99430410b Call: introduce SendStats.
Call send statistic updates are initiated on the send
transport sequence which forced calls to PostTask to the
worker thread which keeps several related attributes
protected by it.

Change this by:
* Using std::atomics for three attributes where synchronization
doesn't really matter and which can be accessed on either
context.
* Introducing a thread-compatible internal class which keeps
the statistics protected by the send transport sequence, and
emits UMA statistics on destruction.

The change also achieves the following trivial changes:
* The call origin time is now tracked by a proper
webrtc::Timestamp.
* The explicit use of the |send_transport_queue_| was replaced by
a more relaxed sequence checker.

Bug: webrtc:11993
Change-Id: I428a4d98b5fd2fd31222f62e597a9d61a3d4899f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220931
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34187}
2021-06-01 15:23:36 +00:00
e9fa954068 Roll chromium_revision 03cca1960d..ed24ed8d5d (887795:887902)
Change log: 03cca1960d..ed24ed8d5d
Full diff: 03cca1960d..ed24ed8d5d

Changed dependencies
* src/build: 79538b13ec..2b0e673533
* src/ios: 86d93e1021..2795ac478a
* src/testing: dd9d32d6cd..345bb3dfa9
* src/third_party: 94411bea33..330fd4a954
* src/tools: 4e0ef8c556..6f518dc84c
DEPS diff: 03cca1960d..ed24ed8d5d/DEPS

No update to Clang.

TBR=chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com,
BUG=None

Change-Id: I0c27b536f25264180641d908fde203d2ad9473f2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220827
Reviewed-by: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34186}
2021-06-01 10:50:04 +00:00
75941453c5 Fix incorrect fps_allocation printed by EncoderInfo::ToString()
Bug: webrtc:12788
Change-Id: I6188a4041265a16f30d37806e555dcb3210cb653
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220927
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34185}
2021-06-01 09:53:34 +00:00
5cb983b353 Add basic synchronization function info to g3doc
Bug: None
Change-Id: I94904ee8d20a333dbfe762d7413e845a526ec294
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220925
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34184}
2021-06-01 09:05:23 +00:00
3907e7b160 AudioSendStream: s/worker_queue_/rtp_transport_queue_/g
The 'worker' noun in WebRTC is tied to the worker thread.
Hence naming an unrelated queue to something with worker
confuses code reading.

Change this to something which can't reasonably be confused
with the worker thread.

Bug: webrtc:11993
Change-Id: Icdcc728cf3dd9eb020f922367eebd0c520814568
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220934
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34183}
2021-06-01 08:00:22 +00:00
58b8d297f5 fall back to payload types from lower range after exhausting [96,127]
Both flexfec and AV1 seem not to have created interop issues and falling
back to the lower range is better than skipping the codecs.

BUG=webrtc:12295

Change-Id: I58459133beae4f17b767af92a4e2c9028ab8cbe3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217888
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@nvidia.com>
Cr-Commit-Position: refs/heads/master@{#34182}
2021-06-01 07:50:43 +00:00
504fc192d0 Add ability to pass factory for RtpTransportControllerSend to PeerConnectionFactoryDependencies.
This way we can have custom implementation of RtpTransportControllerSendInterface and pass it properly to Call.
Call relies on RtpTransportControllerSendInterface already so this is natural way to customize RTP related classes.

If there is custom factory present in dependencies it will be used, otherwise default factory will be used.

Intention behind this change is to have ability to have custom QoS with custom parameters.

Bug: webrtc:12778
Change-Id: I5b88957025621ef4bcd63eaa98c218ad213da9c8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/217769
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@nvidia.com>
Cr-Commit-Position: refs/heads/master@{#34181}
2021-06-01 06:57:31 +00:00
40f1a06ca7 Update WebRTC code version (2021-06-01T04:04:24).
TBR=webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com,mbonadei@webrtc.org

Bug: None
Change-Id: Ie6ad228b5c3a4d63c15b76cd634cbc28c67f7db1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220826
Reviewed-by: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#34180}
2021-06-01 05:04:48 +00:00
7d23535108 Populate qualityLimitationDurations stats for outbound RTP streams
Spec: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationdurations
Tested in chromium using wpt/webrtc-stats.

Bug: webrtc:10686
Change-Id: I05ac344e6caa7a663675de4c06ccfd17e1efb6ee
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219300
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34179}
2021-05-31 21:39:37 +00:00
7b4fd5ca59 dcsctp: Determine chunks to be retransmitted fast
Before this CL, before sending out any chunk, all inflight data chunks
were inspected to find out if they were supposed to be retransmitted.

When the congestion window is large, this is a lot of data chunks to
inspect, which takes time.

By having a separate collection for chunks to be retransmitted, this
becomes a much faster operation. In most cases, constant in time.

Bug: webrtc:12799
Change-Id: I0d43ba7a88656eead26d5e0b9c4735622a8d080e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/219626
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Victor Boivie <boivie@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34178}
2021-05-31 21:07:17 +00:00