Commit Graph

30920 Commits

Author SHA1 Message Date
dcde85c912 Pass PeerConfigurerImpl directly into CreateTestPeer
Bug: webrtc:11479
Change-Id: Ib514d264bfd94d648d90a053554537880bd9ebe5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174747
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31188}
2020-05-08 10:56:40 +00:00
435fb9ad06 Remove screen_share_config from the VideoConfig.
After the migration of the pc framework tests (https://webrtc-review.googlesource.com/c/src/+/174023), having "absl::optional<ScreenShareConfig> screen_share_config" field in VideoConfig became redundant. Replaced it with VideoTrackInterface::ContentHint content_hint field.

Bug: webrtc:11534
Change-Id: Ibf4b1c8daed95ef02111fe952171f11e290905d3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174702
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31187}
2020-05-08 08:56:13 +00:00
553c869c58 Start consolidating management/querying of stats on the Call thread.
Call is instantiated on what we traditionally call the 'worker thread'
in PeerConnection terms. Call statistics are however gathered, processed
and reported in a number of different ways, which results in a lot of
locking, which is also unpredictable due to the those actions themselves
contending with other parts of the system.

Designating the worker thread as the general owner of the stats, helps
us keeps things regular and avoids loading unrelated task queues/threads
with reporting things like histograms or locking up due to a call to
GetStats().

This is a reland of remaining changes from https://webrtc-review.googlesource.com/c/src/+/172847:
This applies the changes from the above CL to the forked files and
switches call.cc over to using the forked implementation.

Bug: webrtc:11489
Change-Id: I93ad560500806ddd0e6df1448b1bcf5a1aae7583
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174000
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31186}
2020-05-08 07:24:39 +00:00
04e1bab1b3 Replaces OverheadObserver with simple getter.
This interface has a couple of issues. Primarily for me, it makes it
difficult work with the paced sender as we need to either temporarily
release a lock or force a thread-handover in order to avoid a cyclic
lock order.

For video in particular, its behavior is also falky since header sizes
can vary not only form frame to frame, but from packet to packet within
a frame (e.g. TimingInfo extension is only on the last packet, if set).
On bitrate allocation, the last reported value is picked, leading to
timing issues affecting the bitrate set.

This CL removes the callback interface and instead we simply poll the
RTP module for a packet overhead. This consists of an expected overhead
based on which non-volatile header extensions are registered (so for
instance AbsoluteCaptureTime is disregarded since it's only populated
once per second). The overhead estimation is a little less accurate but
instead simpler and deterministic.

Bug: webrtc:10809
Change-Id: I2c3d3fcca6ad35704c4c1b6b9e0a39227aada1ea
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173704
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Ali Tofigh <alito@webrtc.org>
Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31185}
2020-05-07 17:33:45 +00:00
03fade52da IWYU: uint32_t is defined in cstdint
This is required for gcc-10.

Bug: None
Change-Id: I0d04f720d09b42e1d54e058b897ddc047ef64bf6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174204
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31184}
2020-05-07 17:04:15 +00:00
b8a9630e9e Add a Release method for file wrapper
This CL adds a Release method for the FileWrapper class that allows it
to release the wrapped FILE* object without closing it.

Bug: b/155316201
Change-Id: If9ef4345724705dc7c66183f17bd8daadbdd00b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174720
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31183}
2020-05-07 14:37:00 +00:00
3b6afeeed0 Add comparison methods for VideoSourceRestrictions
Bug: None
Change-Id: Ia67f39e9b17e37294462823dd6f6ca365c7fd46b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174700
Commit-Queue: Evan Shrubsole <eshr@google.com>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31182}
2020-05-07 13:27:13 +00:00
0dcb470cfe [Adaptation] Adapt up requires previous underuse
The problem is that a resource that signals Underuse would be
able to trigger an adapt up when it was never limited in the past.
This means that an underused resource would be able to negate the
adaptations made for an overused one.

For example, consider a fast CPU on a bad link. The QP for the image
is high but the CPU is underused. Without requiring previous underuse,
everytime the QP would signal overuse and trigger an adpatation down,
the CPU would signal underuse and trigger an adaptation up.

This works today as we want by using the active counts in the
VideoStreamEncoderResourceManager. This change
makes it a normal behaviour independant of active counts.
The problem with active counts is that is only works with 2 resources.
When resources are injectable it no longer works as expected.

