Commit Graph

26339 Commits

Author SHA1 Message Date
05d43c6f7f Fix getStats() freeze bug affecting Chromium but not WebRTC standalone.
PeerConnection::Close() is, per-spec, a blocking operation.
Unfortunately, PeerConnection is implemented to own resources used by
the network thread, and Close() - on the signaling thread - destroys
these resources. As such, tasks run in parallel like getStats() get into
race conditions with Close() unless synchronized. The mechanism in-place
is RTCStatsCollector::WaitForPendingRequest(), it waits until the
network thread is done with the in-parallel stats request.

Prior to this CL, this was implemented by performing
rtc::Thread::ProcessMessages() in a loop until the network thread had
posted a task on the signaling thread to say that it was done which
would then get processed by ProcessMessages(). In WebRTC this works, and
the test is RTCStatsIntegrationTest.GetsStatsWhileClosingPeerConnection.

But because Chromium's thread wrapper does no support
ProcessMessages(), calling getStats() followed by close() in Chrome
resulted in waiting forever (https://crbug.com/850907).

In this CL, the process messages loop is removed. Instead, the shared
resources are guarded by an rtc::Event. WaitForPendingRequest() still
blocks the signaling thread, but only while shared resources are in use
by the network thread. After this CL, calling WaitForPendingRequest() no
longer has any unexpected side-effects since it no longer processes
other messages that might have been posted on the thread.

The resource ownership and threading model of WebRTC deserves to be
revisited, but this fixes a common Chromium crash without redesigning
PeerConnection, in a way that does not cause more blocking than what
the other PeerConnection methods are already doing.

Note: An alternative to using rtc::Event is to use resource locks and
to not perform the stats collection on the network thread if the
request was cancelled before the start of processing, but this has very
little benefit in terms of performance: once the network thread starts
collecting the stats, it would use the lock until collection is
completed, blocking the signaling thread trying to acquire that lock
anyway. This defeats the purpose and is a riskier change, since
cancelling partial collection in this inherently racy edge-case would
have observable differences from the returned stats, which may cause
more regressions.

Bug: chromium:850907
Change-Id: Idceeee0bddc0c9d5518b58a2b263abb2bbf47cff
Reviewed-on: https://webrtc-review.googlesource.com/c/121567
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26707}
2019-02-15 11:16:11 +00:00
914351de5c Reland "Always offer transport sequence number header extension for audio""
(reverted in https://webrtc-review.googlesource.com/c/src/+/123182/1)

Original cl description:
Always offer transport sequence number header extension for audio

If the extension is negotiated, it will only be used if
the field trial WebRTC-Audio-SendSideBwe is enabled.
This allows simpler experimentation if it should be used or not.

Patchset 3 contain the only change:
  Add the field trial WebRTC-Audio-SendSideBwe to  call/rampup_tests.cc

TBR: srte@webrtc.org,ossu@webrtc.org
Bug: webrtc:10309 webrtc:10286
Change-Id: I2c1224e8a9fab52c1030369c1364686322e88a0f
Reviewed-on: https://webrtc-review.googlesource.com/c/123183
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26706}
2019-02-15 10:57:38 +00:00
106d92d4c9 Add thread safety annotation for PeerConnection::SignalDataChannelCreated_
Plus all the annotations that are necessary to make things compile
again.

Bug: webrtc:9987
Change-Id: I53caa3c6644c5d0fcb50f7c1e89e853eddd769a5
Reviewed-on: https://webrtc-review.googlesource.com/c/122882
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26705}
2019-02-15 10:49:48 +00:00
13bc8713af PostMessageWithFunctor() added.
This function is used to post messages onto rtc::Threads. The thread
invokes the functor without blocking the calling thread. Messages posted
in this way are executed in the order that they were posted. This is
meant to work as the equivalent of "thread->PostTask()" in Chromium.

