The TaskQueuePacedSender today has some inefficiencies:
* Enqueuing a packet will trigger a MaybeProcessPackets() call, but it
won't actually run immediately even if it should - instead it will
schedule a new call in at least 1ms. This incurs delays and extra
CPU overhead.
* Sometimes thread wakeups are scheduled simply in order to do
book-keeping: ProcessPackets() will be called when the media debt has
gone down to 0 even if there is no packet in the queue, in order to
check if we should send padding.
This CL fixes that by called ProcessPackets() immediately if it is
actually time to do so, and by immediately determining when padding
should be sent without having a separate call to drain media debt.
Bug: webrtc:10809
Change-Id: I4870e86e6de2ce4197463fd5b788ad4717fc7177
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172842
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31010}
Update tests to call VideoReceiveStream::GetStats() in the same or at
least similar way it gets called in production (construction thread,
same TQ/thread).
Mapped out threads and context for ReceiveStatisticsProxy,
VideoQualityObserver and VideoReceiveStream. Added
follow-up TODOs for webrtc:11489.
One functional change in ReceiveStatisticsProxy is that when sender
side RtcpPacketTypesCounterUpdated calls are made, the counter is
updated asynchronously since the sender calls the method on a different
thread than the receiver.
Make CallClient::SendTask public to allow tests to run tasks in the
right context. CallClient already does this internally for GetStats.
Remove 10 sec sleep in StopSendingKeyframeRequestsForInactiveStream.
Bug: webrtc:11489
Change-Id: Ib45bfc59d8472e9c5ea556e6ecf38298b8f14921
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172847
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31008}
This CL adds several field-trial-based overrides for parameters related
to AEC transparency.
The changes have been shown to be bitexact for a test dataset.
Bug: webrtc:11487,chromium:1067597
Change-Id: Ica9613db74240687fc85efe059874ef8c20aa7d5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172844
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31007}
Instead dependency descriptor can be used to communicate discardability
Bug: webrtc:11358
Change-Id: I46b4f551acd002d4355d18033e03d8181ec94c6e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172922
Reviewed-by: Markus Handell <handellm@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31004}
Non-paced audio should be sent "immediately", but in several places that
was determined by looking at the current time - which can lead to
inconsistencies.
E.g. if a packet is enqueued and ProcessPackets() is called 1ms later,
the pacer should see NextSendTime() as 1ms ago, so that buffer levels
are cleared at the right pace.
Bug: webrtc:10809
Change-Id: I04a169f3df3e28a5c8ef7fa8a042b9c482c307ce
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172845
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31002}
Especially with the TaskQueuePacerSender, it is very common that a
single packet is added to the queue and then immediately removed as
it gets sent to the network.
This CL adds a fast-path for that case, that avoid creating book-
keeping in the form of stream-priorities and timestamp sets etc.
Functionally, it should be a noop, but hopefully it can save a few
CPU cycles.
Bug: webrtc:10809
Change-Id: Idaa06b4f8d1da444fce78cc742e2ab52f9efe815
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172090
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31001}
This CL adds two kill-switches to the AEC3 code to be used as
safe fallbacks to increase AEC transparency.
The changes have been shown to be bitexact for a test dataset.
Bug: webrtc:11487,chromium:1067597
Change-Id: I7f9f78db4964990bcdfa9adae6ef36a56bce7224
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172840
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30998}
Adding gn isolate configs for //:voip_unittests in order to run it on
bots.
Bug: webrtc:11251
Change-Id: I00636cb136db116a3b90a7aad4c55c4e4697534b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172804
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30993}
This patch is a follow up to https://webrtc-review.googlesource.com/c/src/+/172582
and change so that a switch from CELLULAR_X to CELLULAR_Y does not
trigger OnNetworkChange.
This is needed as the OnNetworkChange signals triggers
BasicPortAllocator to rescan all networks and generate new candidates.
The actual adapter type change is still possible to react on using
SignalTypeChanged.
BUG: webrtc:11473
Change-Id: Icc1a945b8a4df1714c6ec4b02ec759ecada92d7f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172802
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30992}
It's not expected this will make a difference, since the packet should
be read from the queue if possible as soon as it's added to it.
But we're doing this as an added precaution in case we overlooked
something. See linked bug.
Bug: chromium:1063834
Change-Id: I7a3a6d86a97683cbcbeed5ef1aaa8090cf6bf8c0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172661
Commit-Queue: Taylor <deadbeef@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30990}
This is a reland of d335426a39d34389a00f8f7ae652d535f0fa2073.
The revert was premature: the failing tests were known to be flaky
(crbug.com/1066515, crbug.com/1066453, crbug.com/1066407, crbug.com/1066399)
Original change's description:
> Let WebRtcVideoChannel::ResetUnsignaledRecvStream delete all default streams.
>
> This CL changes WebRtcVideoChannel::ResetUnsignaledRecvStream so
> that it deletes all default streams created by
> WebRtcVideoChannel::AddRecvStream. This is needed for the case that
> there are lingering default streams, whose SSRCs are different
> from the SSRCs that were subsequently signaled. This can happen
> when there are multiple "m= sections" and the early media is
> sent to an "m= section" that is later not supposed to be the
> sink for that particular SSRC.
>
> Default streams whose SSRC match the subsequently signaled
> SSRC is already handled here: https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/media/engine/webrtc_video_engine.cc;l=1386;drc=22387b44ff173d263b434889d394cea90368ab06?originalUrl=https:%2F%2Fcs.chromium.org%2F
>
> Bug: webrtc:11477
> Change-Id: I96ed7e35b4904fb0757fe5824f8afa6f1b9a565e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172622
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
> Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#30971}
TBR=mflodman@webrtc.org,hta@webrtc.org
Bug: webrtc:11477
Change-Id: I70b8fa47b4d1d0aa36fed4d8612e13fa7f992925
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172782
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30986}
Extract test peer creation into separate file to simplify code and
increase readability. Also it is 1st step in bigger refactoring of PC
level test fixture implementation to make it more granular and reusable.
Change-Id: I687a17bda33a8eebc1ef0ddc0d54572e095fd709
Bug: webrtc:11479
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172628
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30980}
This reverts commit d335426a39d34389a00f8f7ae652d535f0fa2073.
Reason for revert: Breaking RTCPeerConnectionTest.GetTrackRemoveStreamAndGCAll.
Original change's description:
> Let WebRtcVideoChannel::ResetUnsignaledRecvStream delete all default streams.
>
> This CL changes WebRtcVideoChannel::ResetUnsignaledRecvStream so
> that it deletes all default streams created by
> WebRtcVideoChannel::AddRecvStream. This is needed for the case that
> there are lingering default streams, whose SSRCs are different
> from the SSRCs that were subsequently signaled. This can happen
> when there are multiple "m= sections" and the early media is
> sent to an "m= section" that is later not supposed to be the
> sink for that particular SSRC.
>
> Default streams whose SSRC match the subsequently signaled
> SSRC is already handled here: https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/media/engine/webrtc_video_engine.cc;l=1386;drc=22387b44ff173d263b434889d394cea90368ab06?originalUrl=https:%2F%2Fcs.chromium.org%2F
>
> Bug: webrtc:11477
> Change-Id: I96ed7e35b4904fb0757fe5824f8afa6f1b9a565e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172622
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
> Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#30971}
TBR=brandtr@webrtc.org,mflodman@webrtc.org,hta@webrtc.org
Change-Id: I41dc2ea2fc43bb3f7cca2fc5e946c58baa54e00a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:11477
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172760
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30979}
This allows clients to exclude the transient suppression submodule from WebRTC builds, by defining WEBRTC_EXCLUDE_TRANSIENT_SUPPRESSOR.
The changes have been shown to be bitexact for a test dataset (when the flag is _not_ defined.)
No-Try: True
Bug: webrtc:11226, webrtc:11292
Change-Id: I6931c82a280a9b40a53ee1c2a9820ed9e674a9a5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171421
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30978}
This allows the user to run audioproc_f with various field trials set.
The approach is copied from test/test_main_lib.cc.
Tested:
1. Verified bitexactness vs ToT audioproc_f on a large dataset of aecdumps
2. Ran it with flags --aec=1 --force_fieldtrials="WebRTC-Aec3ClampInstQualityToZeroKillSwitch/Enabled/WebRTC-Aec3ClampInstQualityToOneKillSwitch/Enabled/" and verified in GDB that the AEC3 config was changed accordingly.
No-Try: True
Bug: webrtc:5298
Change-Id: I70eec7777f70893b36af33794a5842f67d56af31
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172623
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30976}
This CL changes WebRtcVideoChannel::ResetUnsignaledRecvStream so
that it deletes all default streams created by
WebRtcVideoChannel::AddRecvStream. This is needed for the case that
there are lingering default streams, whose SSRCs are different
from the SSRCs that were subsequently signaled. This can happen
when there are multiple "m= sections" and the early media is
sent to an "m= section" that is later not supposed to be the
sink for that particular SSRC.
Default streams whose SSRC match the subsequently signaled
SSRC is already handled here: https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/media/engine/webrtc_video_engine.cc;l=1386;drc=22387b44ff173d263b434889d394cea90368ab06?originalUrl=https:%2F%2Fcs.chromium.org%2F
Bug: webrtc:11477
Change-Id: I96ed7e35b4904fb0757fe5824f8afa6f1b9a565e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172622
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30971}
This patch adds new enum values for different types of cellular
connections.
The new costs are currently blocked when sending to remote,
(so that arbitrary network switches does not starts occurring).
The end-game for this series to be able to distinguish between
different type of cellular connections in the ice-layer (e.g when
selecting/switching connections).
BUG: webrtc:11473
Change-Id: I587ac8fdff4f6cdd0f8905f327232f58818db4f6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172582
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30970}
Currently, audioproc_f crashes on a DCHECK as the data vector of Int16Frame is not resized.
Bug: webrtc:5298
Change-Id: I897cf0fce07e0ed2c0a365a965fa50fd3d8ddd18
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172624
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30969}
This CL adds a number of kill-switches to the AEC3 code to be used as
safe fallbacks to increase AEC transparency.
The changes have been shown to be bitexact for a test dataset.
Bug: webrtc:11475,chromium:1066836
Change-Id: Ibebcbbfbbd958cb6fcc6993247e3030fa65b582c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172600
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30964}