Bug: webrtc:11522, webrtc:11523
Change-Id: I140636ce206d74e00a6b6f8558162bb8afffda1c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174482
Commit-Queue: Evan Shrubsole <eshr@google.com>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31181}
2020-05-07 12:22:10 +00:00
ab866a2ccb Remove audio playout generator from APM API
This API is and has always been unused.

Bug: webrtc:5298
Change-Id: If1201d37a00e387567d44a9ed8be99a157915b47
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174661
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31180}
2020-05-07 12:14:50 +00:00
b63331bb8f Cleanup mocks for Video (en|de)coder factories
In particular remove proxy mocks in favor of lambdas and Return(ByMove(...))

Bug: None
Change-Id: If6b79601437e82a7116479d128d538e965622fab
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174701
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31179}
2020-05-07 11:58:50 +00:00
1e83d34fc1 Remove pc level test framework redundant code.
After the migration to passing frame video source implementation directly, part of the peer connection framework code became redundant. Removing screen_share_config and capturing_device_index from the VideoConfig is to be done in later reviews.

Bug: webrtc:11534
Change-Id: I7a8ea85d26d00fb5bfe7ec0d2facef9c44a0f749
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174541
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31178}
2020-05-07 09:23:29 +00:00
d6b10943c7 Revert "Android: Remove min_sdk_version in GN"
This reverts commit f00ed5be2a6c5c0e67b1e40710f62e0b54b185f0.

Reason for revert: Broke compile on Android64 Builder arm64:
https://ci.chromium.org/p/webrtc/builders/ci/Android64%20Builder%20arm64/6936?

Original change's description:
> Android: Remove min_sdk_version in GN
> 
> Android lint is changing, so min_sdk_version is no longer needed in GN.
> 
> Can commit after this CL lands: https://crrev.com/c/2163728
> 
> Bug: chromium:1017190
> Change-Id: I5792df1f06c07cde3e3b17fd5f18a8f9ffcf380c
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173840
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Peter Wen <wnwen@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#31175}

TBR=mbonadei@webrtc.org,wnwen@chromium.org

Change-Id: Ieefb023dc8b8cc1b4665448be576cd21f816a07f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1017190
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174600
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31177}
2020-05-07 09:20:41 +00:00
42c59525b1 Create default frame generator in the AddVideoConfig method.
Bug: webrtc:11534
Change-Id: I5f8e6009ac48be99180574ab3ac835005f67cf58
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174540
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31176}
2020-05-06 21:01:29 +00:00
f00ed5be2a Android: Remove min_sdk_version in GN
Android lint is changing, so min_sdk_version is no longer needed in GN.

Can commit after this CL lands: https://crrev.com/c/2163728

Bug: chromium:1017190
Change-Id: I5792df1f06c07cde3e3b17fd5f18a8f9ffcf380c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173840
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Peter Wen <wnwen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#31175}
2020-05-06 20:49:09 +00:00
9af75432b2 Add RTC_EXPORT for NullSocketServer
NullSocketServer needs to be exported in order to use it in
JingleThreadWrapper in chromium.

Bug: none
Change-Id: I9bce49c764a1ca1c28fc44041d0d5f04f794066e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173920
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#31174}
2020-05-06 20:19:49 +00:00
fa95e8bc61 fix nil RTCVideoEncoderSelector case in video encoder factory.
Bug: None
Change-Id: I9ad85c7a8aee9feb24cef7e2f4d29fe8d18310e6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174582
Reviewed-by: Zeke Chin <tkchin@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31173}
2020-05-06 18:52:15 +00:00
cce86430d8 Removed spammy log message from the FrameBuffer.
Inserting old frames is not an error condition and should not print a warning, and given that it happens all the time it is also very spammy.

Bug: chromium:1066819
Change-Id: Iad2b5edc5e62822c02e2bb2a53d4318f957be3bd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173022
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31172}
2020-05-06 11:36:47 +00:00
5ed65b2e98 Add 5G detection to android_network_monitor
This patch adds detection of 5G to andoird_network_monitor
using the TelephonyManager.NETWORK_TYPE_NR.

It also adds
- TelephonyManager.NETWORK_TYPE_GSM as 2G
- TelephonyManager.NETWORK_TYPE_TD_SCDMA as 3G
- TelephonyManager.NETWORK_TYPE_IWLAN as 4G