Note: AsyncInvoker currently does something similar but it is more
cumbersome to use (somebody has to create it and own it and make sure
not to destroy it while tasks are pending or else they're cancelled). It
also comes with a fundamental flaw: You cannot destroy the AsyncInvoker
from within the functor (this results in a neverending Wait). This makes
the AsyncInvoker not suitable for implementing "destructor traits"
amongst other things.

This CL will allow us to easily add "PostTask()" to rtc::Thread or add
support for DestructorTraits, which is especially useful when you have a
reference counted object that is referenced from multiple threads but
owns resources that has to be destroyed on a particular thread.

Blocking invokes are forbidden in Chromium but WebRTC performs them
frequently. Being able to perform the equivalent of PostTask() is a
good thing.

Bug: webrtc:10293
Change-Id: Ie2a612059a783f18ddf98cff6edb7fce447fb5be
Reviewed-on: https://webrtc-review.googlesource.com/c/121408
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26704}
2019-02-15 10:00:18 +00:00
397c06fe9d Revert "Always offer transport sequence number header extension for audio"
This reverts commit fd965c008c7bc395bb276f260262ac11ccd25406.

Reason for revert: Cause test failure.

Original change's description:
> Always offer transport sequence number header extension for audio
> 
> If the extension is negotiated, it will only be used if
> the field trial WebRTC-Audio-SendSideBwe is enabled.
> This allows simpler experimentation if it should be used or not.
> 
> Bug: webrtc:10309 webrtc:10286
> Change-Id: I797e6f14c06d46189e40f6d09805c2e09afc015b
> Reviewed-on: https://webrtc-review.googlesource.com/c/122542
> Commit-Queue: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26689}

TBR=ossu@webrtc.org,sprang@webrtc.org,srte@webrtc.org,perkj@webrtc.org

Change-Id: I1b7d3fa5c282a5bf049ca54695ad16c8278a2698
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10309 webrtc:10286
Reviewed-on: https://webrtc-review.googlesource.com/c/123182
Reviewed-by: Ying Wang <yinwa@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26703}
2019-02-15 08:53:25 +00:00
7e0e44f8b4 Move video-related MediaTransport interfaces to their own file and target
Bug: webrtc:9719
Change-Id: I2cf4a8520ce5c07c76ab0310cf7ab0ab285d9e0c
Reviewed-on: https://webrtc-review.googlesource.com/c/122504
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26702}
2019-02-15 08:17:20 +00:00
054db54ec4 Remove an absl::WrapUnique usage without absl/memory/memory.h include
absl::WrapUnique requires memory.h include on C++17 mode compile.

Bug: chromium:752720
Change-Id: Iaa958652727c8927831d8eecd223678328c7b3bd
Reviewed-on: https://webrtc-review.googlesource.com/c/122440
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26701}
2019-02-15 04:39:06 +00:00
22997d66b8 Roll chromium_revision 2ad52fb2a4..d1f68eb66e (632357:632477)
Change log: 2ad52fb2a4..d1f68eb66e
Full diff: 2ad52fb2a4..d1f68eb66e

Changed dependencies
* src/base: 61c98912a6..32407e1dea
* src/build: f7f21da60d..383614544b
* src/ios: f9421ecdbc..877c8752bb
* src/testing: 3a16217f2b..b5e8334f08
* src/third_party: 0b6da2cdde..4063eb822e
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/754352edf2..778eee0740
* src/third_party/depot_tools: 452a49f4b6..2b14855de9
* src/tools: 7df6c9fa94..0d447c418e
DEPS diff: 2ad52fb2a4..d1f68eb66e/DEPS

No update to Clang.

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

Change-Id: Ibc0e2b3aca2255bab886c326ef4a9b7f4ea00d28
Reviewed-on: https://webrtc-review.googlesource.com/c/123203
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@{#26700}
2019-02-15 03:32:52 +00:00
1c9c9fc9b6 Replace replace_substrs with Abseil
Bug: None
Change-Id: I155cc29db951ef1b812691c57aaafe037fbeb230
Reviewed-on: https://webrtc-review.googlesource.com/c/114241
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26699}
2019-02-15 01:22:54 +00:00
bf9e01ab4e Add support of fast media sending in peer connection e2e test
Start sending media from the peer when it's ICE connection state is
connected.

