This CL refactors the analog AGC functionality. In particular it:
-Breaks then tight dependency between the analog AGC and the digital
AGC implementation.
-Removes the complicated callback interface for reporting the analog
level and replaces it with an int.
Bug: webrtc:10859
Change-Id: I3572d60ab98edebbcffa25af64cc74c66f9868fc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159039
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29838}
This reverts commit acdc22d7845c5dde7c23366110e54e5d26127c85.
Reason for revert: Field trials are not enabled in the same way, will reland after that is fixed.
Original change's description:
> Prepares PacingController for simplified packet queue.
>
> This CL removes references to RoundRobinPacketQueue::QueuedPacket,
> other than the method to release an RtpPacketToSend. It also moves
> both the BeginPop() and FinalizePop() to within a single helper
> method.
>
> A follow-up cleanup of the packet queue will stop exposing the
> QueuedPacket struct and replaces the the pop-methods with a single
> new one that just returns an RtpPacketToSend.
>
> Bug: webrtc:10809
> Change-Id: I5208a93e12e6b56714d483cc12d2a37225ea8e5e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159889
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29820}
TBR=sprang@webrtc.org,philipel@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:10809
Change-Id: I02fccbfbba6b9670b0ce2008e067df3aa9d3c5f2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160010
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29836}
Add tests for different UpdateRect methods as they are no longer trivial
This change will enable providing useful update rects after scaling
is done.
Bug: webrtc:11058
Change-Id: I2311dbbbb5eca5cfaf845306674e6890050f80c6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159820
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29835}
The reported audio interruption metrics are too high. If GetAudio
calls start before the first packets are arriving, and the sample rate
of the encoded audio is different from the one used to initialize
NetEq (default 16 kHz), the initial silent period of GetAudio calls
will be reported as an interruption.
Modifying a unit test to trigger the bug, and make sure it won't come
back.
Bug: webrtc:11094, b/144567257
Change-Id: Id540422cb7f35d3bef68b9e7c03c6e7c8bdb8d97
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159980
Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29831}
Those are preventive annotations to prepare for incoming android update
(coming with Chromium roll).
Currently the roll is blocked partly because errorprone complains!
Bug: webrtc:11095, chromium:1003532
Change-Id: If4e2879a522e895ce7fb1f2a9ad36d06f98f2a61
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160002
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@google.com>
Cr-Commit-Position: refs/heads/master@{#29830}
This change makes it easier to propagate more information from the sink
to the video adapter, for example alignment requirements.
Bug: None
Change-Id: I536248d59f871c103a18a48615b6c5e61f61697b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159281
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29827}
New tests are:
- AudioDeviceTest.StartStopPlayoutWithRealDevice
- AudioDeviceTest.StartStopRecordingWithRealDevice
(the comments below only affects ADM2 on Windows):
When adding these tests it was found that we could hit the same known issue
as in https://bugs.chromium.org/p/chromium/issues/detail?id=803056 and the
same solution as in Chrome was therefore ported from Chrome to WebRTC.
Hence, this change also adds support for core_audio_utility::WaveFormatWrapper
to support devices that can return a format where only the WAVEFORMATEX parts is
initialized. The old version would only DCHECK for these devices and that could
lead to an unpredictable behavior.
Tbr: minyue
Bug: webrtc:11093
Change-Id: Icb238c5475100f251ce4e55e39a03653da04dbda
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159982
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29824}
Some of the field trial default values are changed as well.
Now available bitrate estimation will be decreasing when RTT is more than 3 seconds.
Unless different parameters for the field trial are specified.
Bug: None
Change-Id: Icd1923fc2e2e7766a7f645016c5432a52537145f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158840
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Konrad Hofbauer <hofbauer@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Nikita Zetilov <zetilovn@google.com>
Cr-Commit-Position: refs/heads/master@{#29823}
We now have two downstream users of stun.h, so it appears to be
generally usable. I put this in a new dir networking/, but I'm open to
suggestions here (maybe some things in api/ should move in there).
I checked what our downstream users are actually using, and it's
cricket::ComputeStunCredentialHash
cricket::<constants>
cricket::TurnMessage
cricket::GetStunErrorResponseType
cricket::StunAttribute::CreateAddress
cricket::StunErrorCodeAttribute
cricket::StunByteStringAttribute
StunAttribute::CreateUnknownAttributes
cricket::TurnErrorType
cricket::StunMessage
I reckoned that was pretty much everything in stun.h, so I didn't
bother splitting it up. They don't use every function and constant
in there, but all _types_ of functions and constants, so for the
sake of coherence I don't think it makes sense to split it.
There's some old stuff in there like GTURN which could arguably
be split out, but it should likely go away soon anyway, so I don't
think it's worth the effort.
Steps:
1) land this
2) update downstream to point to the new header and target
3) remove p2p/base:stun_types.
Bug: webrtc:11091
Change-Id: I1f05bf06055475d25601197ec6fefb8d3b55e8e3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159923
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29822}
This CL removes references to RoundRobinPacketQueue::QueuedPacket,
other than the method to release an RtpPacketToSend. It also moves
both the BeginPop() and FinalizePop() to within a single helper
method.
A follow-up cleanup of the packet queue will stop exposing the
QueuedPacket struct and replaces the the pop-methods with a single
new one that just returns an RtpPacketToSend.
Bug: webrtc:10809
Change-Id: I5208a93e12e6b56714d483cc12d2a37225ea8e5e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159889
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29820}
This effectively makes WebRTC upload histogram sets instead of Chart
JSON. Histogram sets is the newest format used by Chromium. I'm doing
this because it's nice to use the most modern thing, but mostly because
it's the default for PinPoint. This means I don't have to implement and
support a new read quest for Chart JSON.
This script has to be source side, because we need third_party/catapult
to write correct histograms. This script will be called from recipes.
I also considered generating histogram JSON directly in
test/testsupport/perf_test.cc, which could have avoided this conversion
from Chart JSON to histogram sets, but I can't because there is no C++
API for histogram sets.
Bug: webrtc:11084
Change-Id: If0d2315d2057112b3c2d54a9cfd12e59b5858a18
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159780
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29818}
This is a reland of 53e157d25ce78ba6cd8625b0b655b46f8e1b0a91
The issue has been fixed in
https://chromium-review.googlesource.com/c/chromium/src/+/1917204.
Original change's description:
> Force Chromium deps on the WebRTC component.
>
> This CL adds a visibility check to the rtc_* GN templates in order
> to force Chromium to depend only on publicly visible targets from
> //third_party/webrtc_overrides and not from //third_party/webrtc.
>
> This is required in order to ensure that the Chromium's component
> builds continues to work correctly without introducing direct
> dependency paths on WebRTC that would statically link it in multiple
> shared libraries.
>
> Bug: webrtc:9419
> Change-Id: Ib89f4fc571512f99678ee4f61696b316374346d9
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154344
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Dirk Pranke <dpranke@chromium.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29806}
TBR: kwiberg@webrtc.org
Bug: webrtc:9419
Change-Id: I7123d1b44ddbc23b11d9fa25aa39aa420359e33d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159922
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29816}
this patch is puts frequently used check into a set of Check-functions.
the behavior of p2p_transport_channel_unittest is almost unchanged,
the minor change is that when waiting for connection between specific
addresses it waits and does not assume that a particular set of
local/remote addresses will be selected first.
the patch also changes a few EXPECT_ to ASSERT_ since the
tests are not useful where the first EXPECT fails.
BUG=webrtc:10647
Change-Id: Iddcc3c88114db80576e9ebc500572a00dbafdd84
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159882
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Honghai Zhang <honghaiz@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29812}
This CL adds a visibility check to the rtc_* GN templates in order
to force Chromium to depend only on publicly visible targets from
//third_party/webrtc_overrides and not from //third_party/webrtc.
This is required in order to ensure that the Chromium's component
builds continues to work correctly without introducing direct
dependency paths on WebRTC that would statically link it in multiple
shared libraries.
Bug: webrtc:9419
Change-Id: Ib89f4fc571512f99678ee4f61696b316374346d9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154344
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29806}
crodbro@ found that the previous field trial, which filtered the deltas
in the trendline estimator, can increase the noise caused by varying
packet sizes. Moving the filtering to the DelayBasedBwe class fixes the
issue.
To avoid confusion, we've updated the field trial name, so e.g.
WebRTC-BweIgnoreSmallPacketsFix/small:200bytes,large:200bytes,
fraction_large:0.25,smoothing:0.1/
should be used to enable the feature.
Bug: webrtc:10932
Change-Id: If77e83043c37fff909038405f634e541ce41abb8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159711
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29804}
This is a reland of 03bc15c646d5b41d3169f2686316944788f640ed
Chromium CL that introduces the component build support:
https://chromium-review.googlesource.com/c/chromium/src/+/1874722
Original change's description:
> Define WEBRTC_ENABLE_SYMBOL_EXPORT if is_component_build=true.
>
> In order to land the component build support in Chromium, it is
> easier to turn on symbols export every time that is_component_build=true
> instead of setting rtc_enable_symbol_export=is_component_build in
> Chromium (since is_component_build is not available in .gn).
>
> rtc_enable_symbol_export is still kept in the mix in order to turn
> on symbol exports in any case a shared library will be added to the
> WebRTC build.
>
> Bug: webrtc:9419
> Change-Id: I5a7195826dea13d9a6f10a1160c35f2864bfa6c2
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157108
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29540}
No-Tree-Checks: true
No-Try: True
TBR: kwiberg@webrtc.org
Bug: webrtc:9419
Change-Id: Iff8e35c6f9a53a0d08979bc873b6488dd7164ba5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159860
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29801}
This CL is in preparation for a dynamic (possible TaskQueue-driven)
pacer that instead of processing blindly every 5ms, posts delayed
tasks to be executed when it is actually time to send packs.
This means we need the pacing controller to be able to figure out when
those execution times shall be, and be able to correctly update budget
levels as IntervalBudget only works correctly with periodic processing.
Bug: webrtc:10809
Change-Id: Idd12acaabfb24cc2e6bcc589aac206cd04beb6e4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158790
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29800}
This method is called on every GetStats call and fills up log output on iOS
with three log lines per cycle at INFO+ (the not-supported one is LS_ERROR):
[181:040] [82471] (audio_device_module_ios.mm:646): GetPlayoutUnderrunCount
[181:040] [82471] (audio_device_generic.cc:48): GetPlayoutUnderrunCount: Not supported on this platform
[181:040] [82471] (audio_device_module_ios.mm:649): output: -1
Alternatively, we could remove the error logging in the base class, or (better) log it once the first time it is called, but this is the simpler change.
Bug: None
Change-Id: Ibaa1d176f10cdc92f2ba1a6bf15aaa580da6edb4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159672
Commit-Queue: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29797}
This reverts commit f181137b05e4b899fa3f15afafc4f27e683d83cc.
Reason for revert: This CL was just needed in order to
have a WebRTC commit to pin in Chromium to test the
component build (this CL enables symbol exports).
Original change's description:
> Reland "Define WEBRTC_ENABLE_SYMBOL_EXPORT if is_component_build=true."
>
> This is a reland of 03bc15c646d5b41d3169f2686316944788f640ed
>
> I will revert this reland as soon as it lands because I just need
> to have a WebRTC commit to pin in Chromium in order to test the
> component build (this CL enables symbol exports).
>
> Original change's description:
> > Define WEBRTC_ENABLE_SYMBOL_EXPORT if is_component_build=true.
> >
> > In order to land the component build support in Chromium, it is
> > easier to turn on symbols export every time that is_component_build=true
> > instead of setting rtc_enable_symbol_export=is_component_build in
> > Chromium (since is_component_build is not available in .gn).
> >
> > rtc_enable_symbol_export is still kept in the mix in order to turn
> > on symbol exports in any case a shared library will be added to the
> > WebRTC build.
> >
> > Bug: webrtc:9419
> > Change-Id: I5a7195826dea13d9a6f10a1160c35f2864bfa6c2
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157108
> > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> > Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#29540}
>
> No-Try: True
> TBR: kwiberg@webrtc.org
> Bug: webrtc:9419
> Change-Id: I8582242910bb3633b7a4675ff261b5a6a0b6954e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159712
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29795}
TBR=mbonadei@webrtc.org,kwiberg@webrtc.org
Change-Id: I6bbe0288d07e49c8a4c808c758ecb6e2ddfa2aa8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9419
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159713
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29796}
This is a reland of 03bc15c646d5b41d3169f2686316944788f640ed
I will revert this reland as soon as it lands because I just need
to have a WebRTC commit to pin in Chromium in order to test the
component build (this CL enables symbol exports).
Original change's description:
> Define WEBRTC_ENABLE_SYMBOL_EXPORT if is_component_build=true.
>
> In order to land the component build support in Chromium, it is
> easier to turn on symbols export every time that is_component_build=true
> instead of setting rtc_enable_symbol_export=is_component_build in
> Chromium (since is_component_build is not available in .gn).
>
> rtc_enable_symbol_export is still kept in the mix in order to turn
> on symbol exports in any case a shared library will be added to the
> WebRTC build.
>
> Bug: webrtc:9419
> Change-Id: I5a7195826dea13d9a6f10a1160c35f2864bfa6c2
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157108
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29540}
No-Try: True
TBR: kwiberg@webrtc.org
Bug: webrtc:9419
Change-Id: I8582242910bb3633b7a4675ff261b5a6a0b6954e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159712
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29795}
Otherwise we require that the destructor must run on the same thread as
previous calls. This is not necessary since we can assume there's no
other references to the instance when we enter the destructor.
Bug: webrtc:9883
Change-Id: Ia254bce9265979da0e25ba33598edd8f807d7e00
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159704
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29793}
This CL makes it so the caller explicitly has to provide
EmulatedRoute instances when creating TcpMessageRoute.
Previously those were automatically generated.
This means that the EmulatedRoute instances can be reused.
Bug: webrtc:9883
Change-Id: I7ad03ca6a5a3dbb91df76e3ca1190a1a75bf0cc5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159703
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29791}
This CL enables extracting the linear AEC output,
allowing for more straightforward
testing/development.
Bug: b/140823178
Change-Id: I14f7934008d87066b35500466cb6e6d96f811688
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153672
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29789}