note: AdapterTypeFromNetworkType still return rtc::ADAPTER_TYPE_CELLULAR
for all cellular connections (changing that is a next step).

Bug: webrtc:11473
Change-Id: If2e681e10b24f46ea0071db0cdba758a8c4e7ee2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174500
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31171}
2020-05-06 08:39:44 +00:00
81be4217b8 Remove FrameTransformerInterface functions using EncodedFrame.
Replaced by the function versions using TransformableFrameInterface
downstream.

Bug: webrtc:11380
Change-Id: Ia4aef84dd76b542ba33287aff6c9151448ed5be6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171864
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31170}
2020-05-06 07:26:44 +00:00
a0ff50c031 Reland "Improve outbound-rtp statistics for simulcast"
This reverts commit 9a925c9ce33a6ccdd11b545b11ba68e985c2a65d.

Reason for revert: The original CL is updated in PS #2 to
fix the googRtt issue which was that when the legacy sender
stats were put in "aggregated_senders" we forgot to update
rtt_ms the same way that we do it for "senders".

Original change's description:
> Revert "Improve outbound-rtp statistics for simulcast"
>
> This reverts commit da6cda839dac7d9d18eba8d365188fa94831e0b1.
>
> Reason for revert: Breaks googRtt in legacy getStats API
>
> Original change's description:
> > Improve outbound-rtp statistics for simulcast
> >
> > Bug: webrtc:9547
> > Change-Id: Iec4eb976aa11ee743805425bedb77dcea7c2c9be
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168120
> > Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> > Reviewed-by: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Henrik Boström <hbos@webrtc.org>
> > Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> > Commit-Queue: Eldar Rello <elrello@microsoft.com>
> > Cr-Commit-Position: refs/heads/master@{#31097}
>
> TBR=hbos@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,srte@webrtc.org,hta@webrtc.org,elrello@microsoft.com
>
> # Not skipping CQ checks because original CL landed > 1 day ago.
>
> Bug: webrtc:9547
> Change-Id: I06673328c2a5293a7eef03b3aaf2ded9d13df1b3
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174443
> Reviewed-by: Henrik Boström <hbos@webrtc.org>
> Commit-Queue: Henrik Boström <hbos@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#31165}

TBR=hbos@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,srte@webrtc.org,hta@webrtc.org,elrello@microsoft.com

# Not skipping CQ checks because this is a reland.

Bug: webrtc:9547
Change-Id: I723744c496c3c65f95ab6a8940862c8b9f544338
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174480
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31169}
2020-05-05 20:22:19 +00:00
c0df5fc25b VoIP API implementation on top of AudioIngress/Egress
This is one last CL that includes the rest of VoIP API implementation.

Bug: webrtc:11251
Change-Id: I3f1b0bf2fd48be864ffc73482105f9514f75f9e0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173860
Commit-Queue: Tim Na <natim@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31168}
2020-05-05 19:55:29 +00:00
c064467b32 Pass frame generator to the AddVideoConfig method in the pc framework tests.
Bug: webrtc:11534
Change-Id: Id68feca50611f412897ddef3d43b811a224b200f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174023
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31167}
2020-05-05 17:20:25 +00:00
421088815f Refactors FEC in preparation for deferred packet generation.
RtpVideoSender now stores fec type and overhead instead of querying the
generator all the time. Setting of protection parameters and asking for
current bitrate is also now handled just by the VideoFecGenerator
instance, instead of going via RtpVideoSender.
Finally, adds method to query for RtpState in VideoFecGenerator
interface. This avoids an ugly cast that would have been even more
trouble after moving fec generation.

For context, see https://webrtc-review.googlesource.com/c/src/+/173708

Bug: webrtc:11340
Change-Id: Ia5e6cd919e71850c9cc5ed5a4f4417338d577162
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174203
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31166}
2020-05-05 13:59:14 +00:00
9a925c9ce3 Revert "Improve outbound-rtp statistics for simulcast"
This reverts commit da6cda839dac7d9d18eba8d365188fa94831e0b1.

Reason for revert: Breaks googRtt in legacy getStats API