Bug: webrtc:10138
Change-Id: I9f5a1cd917317a3ebadd7c156563035b0bbecf2a
Reviewed-on: https://webrtc-review.googlesource.com/c/121956
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26698}
2019-02-15 00:51:03 +00:00
ceba6ae2a7 Return a copy, becase GetPercentile in SamplesStatsCounter isn't const
Bug: webrtc:10138
Change-Id: I2ec2ce4765e514bfd065f094f5905233e5f4f9cd
Reviewed-on: https://webrtc-review.googlesource.com/c/123043
Reviewed-by: Peter Slatala <psla@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26697}
2019-02-15 00:49:58 +00:00
cf8405e172 Add generic packet rates to event_log_visualizer.
This change adds incoming & outgoing packet rates to the
event_log_visualizer.

The outgoing packet rate is drawn on the graph with outgoing RTP rate,
because we want to see it together with bandwidth estimate and probe
clusters.

The incoming packet rate is drawn separately.

Bug: webrtc:9719
Change-Id: I32648d016359af110837440ed1a5f9c31c841ea7
Reviewed-on: https://webrtc-review.googlesource.com/c/122941
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26696}
2019-02-14 22:45:37 +00:00
15653f957d Roll chromium_revision 78de17c053..2ad52fb2a4 (632252:632357)
Change log: 78de17c053..2ad52fb2a4
Full diff: 78de17c053..2ad52fb2a4

Changed dependencies
* src/base: 54b55a6d77..61c98912a6
* src/build: aa4d830c69..f7f21da60d
* src/ios: 09cc36ceb7..f9421ecdbc
* src/testing: d27b16e080..3a16217f2b
* src/third_party: a1daa5f638..0b6da2cdde
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/b3d62293b2..754352edf2
* src/third_party/depot_tools: 3b1e64245a..452a49f4b6
* src/tools: d624e46558..7df6c9fa94
DEPS diff: 78de17c053..2ad52fb2a4/DEPS

No update to Clang.

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

Change-Id: I44157d102180bef546ee256bd821f8f5b075b172
Reviewed-on: https://webrtc-review.googlesource.com/c/123160
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@{#26695}
2019-02-14 22:02:43 +00:00
aa58415bfa Reland "Enabling Simulcast use via AddTransceiver."
This is a reland of ce470aab518f067a67aa03aaab1fc61a45afa0ec

Original change's description:
> Enabling Simulcast use via AddTransceiver.
> 
> This change removes the restriction on multiple send encodings when
> calling AddTransceiver. If RIDs are not provided in the
> simulcast scenario, they are auto-generated by the platform.
> 
> This effectively enables the use of spec-compliant simulcast.
> Tests are also added to verify simulcast functionality.
> 
> Bug: webrtc:10075
> Change-Id: I088feba70a26e85abcc7bfbe3ea1fe5103cd47d2
> Reviewed-on: https://webrtc-review.googlesource.com/c/121389
> Reviewed-by: Florent Castelli <orphis@webrtc.org>
> Reviewed-by: Steve Anton <steveanton@webrtc.org>
> Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26590}

Bug: webrtc:10075
Change-Id: Ib4392e36d5d60b966ecff56d4df69bf60d13a73d
Reviewed-on: https://webrtc-review.googlesource.com/c/122962
Reviewed-by: Amit Hilbuch <amithi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26694}
2019-02-14 20:58:34 +00:00
aec9794120 Fix DCHECK when encoding GenericPacket* events using the legacy RTC event log format.
Bug: webrtc:10319
Change-Id: I6764072281b8d66a8e4a5b2c0e547af3bfddda37
Reviewed-on: https://webrtc-review.googlesource.com/c/123121
Commit-Queue: Peter Slatala <psla@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26693}
2019-02-14 18:11:19 +00:00
9e2692c290 Roll chromium_revision 9a34b2cc2d..78de17c053 (632146:632252)
Change log: 9a34b2cc2d..78de17c053
Full diff: 9a34b2cc2d..78de17c053

Changed dependencies
* src/base: 8f4487a1e9..54b55a6d77
* src/build: 7f6757275f..aa4d830c69
* src/ios: c34eafde76..09cc36ceb7
* src/testing: 847bd5d9c1..d27b16e080
* src/third_party: 1f019ff756..a1daa5f638
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/8ba5518f87..b3d62293b2
* src/tools: 69818a7ff0..d624e46558
DEPS diff: 9a34b2cc2d..78de17c053/DEPS

No update to Clang.

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

Change-Id: I649f0fed2d05a597b9c7fd7b571c85a641babc77
Reviewed-on: https://webrtc-review.googlesource.com/c/123120
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@{#26692}
2019-02-14 17:27:17 +00:00
d036c6582e Clarify and unify outgoing and incoming packet loss rate plots.
Bug: none
Change-Id: Idefb12f389547c63d8ce1faa10e3796687108222
Reviewed-on: https://webrtc-review.googlesource.com/c/123100
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Konrad Hofbauer <hofbauer@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26691}
2019-02-14 16:01:40 +00:00
663844d800 Update test code to use EncodedImage::Allocate
Bug: webrtc:9378
Change-Id: I2ea63b097b0263b264fbbcca295365781fcae621
Reviewed-on: https://webrtc-review.googlesource.com/c/122780
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26690}
2019-02-14 15:50:45 +00:00
fd965c008c Always offer transport sequence number header extension for audio
If the extension is negotiated, it will only be used if
the field trial WebRTC-Audio-SendSideBwe is enabled.
This allows simpler experimentation if it should be used or not.

Bug: webrtc:10309 webrtc:10286
Change-Id: I797e6f14c06d46189e40f6d09805c2e09afc015b
Reviewed-on: https://webrtc-review.googlesource.com/c/122542
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26689}
2019-02-14 15:28:07 +00:00
92e7c69c28 Revert "Update VP9EncoderImpl to use EncodedImage::Allocate"
This reverts commit e12778cb3a7c35b4d3b9d25104841dccd67dc59b.

Reason for revert: Suspect for performance regression.

Bug: chromium:931692

Original change's description:
> Update VP9EncoderImpl to use EncodedImage::Allocate
> 
> Bug: webrtc:9378
> Change-Id: I009138b4dc50c4ceb8f94fee6a958bbfa4d7e326
> Reviewed-on: https://webrtc-review.googlesource.com/c/121771
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26593}

TBR=brandtr@webrtc.org,nisse@webrtc.org,philipel@webrtc.org

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

Bug: webrtc:9378
Change-Id: If056d5604f11b0b77b3f98a3e18d2a5790230760
Reviewed-on: https://webrtc-review.googlesource.com/c/123065
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26688}
2019-02-14 14:47:59 +00:00
8e847ee96a Make recv_deltas optional in TransportFeedback packets
Bug: webrtc:10263
Change-Id: I49c4a4710a5c34a62b53080e708c310a8484831b
Reviewed-on: https://webrtc-review.googlesource.com/c/122543
Commit-Queue: Johannes Kron <kron@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26687}
2019-02-14 13:34:57 +00:00
69fb6c8510 Allow DtlsTransport::Information() to be called off-thread
Bug: chromium:907849
Change-Id: I7e89aa21f26cbd858fa9845375681e5e6781fece
Reviewed-on: https://webrtc-review.googlesource.com/c/122503
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26686}
2019-02-14 13:15:05 +00:00
068fc359e5 Break out parameters from EventLogAnalyzer to AnalyzerConfig struct.
This is not a functional change. I've verified that the event_log_visualizer outputs the same bytes before and after the CL.