Original change's description:
> Improve outbound-rtp statistics for simulcast
> 
> Bug: webrtc:9547
> Change-Id: Iec4eb976aa11ee743805425bedb77dcea7c2c9be
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168120
> Reviewed-by: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Henrik Boström <hbos@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Commit-Queue: Eldar Rello <elrello@microsoft.com>
> Cr-Commit-Position: refs/heads/master@{#31097}

TBR=hbos@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,srte@webrtc.org,hta@webrtc.org,elrello@microsoft.com

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

Bug: webrtc:9547
Change-Id: I06673328c2a5293a7eef03b3aaf2ded9d13df1b3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174443
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31165}
2020-05-05 13:38:51 +00:00
49f574b3b3 Delete EncodedImage methods buffer(), set_buffer() and mutable_data()
Bug: webrtc:9378
Change-Id: Iab21fe537f03a5cd130d8435cd94520952e693a9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168494
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31164}
2020-05-05 09:11:40 +00:00
c1aaf4cb38 Revert "disallow pairing ICE-TCP with a local ip address"
This reverts commit 712ebbb5b73baf30f11711efdceb6f08248fac38.
There is apparently more usage in the wild than anticipated.

Bug: chromium:1068705
Change-Id: If2f3907e509570d305670206d8d3724413964208
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174420
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31163}
2020-05-05 06:59:45 +00:00
dad6a940e1 Add helper frame generator factories for the pc framework tests.
Bug: webrtc:11534
Change-Id: I569fb9e78aa38f0a17f4e4a261dd93c4b8ba9ca0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174340
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31162}
2020-05-04 18:56:22 +00:00
3c5450e693 Add support for PendingTaskSafetyFlag to ToQueuedTask.
This keeps usage of ToQueuedTask consistent and avoids callers having
to add additional boiler plate when using the safety flag.

From this:

tq->PostTask(ToQueuedTask([safety = my_safety_flag_]() {
  if (!safety->alive())
    return;
  Foo();
});

to this:

tq->PostTask(ToQueuedTask(my_safety_flag_, []() {
  Foo();
});


Bug: none
Change-Id: I205af56a64dd9839eb845321083d533140d614ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174262
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31161}
2020-05-04 18:20:10 +00:00
9e46cf5cc5 Introduce a RunLoop class that supports the TaskQueue interface
on the current thread.

This simplifies writing async tests that use TaskQueue and doesn't
require spinning up a new thread for simple things. The implementation
is currently based on rtc::Thread, which could also be useful in
some circumstances while migrating code over to TQ.

Remove PressEnterToContinue from the test_common files since
it's very specific and only used from one file.

Bug: none
Change-Id: I8b2c6c40809271a109ec17cf7e1120847645d58a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174260
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31160}
2020-05-04 18:10:00 +00:00
d7197080c0 Add unit tests for audio channel send frame transformer delegate.
Bug: webrtc:11380
Change-Id: I58a3983d3f16be8ed6a95ea2b9ce759bc3b3a7b7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174003
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31159}
2020-05-04 16:50:12 +00:00
1b900b1322 Removed unused function EncodedFrame::SetEncodedSize.
Bug: none
Change-Id: I5b4ce351193198c14cf3c336f910eb1d910f034c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174380
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31158}
2020-05-04 16:44:12 +00:00
701ccf97c9 Add unit tests for audio receive channel frame transformer delegate.
Bug: webrtc:11380
Change-Id: I4630b75c83886d722e7be64d50a9790c20956ba4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174004
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31157}
2020-05-04 15:44:08 +00:00
d9255b1840 [getStats] Fix DCHECK crash in MergeInfoAboutOutboundRtpSubstreams().
It seems possible that getStats() and merging RTX/FlexFEC substream
stats into media substream stats can race with the creation or
destruction of the media substream that the RTX/FlexFEC substream is
associated with.

In other words, the DCHECK that ensures that there exists a stats object
to merge into is not always valid. Because there is no media stats
object to merge in to, and outbound-rtp stats objects only exists per
media SSRCs, the sensible thing to do is to RTC_LOG and ignore the
substream stats.

Bug: webrtc:11545
Change-Id: I4061d7190da7ab8bd33fa1fd92c9d819f35d76c7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174360
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31156}
2020-05-04 15:25:34 +00:00
455e80271c Define MockTransformableFrame in test/.
The mock is to be used in frame transformer unit tests.

Bug: webrtc:11380
Change-Id: Id3f6ec71712333232873d8de30e3c7392dc7f5e3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174002
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31155}
2020-05-04 15:17:54 +00:00
07ed0f4f93 Add more unit tests for sender video with frame transformer.
Bug: webrtc:11380
Change-Id: Iaf499420f3512fd78421e234a646d53f8fc649bf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174005
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31154}
2020-05-04 15:04:15 +00:00
a81e9c82fc Wrap WebRTC OBJC API types with RTC_OBJC_TYPE.
This CL introduced 2 new macros that affect the WebRTC OBJC API symbols:

- RTC_OBJC_TYPE_PREFIX:
  Macro used to prepend a prefix to the API types that are exported with
  RTC_OBJC_EXPORT.

  Clients can patch the definition of this macro locally and build
  WebRTC.framework with their own prefix in case symbol clashing is a
  problem.

  This macro must only be defined by changing the value in
  sdk/objc/base/RTCMacros.h  and not on via compiler flag to ensure
  it has a unique value.

- RCT_OBJC_TYPE:
  Macro used internally to reference API types. Declaring an API type
  without using this macro will not include the declared type in the
  set of types that will be affected by the configurable
  RTC_OBJC_TYPE_PREFIX.

Manual changes:
https://webrtc-review.googlesource.com/c/src/+/173781/5..10

The auto-generated changes in PS#5 have been done with:
https://webrtc-review.googlesource.com/c/src/+/174061.

Bug: None
Change-Id: I0d54ca94db764fb3b6cb4365873f79e14cd879b8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173781
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31153}
2020-05-04 15:01:26 +00:00
ce1320cc4d Add WaitForPreviouslyPostedTasks to TaskQueueForTest.
Add an utility function to TaskQueueForTest to execute all already
posted tasks on the queue.

Bug: webrtc:11380
Change-Id: I6cf75bc543cfd2dd1c363935134d3f7bd55eec58
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174140
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31152}
2020-05-04 13:47:35 +00:00
1148fd5cef Define MockFrameTransformer in test/.
Add MockFrameTransformer to test/, and remove definitions from unit test
files.

Bug: webrtc:11380
Change-Id: Ia709883e8d000852e3f71e7bfb87877072e22aeb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174001
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Marina Ciocea <marinaciocea@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31151}
2020-05-04 13:45:22 +00:00
8ae18adb66 Remove unneeded dependency on CallStats.
Bug: none
Change-Id: I348ec88b3d978dac9813fb96368570f647e1e785
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174280
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31150}
2020-05-04 13:12:42 +00:00
14a23a32c4 Add field trial to force playout delay
This CL adds the field trial WebRTC-ForcePlayoutDelay with parameters
min_ms and max_ms. If both of these values are set, the playout delay
of any received packet will be overridden by the specified values.

Bug: None
Change-Id: I353282097e3ffa437dfc5affdfdf7780b09474e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174180
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31149}
2020-05-04 09:03:34 +00:00
3745d3fc93 [Adaptation] Use ResourceAdaptationProcessorInterface* instead of impl.
This replaces references to the ResourceAdaptationProcessor with
references to its interface. This would make it possible to have
alternative implementations or inject fake/mock implementations for
testing.

The VideoStreamAdapter is still responsible for constructing the
ResourceAdaptationProcessor, but beyond construction it is agnostic
towards the implementation.

With this CL, I claim https://crbug.com/webrtc/11222 complete.

TBR=ilnik@webrtc.org

Bug: webrtc:11222
Change-Id: I6e7a73bf1d0b5e97bc694f66180a747b27ffb018
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174160
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31148}
2020-04-30 09:16:41 +00:00
722fa4d509 [Adaptation] Misc tests for processor, input provider and restrictions.
This CL adds miscellaneous unit tests for the
ResourceAdaptationProcessor, the VideoSourceRestrictions comparators and
the VideoStreamInputStateProvider.

Bug: webrtc:11172
Change-Id: If95f69644aaf2b43e3b19d5729bedef0b438c77b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174101
Reviewed-by: Evan Shrubsole <eshr@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31147}
2020-04-29 15:59:14 +00:00
bb826c9142 Make echo metrics optional
This makes it optional for an echo detector to report metrics through
the getStats interface.

Bug: webrtc:11539
Change-Id: I1fef93b7bf534637b69c16971d38709b3e849a08
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174100
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31146}
2020-04-29 14:29:27 +00:00
6a92e0ebba Android: Allow for re-assigning ScopedJavaGlobalRef
Currently, ScopedJavaGlobalRef can only be set at creation and never
changed. This CL makes it possible to re-set these.