Bug: webrtc:10102, webrtc:10312
Change-Id: I49c4c847926078cefc9b72fe57fbdaebf76423e9
Reviewed-on: https://webrtc-review.googlesource.com/c/122844
Reviewed-by: Mirta Dvornicic <mirtad@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26685}
2019-02-14 13:13:35 +00:00
f0c366b461 Cleanup of scenario test video stream setup.
Removing simulcast stream support as it was broken.

Bug: webrtc:9510
Change-Id: I42ba285bbea81e6ffd5b1d1a1aec4e5eb0990b1e
Reviewed-on: https://webrtc-review.googlesource.com/c/123040
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26684}
2019-02-14 13:03:15 +00:00
d00045ef0e Changing command line flag for scenario logs root directory.
There was a name collision with downstream test frameworks.

Bug: webrtc:9510
Change-Id: I7e37a8a54701ef4a47c687aec51f37523759f1b2
Reviewed-on: https://webrtc-review.googlesource.com/c/123044
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26683}
2019-02-14 12:08:27 +00:00
dac03d9bb0 Move MediaConstraintsInterface to sdk/, and make it a concrete class
Bug: webrtc:9239
Change-Id: I545ebf59b078dd94bc466886616dd374e4b2e226
Reviewed-on: https://webrtc-review.googlesource.com/c/122502
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26682}
2019-02-14 12:07:07 +00:00
1d7bf89ad6 Add LS_VERBOSE logging for target bitrate in GoogCC
This will be used to investigate the effect of congestion window
pushback on bandwidth esimation. There is currently no data available
in event logs to analyze this in test runs.

Bug: None
Change-Id: I2397842e90fd4acab6306b03d1ee9daf62469ee3
Reviewed-on: https://webrtc-review.googlesource.com/c/121765
Reviewed-by: Konrad Hofbauer <hofbauer@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#26681}
2019-02-14 11:11:40 +00:00
0179a3d224 Roll chromium_revision bfd7bcf815..9a34b2cc2d (632040:632146)
Change log: bfd7bcf815..9a34b2cc2d
Full diff: bfd7bcf815..9a34b2cc2d

Changed dependencies
* src/base: 21b2987f40..8f4487a1e9
* src/build: d7b4a0981f..7f6757275f
* src/ios: 21b7d265e8..c34eafde76
* src/testing: 15d911e392..847bd5d9c1
* src/third_party: 97e8569c41..1f019ff756
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/63f9b85be5..8ba5518f87
* src/tools: 56007f95ed..69818a7ff0
DEPS diff: bfd7bcf815..9a34b2cc2d/DEPS

No update to Clang.

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

Change-Id: I12a5dc02459e823a67aa9660e6434ebc6862b075
Reviewed-on: https://webrtc-review.googlesource.com/c/123024
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@{#26680}
2019-02-14 10:36:27 +00:00
da825b1b12 Replace NOTREACHED with a break.
The old format is still used.

Bug: None
Change-Id: I2c8c9a8c7b09282ba8c375403cbee7fd7ab2d056
Reviewed-on: https://webrtc-review.googlesource.com/c/122960
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26679}
2019-02-14 09:59:49 +00:00
1290fc7086 Remove old accessor in GenericAckReceived
Bug: None
Change-Id: I6bb58f09731e0492e93bb28fd5d9fb541c7c8db1
Reviewed-on: https://webrtc-review.googlesource.com/c/122961
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26678}
2019-02-14 09:57:45 +00:00
788f577603 Update the resolution check for VP8 simulcast.
To support non-default values of scale_resolution_down_by.

Bug: webrtc:10069
Change-Id: I7efb39cc06a895986f9583acc2180245c009a7fa
Reviewed-on: https://webrtc-review.googlesource.com/c/121650
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26677}
2019-02-14 09:56:40 +00:00
6b88a8f161 Introduce default video quality analyzer
This implementation won't support spatial layers and simulcast. It will
be added in next CLs.

Bug: webrtc:10138
Change-Id: I08baef36fb15b8d2d2fa222c761d40508de7ff61
Reviewed-on: https://webrtc-review.googlesource.com/c/121944
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26676}
2019-02-14 09:08:31 +00:00
b1ea48c2e8 Roll chromium_revision 103665932a..bfd7bcf815 (631883:632040)
Change log: 103665932a..bfd7bcf815
Full diff: 103665932a..bfd7bcf815

Changed dependencies
* src/base: 4c05ce85b3..21b2987f40
* src/build: 46a607ce3a..d7b4a0981f
* src/ios: dd5c3fa929..21b7d265e8
* src/testing: 11c391f12e..15d911e392
* src/third_party: 341e254d24..97e8569c41
* src/third_party/depot_tools: ae2acf7bf9..3b1e64245a
* src/tools: 65d01f0881..56007f95ed
DEPS diff: 103665932a..bfd7bcf815/DEPS

No update to Clang.

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

Change-Id: I198b69234a0c1e1bba8849317df39e2ebeeee95e
Reviewed-on: https://webrtc-review.googlesource.com/c/122982
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@{#26675}
2019-02-14 03:03:06 +00:00
5ae259ee4f Use a provider in rtc::Network to access the mDNS responder.
Bug: chromium:930339
Change-Id: I42c22f4417f2f12b606bb9791edc074561c78518
Reviewed-on: https://webrtc-review.googlesource.com/c/122680
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#26674}
2019-02-14 00:59:06 +00:00
616b233688 Add FullStackTest with simulated encoder overshooting
Bug: webrtc:10302
Change-Id: I1d4b9ef22ba1ca9a221cc01e2c44775014c90d4f
Reviewed-on: https://webrtc-review.googlesource.com/c/122082
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26673}
2019-02-13 22:55:50 +00:00
6c02541abe Revert "Delete video source proxying in WebRtcVideoSendStream"
This reverts commit b66003ca79cd34f65ef964a5e3b4766bc97a5659.

Reason for revert: Causes bot failures in Chromium, see https://chromium-review.googlesource.com/c/chromium/src/+/1470391

Original change's description:
> Delete video source proxying in WebRtcVideoSendStream
>
> Bug: webrtc:10147
> Change-Id: Ib9f399e79d99f7d8db53fa38ef4b92986913ac26
> Reviewed-on: https://webrtc-review.googlesource.com/c/121569
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26633}

TBR=nisse@webrtc.org,sprang@webrtc.org

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

Bug: webrtc:10147
No-Try: True
Change-Id: I80395333d2be8fd3329c0bcdd6ed33d994a01ae3
Reviewed-on: https://webrtc-review.googlesource.com/c/122940
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Christian Fremerey <chfremer@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26672}
2019-02-13 22:42:43 +00:00
3588394b26 Roll chromium_revision d026ac796d..103665932a (631722:631883)
Change log: d026ac796d..103665932a
Full diff: d026ac796d..103665932a

Changed dependencies
* src/base: 354a74e0aa..4c05ce85b3
* src/build: 2030c341b0..46a607ce3a
* src/ios: b963feb787..dd5c3fa929
* src/testing: c84f277b30..11c391f12e
* src/third_party: e249a3f77a..341e254d24
* src/third_party/libvpx/source/libvpx: ce4336c2ab..e2381829e9
* src/tools: 4bf6f3fed8..65d01f0881
DEPS diff: d026ac796d..103665932a/DEPS

No update to Clang.

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