Bug: b/153389044
Change-Id: I6be92dae83a9f5f3d87aa44dde226b874f4ca0a5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174041
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31145}
2020-04-29 13:36:32 +00:00
b5a013815f Rename done() into condition(), because it is actually condition in TimeController API
Bug: None
Change-Id: Ia3a742d1d2ad1238223f4da7ae843a8d22108ec5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174060
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31144}
2020-04-29 10:29:09 +00:00
91aa73255e [Adaptation] Add OnAdaptationApplied(), remove ResourceListenerResponse.
This CL is part of the Call-Level Adaptation Processing design doc:
https://docs.google.com/document/d/1ZyC26yOCknrrcYa839ZWLxD6o6Gig5A3lVTh4E41074/edit?usp=sharing

The ResourceListenerResponse was used to make the QualityScaler
not clear QP samples and instead increase its frequency of checking for
QP under certain circumstances, see enum description:
https://webrtc.googlesource.com/src.git/+/c70b1028d47c1aee4892545190cd66e97d09cd55/call/adaptation/resource.h#33

Because the QualityScaler depends on whether and how adaptation
happened it should listen to adaptation happening.

This CL moves the logic that was previously in VideoStreamAdapter closer
to the QualityScaler: QualityScalerResource::OnAdaptationApplied().

This would allow the VideoStreamAdapter to operate on a separate task
queue in the future, with no dependencies on any stream-specific
resources that might operate on other task queues.

Bug: webrtc:11172, webrtc:11521
Change-Id: I07971a8a5fab5715f4ccb7d2c63f1b92bd47170f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173090
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#31143}
2020-04-29 09:08:46 +00:00
4381af48b4 Change connection ASSERT into metrics for the PC level framework.
Bug: webrtc:11504
Change-Id: I48b2f44a52b18fd4bb3e75e9ccdcd842ec1faaed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174022
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Andrey Logvin <landrey@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31142}
2020-04-28 09:28:13 +00:00
3b9fe99285 Add cpu_usage metrics.
Implemented an analogue of the cpu_usage metrics from third_party/webrtc/video/video_analyzer.h for third_party/webrtc/test/pc/e2e/analyzer/video/default_video_quality_analyzer.h

Bug: webrtc:11496
Change-Id: Ifdc9daa3351f1df5db98beb8f7dc7156fc7c2a16
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174020
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31141}
2020-04-28 09:24:30 +00:00
012aa375b1 Asynchronous QualityScaler: Callback-based CheckQpTask.
This CL breaks up the CheckQp() operation into several steps managed
by the inner helper class CheckQpTask, making responding to high or
low QP an asynchronous operation. Why? Reconfiguring the stream in
response to QP overuse will in the future be handled on a separate
task queue. See Call-Level Adaptation Processing for more details:
https://docs.google.com/document/d/1ZyC26yOCknrrcYa839ZWLxD6o6Gig5A3lVTh4E41074/edit?usp=sharing

Instead of "bool AdaptDown()" when high QP is reported,
synchronously returning true or false depending on the result of
adaptation, this CL introduces
  void QualityScalerQpUsageHandlerInterface::OnReportQpUsageHigh(
      rtc::scoped_refptr<QualityScalerQpUsageHandlerCallback>);
Where
  QualityScalerQpUsageHandlerCallback::OnQpUsageHandled(
      bool clear_qp_samples);
Instructs the QualityScaler whether to clear samples before
checking QP the next time or to increase the frequency of checking
(corresponding to AdaptDown's return value prior to this CL).

QualityScaler no longer using AdaptationObserverInterface, this class
is renamed and moved to overuse_frame_detector.h.

The dependency between CheckQpTasks is made explicit with
CheckQpTask::Result and variables like observed_enough_frames_,
adapt_called_ and adapt_failed_ are moved there and given more
descriptive names.

Bug: webrtc:11521
Change-Id: I7faf795aeee5ded18ce75eb1617f88226e337228
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173760
Reviewed-by: Evan Shrubsole <eshr@google.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31140}
2020-04-28 09:00:15 +00:00
9abc6bd8aa Reduce audiosendstream dependency on rttstats (dead code).
Change-Id: I4b05321548b6584424f23c45b0e95b4c03fe67c1
Bug: none
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148529
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31139}
2020-04-27 13:59:45 +00:00