Change-Id: Ibf379a1a606c08828bfca800c7e2fc67c424547a
Reviewed-on: https://webrtc-review.googlesource.com/c/122930
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@{#26671}
2019-02-13 22:01:33 +00:00
dfd5c4b15e Parse XR, FIR and PLI in rtc_event_log_parser.cc
Bug: webrtc:10312
Change-Id: I1b24e23f8002feef8a2ef928130ac6da19c3cd81
Reviewed-on: https://webrtc-review.googlesource.com/c/122580
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Mirta Dvornicic <mirtad@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26670}
2019-02-13 19:11:42 +00:00
3c119fb793 Handle HKDF key derivation when building with OpenSSL.
Change-Id: I3fd503109190d6a94e15576312c9cb79906a7f61
Bug: webrtc:10160
Reviewed-on: https://webrtc-review.googlesource.com/c/122622
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26669}
2019-02-13 17:44:02 +00:00
5e2aad1c95 Support GenericPacketReceived/Sent/AckReceived event logs.
This change does not include receive_timestamps for ACKs, because there is 1 problem.
That problem will be resolved in a separate change.

I am getting receive_timestamp errors that have to do with delta compression with optional fields.
Two failure modes that I noticed:
1) the base event does not have the timestamp: it crashes with length validation
# Check failed: base <= MaxUnsignedValueOfBitWidth(params_.value_width_bits()) (1820716 vs. 131071)
2) all events are null, it crashes with assert that X events were expected, but no events were deserialized.


Bug: webrtc:9719
Change-Id: I5d1bbb95dfd15ca7321667aad5e4d89c085e9c06
Reviewed-on: https://webrtc-review.googlesource.com/c/122360
Commit-Queue: Peter Slatala <psla@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26668}
2019-02-13 17:06:22 +00:00
975a899ad0 Roll chromium_revision aa7b61fdc4..d026ac796d (631597:631722)
Change log: aa7b61fdc4..d026ac796d
Full diff: aa7b61fdc4..d026ac796d

Changed dependencies
* src/base: 025e09f3ca..354a74e0aa
* src/build: e1e623809c..2030c341b0
* src/ios: f500efe6ba..b963feb787
* src/testing: 0704a2aafd..c84f277b30
* src/third_party: abd88f1df6..e249a3f77a
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/ed0a2fef24..63f9b85be5
* src/tools: 8edbc736f4..4bf6f3fed8
DEPS diff: aa7b61fdc4..d026ac796d/DEPS

No update to Clang.

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

Change-Id: I1963b2c5ec46f3c55b18faad972f79ec317f0996
Reviewed-on: https://webrtc-review.googlesource.com/c/122924
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@{#26667}
2019-02-13 16:34:16 +00:00
4a68fb9ab4 Separate base minimum delay and minimum delay.
On NetEq level latency corresponds to delay and two terms can be used interchangeably here.

In order to implement latency constraint we need to provide a range of possible values which should be constant. See getCapabilities() here:
https://www.w3.org/TR/mediacapture-streams/#dfn-applyconstraints-algorithm

Lowest possible value accepted value is constant and equals 0. But because |packet_len_ms_| and |maximum_delay_ms_| may be updated during live of DelayManager upper bound is not constant. Moreover, due to change in |packet_len_ms_| the |minimum_delay_ms_| which was valid when its was set may be considered invalid later on.

To circumvent that and provide constant range for capabilities we separate base minimum delay and minimum delay. ApplyConstraints algorithm will set base minimum delay. Base minimum delay will act as recommendation for lower bound of minimum delay and will be used to limit target delay. If user sets base minimum delay through ApplyConstraints which is bigger than currently
possible maximum (e.g. bigger than NetEq maximum buffer size in milliseconds) then base minimum delay will be clamped to currently possible maximum to match user's intentions as best as possible.

Note, that we keep original behavior when minimum_delay_ms_ (effective_minimum_delay_ms after this CL) in LimitTargetLevel method may be above upper bound due to changing packet audio length.

Bug: webrtc:10287
Change-Id: I06b8f5cd3fd1bc36800af0447f91f7c4dc21a766
Reviewed-on: https://webrtc-review.googlesource.com/c/121700
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26666}
2019-02-13 15:54:43 +00:00
69bb3afd53 Update EncodedFrameForMediaTransport to use Retain() rather than set_buffer + memcpy.
Bug: webrtc:9378
Change-Id: I7f0d0f57bc38ecb25dd7de873c7c96a944ffb307
Reviewed-on: https://webrtc-review.googlesource.com/c/122781
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26665}
2019-02-13 15:08:53 +00:00
14a7cf9ba7 Adds CallEncoder to ChannelSend.
Since it's a common pattern it makes sense to explicitly provide the
interface rather than reimplementing it every time it's used.

Bug: webrtc:9883
Change-Id: I4dca84bd7c8616fcbcbaba511718671a3668e743
Reviewed-on: https://webrtc-review.googlesource.com/c/122300
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26664}
2019-02-13 15:01:53 +00:00
cbf5949fff Update MultiplexEncoderAdapter to use EncodedImage::Allocate
Bug: webrtc:9378
Change-Id: Icb09478c7035ec4ddbcb11f402db140a838721f3
Reviewed-on: https://webrtc-review.googlesource.com/c/122881
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26663}
2019-02-13 14:20:17 +00:00
448c387b82 IceTransportWithTransportChannel: Initialize |thread_checker_| in declaration
This works around https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89305, which
causes GCC to fail to build the code due to |thread_checker_| being const
there and not having a declared constructor.

    ../../api/ice_transport_factory.cc: In constructor ‘webrtc::{anonymous}::IceTransportWithTransportChannel::IceTransportWithTransportChannel(std::unique_ptr<cricket::IceTransportInternal>)’:
    ../../api/ice_transport_factory.cc:31:3: error: uninitialized const member in ‘const class rtc::ThreadChecker’ [-fpermissive]
       IceTransportWithTransportChannel(
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../api/ice_transport_factory.cc:45:28: note: ‘const rtc::ThreadChecker webrtc::{anonymous}::IceTransportWithTransportChannel::thread_checker_’ should be initialized
       const rtc::ThreadChecker thread_checker_;
                                ^~~~~~~~~~~~~~~

Bug: chromium:819294
Change-Id: I750e8cdd796b3b0e076de01194cf7de988ac4ce2
Reviewed-on: https://webrtc-review.googlesource.com/c/122820
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Raphael Kubo da Costa (rakuco) <raphael.kubo.da.costa@intel.com>
Cr-Commit-Position: refs/heads/master@{#26662}
2019-02-13 12:45:12 +00:00
2bd54a1bd9 Ensure TestPeers are destroyed at the end of Run.
In order to correctly close audio dump files, TestPeers have to be
destroyed after the call is finished.

Bug: webrtc:10138
Change-Id: I948e4e1844dfbffd1eef7926a4dd4d7631dbe632
Reviewed-on: https://webrtc-review.googlesource.com/c/122301
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26661}
2019-02-13 12:44:02 +00:00
6aca0b743e Add |update_rect| field and UpdateRect struct to VideoFrame.
Bug: webrtc:10310
Change-Id: I6d60d8a3bf5a9c15fb8d4cb4e8adf08642f27802
Reviewed-on: https://webrtc-review.googlesource.com/c/122564
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26660}
2019-02-13 12:41:32 +00:00
7f24fb9c1e Add settings to turn off VP8 base layer qp limit
This quality boost means that we sometimes drop a _lot_ of frames in the
base layer. It also interacts poorly with the bitrate adjuster since
even if frames are dropped they are often over-sized.

The setting still leaves the current behavior as default, but can be
changed using the WebRTC-VideoRateControl field trial.

Bug: webrtc:10155
Change-Id: I1a92ec69bab61b5148fe9d8bc391ac5ee1019367
Reviewed-on: https://webrtc-review.googlesource.com/c/122840
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26659}
2019-02-13 11:54:19 +00:00
98bcd321c5 Remove always_passing_unittest.cc.
Bug: None
Change-Id: I14b24d28c1469ad58b8657cd8e7e630be866a502
Reviewed-on: https://webrtc-review.googlesource.com/c/122081
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26658}
2019-02-13 10:16:38 +00:00