110 Commits

Author SHA1 Message Date
Per Kjellander
7ef34f8505 Replace field trials with WebRtcKeyValueConfig in PacedSender
Replaces use of field trials in PacedSender with injectable WebRtcKeyValueConfig.
Implementation still defaults to field trials.

BUG: webrtc:10335
Change-Id: Ie8870d93d51e996e762f2c2de7545bad261b6bb7
Reviewed-on: https://webrtc-review.googlesource.com/c/123521
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26818}
2019-02-22 13:08:18 +00:00
Piotr (Peter) Slatala
d36a815d68 Remove the deprecated CreateProbeClusters method
Bug: None
Change-Id: Ifad8103d5a7c4e99ef7a29e2cec02885854d141c
Reviewed-on: https://webrtc-review.googlesource.com/c/123262
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Peter Slatala <psla@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26778}
2019-02-20 15:33:47 +00:00
Piotr (Peter) Slatala
c39f462b2d Move RtcEventProbeClusterCreated to the network controller.
Originally RtcEventProbeClusterCreated was logged in bitrate prober. This means that anyone who was using GoogCcNetworkControl wasn't logging it, and the NetworkControl wasn't self-contained.
This changes moves the responsibility for logging ProbeClusterCreated to ProbeController (where the probe is created), it also moves the responsibility for assigning probe ids to the probe controller.

Bug: None
Change-Id: If0433cc6d311b5483ea3980749b03ddbcd2bf041
Reviewed-on: https://webrtc-review.googlesource.com/c/122927
Commit-Queue: Peter Slatala <psla@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26713}
2019-02-15 16:42:47 +00:00
Mirko Bonadei
05cf6be726 [clang-tidy] Apply performance-move-const-arg fixes.
This CL is a manual spin-off of [1], which tried to apply clang-tidy's
performance-move-const-arg [1] to the WebRTC codebase.

Since there are some wrong fixes to correct, this CL collects all the
fixes that could be landed as is.

[1] - https://webrtc-review.googlesource.com/c/src/+/120350
[2] - https://clang.llvm.org/extra/clang-tidy/checks/performance-move-const-arg.html

Bug: webrtc:10252
Change-Id: Ic4882213556344e65c66e27415e91ff6f89134d7
Reviewed-on: https://webrtc-review.googlesource.com/c/120814
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26515}
2019-02-01 15:02:36 +00:00
Sebastian Jansson
aa01f27667 Removes all const Clock*.
This prepares for making the Clock interface fully mutable.

Calls to the time functions in Clock can have side effects in some
circumstances. It's also questionable if it's a good idea to allow
repeated calls to a const method return different values without
any changed to the class instance.

Bug: webrtc:9883
Change-Id: I96fb9230705f7c80a4c0702132fd9dc73899fc5e
Reviewed-on: https://webrtc-review.googlesource.com/c/120347
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26467}
2019-01-30 13:03:37 +00:00
Sebastian Jansson
470a5eae93 Introduces common AudioAllocationSettings class.
This class collects the field trial based configuration of audio
allocation and bandwidth in one place. This makes it easier
overview and prepares for future cleanup of the trials.

Bug: webrtc:9718
Change-Id: I34a441c0165b423f1e2ee63894337484684146ac
Reviewed-on: https://webrtc-review.googlesource.com/c/118282
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26370}
2019-01-23 12:13:29 +00:00
Steve Anton
10542f21c8 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries
Mechanically generated by running this command:

tools_webrtc/do-renames.sh update all-renames.txt && git cl format

Then manually updating:

tools_webrtc/sanitizers/tsan_suppressions_webrtc.cc

Bug: webrtc:10159
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I54824cd91dada8fc3ee3d098f971bc319d477833
Reviewed-on: https://webrtc-review.googlesource.com/c/115653
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26226}
2019-01-11 17:11:39 +00:00
Christoffer Rodbro
c610e26be5 Include pacing buffer size in congestion window.
Bug: webrtc:10171
Change-Id: I9e21880a8b6f325415b62397081c301ee904f2ea
Reviewed-on: https://webrtc-review.googlesource.com/c/116068
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26175}
2019-01-09 11:16:58 +00:00
Christoffer Rodbro
e2e000059d Make pacing buffer send interval configurable.
Bug: webrtc:10153
Change-Id: I2f71b5fc902e24b87f0b6cba474d988b8c27aefa
Reviewed-on: https://webrtc-review.googlesource.com/c/115301
Commit-Queue: Christoffer Rodbro <crodbro@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26076}
2018-12-20 15:29:27 +00:00
Bjorn Terelius
a956d498a7 Only create ALR detector in PacedSender if deprecated functions are called.
Bug: webrtc:10108
Change-Id: Ic41693c4017b47093fc373547d59b7723493c70d
Reviewed-on: https://webrtc-review.googlesource.com/c/113527
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25937}
2018-12-07 17:50:36 +00:00
Yves Gerey
3e70781361 [Cleanup] Add missing #include. Remove useless ones. IWYU part 2.
This is a follow-up to
https://webrtc-review.googlesource.com/c/src/+/106280.
This time the whole code base is covered.
Some files may have not been fixed though, whenever the IWYU tool
was breaking the build.

Bug: webrtc:8311
Change-Id: I2c31f552a87e887d33931d46e87b6208b1e483ef
Reviewed-on: https://webrtc-review.googlesource.com/c/111965
Commit-Queue: Yves Gerey <yvesg@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25830}
2018-11-28 18:25:07 +00:00
Niels Möller
2222a80e79 Delete unneeded includes of common_types.h and gn deps on webrtc_common.
Bug: webrtc:5876
Change-Id: Iae14e5f1679067a5a5e0584ca830aee0870c8807
Reviewed-on: https://webrtc-review.googlesource.com/c/111463
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25715}
2018-11-20 16:28:39 +00:00
Johannes Kron
8584667583 Fix overflow for high bitrates in BitrateProber
Bug: webrtc:9395
Change-Id: Ic63d9a5ca40673eb87419d0d9e2e3b67fb1a81e4
Reviewed-on: https://webrtc-review.googlesource.com/c/110460
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25592}
2018-11-12 10:50:14 +00:00
Sebastian Jansson
916ae08a04 Makes critsect_.Leave() more visible in PacedSender.
This means that the PacedSender::Process function becomes slightly
larger, however, it makes it much more obvious to the reader where
the locks are held or not. Confusion over this has previously caused
bugs.

Bug: webrtc:9870
Change-Id: I63257eae59ecf5e7dd28ea24f63157cefe9f81bd
Reviewed-on: https://webrtc-review.googlesource.com/c/105460
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25389}
2018-10-26 13:09:45 +00:00
Jamie Walch
9c8ae4b9a1 Disable probe delay warning in release builds.
This log is triggering many times a second for Chrome Remote Desktop on some
browsers. This CL just turns it off for release builds to avoid log files
filling up users' disks until we figure out what's going on.

Bug: chromium:888038
Change-Id: Ibbe9d47295b3633314feb28e155e3f59b878dbdb
Reviewed-on: https://webrtc-review.googlesource.com/c/107688
Commit-Queue: Jamie Walch <jamiewalch@google.com>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25372}
2018-10-25 16:00:16 +00:00
Yves Gerey
988cc0870b [Cleanup] Add missing #include. Remove useless ones.
This CL is the result of running include-what-you-use tool on part
of the code base (audio target and dependencies) plus manual fixes.

bug: webrtc:8311
Change-Id: I277d281ce943c3ecc1bd45fd8d83055931743604
Reviewed-on: https://webrtc-review.googlesource.com/c/106280
Commit-Queue: Yves Gerey <yvesg@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25311}
2018-10-23 11:32:56 +00:00
Sebastian Jansson
2560e2e694 Removes Clock instance from RoundRobinPacketQueue.
Bug: webrtc:9870
Change-Id: I8d5b984bbc5e1dff53383be6c92589ad2b786ba8
Reviewed-on: https://webrtc-review.googlesource.com/c/105422
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25194}
2018-10-16 08:23:46 +00:00
Sebastian Jansson
0391446cbb Removing forward declarations in paced_sender.h.
Also making member objects directly owned rather than
using unique_ptr as that's no longer needed.

Bug: webrtc:9870
Change-Id: I4bc85150d3b72b93fee05c85f79f20290cd5124d
Reviewed-on: https://webrtc-review.googlesource.com/c/105480
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25180}
2018-10-15 17:03:42 +00:00
Danil Chapovalov
32fe3d1299 Temporarily increase visibility of pacing and call/rtp_interfaces
NOTRY=true

Bug: webrtc:9808
Change-Id: I1ee8f6843167bb8904a367d1d2a249a6b15a18db
Reviewed-on: https://webrtc-review.googlesource.com/c/103800
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24984}
2018-10-04 11:47:24 +00:00
Hans Wennborg
f9d38f2e4e Fix -Wdefaulted-function-deleted warning in StreamPrioKey
../../third_party/webrtc/modules/pacing/round_robin_packet_queue.h:70:5:
warning: explicitly defaulted default constructor is implicitly deleted
[-Wdefaulted-function-deleted]
    StreamPrioKey() = default;
    ^
../../third_party/webrtc/modules/pacing/round_robin_packet_queue.h:80:37: note:
default constructor of 'StreamPrioKey' is implicitly deleted because field
'priority' of const-qualified type 'const RtpPacketSender::Priority' would not
be initialized
    const RtpPacketSender::Priority priority;
                                    ^

Bug: chromium:890307
Change-Id: I58f21121fc9083a60ba1ad26492fdca6285d0447
Reviewed-on: https://webrtc-review.googlesource.com/c/103181
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24952}
2018-10-03 12:57:10 +00:00
Mirko Bonadei
e0d455b409 Remove runtime_enabled_feature.
This features is not needed anymore, with this CL it is also possible
to address two issues:
- The need to pick a default implementation.
- The need to use -Wno-global-constructors.

Bug: webrtc:9631, webrtc:9693
Change-Id: Id3daf34179fbc8db26969fc701ccbfa7182c6a9b
Reviewed-on: https://webrtc-review.googlesource.com/102543
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24904}
2018-10-01 07:03:25 +00:00
Mirko Bonadei
17f4878419 Remove deprecated field_trial_default and metrics_default.
This CL removes some deprecated build targets (and their headers)
from system_wrappers:
- field_trial_api
- field_trial_default
- metrics_api
- metrics_default

It also refreshes all the dependencies on field_trial.h and metrics.h.

A nice side effect is that it is finally possible to remove 'nogncheck'
from the following files (when it was used with field_trial_default
and metrics_default):
- sdk/objc/api/peerconnection/RTCMetricsSampleInfo+Private.h
- sdk/android/src/jni/pc/peerconnectionfactory.cc
- sdk/objc/api/peerconnection/RTCFieldTrials.mm

Bug: webrtc:9631
Change-Id: Ib621f41ef8ad0aba4fe1c1d7e749c044afc956c3
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/100524
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24878}
2018-09-28 07:21:07 +00:00
Mirko Bonadei
068a2e380b Remove usage of runtime_enabled_features in WebRTC.
This is the first step in order to remove runtime_enabled_features
code from WebRTC.

Bug: webrtc:9693
Change-Id: Ic67f770c2166755ea45c782efb3e4184433ac15e
Reviewed-on: https://webrtc-review.googlesource.com/102361
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24868}
2018-09-27 14:32:20 +00:00
Danil Chapovalov
db1285676b Cleanup modules_common_types
Uninline RTPFragmentaion functions
fix RTPFragmentation move constructor and assign operators (was recursive for win)
replace assert with rtc::dchecked_cast
Remove unused includes and dependencies.
Fix other targets that used those includes transitively instead of directly

Bug: None
Change-Id: I647cb1eda107dc7d87d25234095545bc2842fa40
Reviewed-on: https://webrtc-review.googlesource.com/100500
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24759}
2018-09-18 08:08:33 +00:00
Sebastian Jansson
60570dc8c4 Removes legacy PacketQueue implementation.
Also cleans up usage of the new RoundRobinPacketQueue to reduce code
bloat.

Bug: webrtc:8288
Change-Id: I90f17a4422b32c1d4e2d7d5065573157346d6a0b
Reviewed-on: https://webrtc-review.googlesource.com/100306
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24744}
2018-09-14 14:57:15 +00:00
Erik Språng
96816753d9 Don't let time flow backwards in pacer
Bug: webrtc:9716, b:111681259
Change-Id: I1bf8edeaed6c56f3f5a0bdcc1f71108e119e1843
Reviewed-on: https://webrtc-review.googlesource.com/97701
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24561}
2018-09-05 08:04:41 +00:00
Sebastian Jansson
f70bc5eeff Removes pause check from RoundRobinPacketQueue.
This CL removes a check in RoundRobinPacketQueue::FinalizePop. This
check will trigger if a the pause state is changed in PacedSender while
a packet is sent. This is a rare occurrence but would yield flaky
behavior. The check should not be required for the code to function
since the paused state is not read in FinalizePop other than for this
check.

Bug: webrtc:9586
Change-Id: Ib9476168eb637dc2f9710d0592bed92c4b03dacb
Reviewed-on: https://webrtc-review.googlesource.com/92090
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24197}
2018-08-06 15:22:41 +00:00
Niels Möller
a12c42a6b2 Delete root header file typedef.h.
Usage replaced with stdint.h, rtc_base/system/arch.h and
rtc_base/system/unused.h, as appropriate.

Bug: webrtc:6854
Change-Id: I97225465d14b969903d92979e2df3c3c05d35f18
Reviewed-on: https://webrtc-review.googlesource.com/90249
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24100}
2018-07-25 14:59:26 +00:00
Mirko Bonadei
b471c905a4 Enabling clang::find_bad_constructs for modules/pacing.
This CL removes //build/config/clang:find_bad_constructs from the
suppressed_configs list, which means that clang:find_bad_constructs
is now enabled on these translation units.

Bug: webrtc:9251, webrtc:163
Change-Id: I118156a4f9b00d8c4c4f199a5af50c494e31c34a
Reviewed-on: https://webrtc-review.googlesource.com/89343
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24020}
2018-07-18 13:41:45 +00:00
Karl Wiberg
918f50c5d1 Use absl::make_unique and absl::WrapUnique directly
Instead of going through our wrappers in ptr_util.h.

This CL was generated by the following script:

  git grep -l ptr_util | xargs perl -pi -e 's,#include "rtc_base/ptr_util.h",#include "absl/memory/memory.h",'
  git grep -l MakeUnique | xargs perl -pi -e 's,\b(rtc::)?MakeUnique\b,absl::make_unique,g'
  git grep -l WrapUnique | xargs perl -pi -e 's,\b(rtc::)?WrapUnique\b,absl::WrapUnique,g'
  git checkout -- rtc_base/ptr_util{.h,_unittest.cc}
  git cl format

Followed by manually adding dependencies on
//third_party/abseil-cpp/absl/memory until `gn check` stopped
complaining.

Bug: webrtc:9473
Change-Id: I89ccd363f070479b8c431eb2c3d404a46eaacc1c
Reviewed-on: https://webrtc-review.googlesource.com/86600
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23850}
2018-07-05 10:59:49 +00:00
Sebastian Jansson
f9f49a323c Removes redundant AlrDetector.
This replaces the old AlrDetector used by the pacer with the one in
GoogCC. This reduces the risk of accidentally changing only one version.

Note that the pacer instance will be removed when moving over to the
task queue based send side congestion controller.

Bug: webrtc:8415
Change-Id: Id4b2000ee5a04b94565092c29a84572a7750d2f5
Reviewed-on: https://webrtc-review.googlesource.com/85363
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23791}
2018-06-29 16:28:04 +00:00
Sebastian Jansson
f222d2823d Adds srte@webrtc.org as modules/pacing/ OWNER.
Bug: webrtc:8415
Change-Id: I5ef199825dbb061ae91baa7f8781238433d72d67
Reviewed-on: https://webrtc-review.googlesource.com/86129
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23790}
2018-06-29 15:25:24 +00:00
Sebastian Jansson
0601d68ac8 Adds field trial for disabling pacer queue draining.
This CL adds a field trial that disables the feature that the pacer will
ignore the pacing rate and send extra fast to drain the queues if the
pacer queue starts to fill up. BBR assumes that the pacing rate will be
respected and sending more increase the risk of overestimating the
bandwidth.

Bug: webrtc:8415
Change-Id: Ibba315360dafef1c317d14a83199172f9f8cc6aa
Reviewed-on: https://webrtc-review.googlesource.com/80964
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23773}
2018-06-28 13:46:22 +00:00
Mirko Bonadei
beb2d9813c Removing usage of //build/config/compiler:no_size_t_to_int_warning.
Bug: webrtc:9251, webrtc:1348
Change-Id: I76e52abbfab5666cad73044b49172a9799539108
Reviewed-on: https://webrtc-review.googlesource.com/84144
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23686}
2018-06-20 13:44:26 +00:00
Yves Gerey
665174fdbb Reformat the WebRTC code base
Running clang-format with chromium's style guide.

The goal is n-fold:
 * providing consistency and readability (that's what code guidelines are for)
 * preventing noise with presubmit checks and git cl format
 * building on the previous point: making it easier to automatically fix format issues
 * you name it

Please consider using git-hyper-blame to ignore this commit.

Bug: webrtc:9340
Change-Id: I694567c4cdf8cee2860958cfe82bfaf25848bb87
Reviewed-on: https://webrtc-review.googlesource.com/81185
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23660}
2018-06-19 14:00:39 +00:00
Danil Chapovalov
0040b66ad3 Replace rtc::Optional with absl::optional
This is a no-op change because rtc::Optional is an alias to absl::optional

This CL generated by running script from modules with parameters
'pacing video_coding congestion_controller remote_bitrate_estimator':

find $@ -type f \( -name \*.h -o -name \*.cc \) \
-exec sed -i 's|rtc::Optional|absl::optional|g' {} \+ \
-exec sed -i 's|rtc::nullopt|absl::nullopt|g' {} \+ \
-exec sed -i 's|#include "api/optional.h"|#include "absl/types/optional.h"|' {} \+

find $@ -type f -name BUILD.gn \
-exec sed -r -i 's|"(../)*api:optional"|"//third_party/abseil-cpp/absl/types:optional"|' {} \+;

git cl format

Bug: webrtc:9078
Change-Id: I8ea501d7f1ee36e8d8cd3ed37e6b763c7fe29118
Reviewed-on: https://webrtc-review.googlesource.com/83900
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23640}
2018-06-18 10:24:48 +00:00
Sebastian Jansson
ce4829a04a Adds trial to ignore video pacing for audio packets.
This CL adds a field trial to ensure that audio packets are only blocked
if they are also accounted for. Without the field trial active, audio
packets are blocked due to full congestion windows and media budget
overuse caused by video packets, even it the audio is not accounted for.

Bug: webrtc:8415
Change-Id: I64c3507fcc6e91e6b0759e5f97b34d7f99492658
Reviewed-on: https://webrtc-review.googlesource.com/81187
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23635}
2018-06-15 14:59:35 +00:00
Sebastian Jansson
c235a8d2bb Adds trial to always send padding packets when not sending video.
This can be used to avoid getting stuck in a state where the encoder
is paused due to low bandwidth estimate which means no additional
feedback is received to update the bandwidth estimate. This could
happen if feedback packets are lost.

Bug: webrtc:8415
Change-Id: I59cd60c0277e8b31a6b911b25e8e488af9008fc2
Reviewed-on: https://webrtc-review.googlesource.com/80880
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23632}
2018-06-15 13:29:21 +00:00
Sebastian Jansson
b544f6c2f5 Fixing issue where pacer budget increased in congestion.
This fixes an issue where the media budget in the pacer was allowed to
increase more than the process interval when congested.

Bug: webrtc:8415
Change-Id: I79bf965b6a72ed88313074cdae4746fcaff63340
Reviewed-on: https://webrtc-review.googlesource.com/80121
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23531}
2018-06-07 10:13:48 +00:00
Karl Wiberg
434327376b Don't assume that RTC_LOG's << operator is std::ostream
Bug: webrtc:8982, webrtc:9185
Change-Id: I8a88c10725508f7ea8a7f46e8bcdac4afdb2c617
Reviewed-on: https://webrtc-review.googlesource.com/77681
Reviewed-by: Jonas Olsson <jonasolsson@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23359}
2018-05-23 10:07:20 +00:00
Niels Möller
65ec0fc81e Delete unneeded includes of basictypes.h.
This is a kitchen-sink header, some pieces should be moved to
byteorder.h, the rest likely deleted.

Delete most includes of basictypes.h. In leaf headers,
include stddef.h and stdint.h explicitly where needed.

Bug: webrtc:6853
Change-Id: Ibc809936a8f94d418e4eb650da1e89c1b9142073
Reviewed-on: https://webrtc-review.googlesource.com/77721
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23333}
2018-05-21 19:35:08 +00:00
Niels Möller
4c8811b255 Delete some obsolete forward declarations
Bug: None
Change-Id: I3a9b59bf3dd63c206854ab949cf2d606046182c9
Reviewed-on: https://webrtc-review.googlesource.com/77427
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23292}
2018-05-18 07:29:25 +00:00
Erik Språng
8b7ca4abb2 Make packet router send padding on rtp module that last sent media.
Currently we prefer the last added rtp module that supports rtx, and
assume this is the HD stream.

If we suffer a network degradation and stop sending HD, the current
behavior will trigger RTX padding on an inactive stream, which is not
very useful.

With this change, we will prefer the rtp module that last sent media,
which will spread the load a bit across active media streams, but will
be biased toward the one with highest packet rate.

Bug: webrtc:8975
Change-Id: Id52865ccd5263722c66d327b8c80457f63b90385
Reviewed-on: https://webrtc-review.googlesource.com/77360
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23281}
2018-05-17 12:21:11 +00:00
Sebastian Jansson
5f83cf0c6d Replacing rtc::TimeDelta with webrtc::TimeDelta.
This removes the redundant type and replaces all usages. A slight change
in behavior is that we no longer get nanosecond resolution. This should
not matter since no current code requires nanosecond resolution.

Bug: webrtc:9155
Change-Id: I04334e08c686d95731621a6c8a7e40400d0ae3b2
Reviewed-on: https://webrtc-review.googlesource.com/71163
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23174}
2018-05-08 13:22:53 +00:00
Sebastian Jansson
682c6498a2 Removes timeout warnings from pacer before first packet.
The paced sender did not update the time out clock before the first
packet was send in paused state. This caused it to incorrectly log
warnings about elapsed time. This CL fixes this.

Bug: None
Change-Id: I240d169464a708c12eb580d57bc385330b8dd6b1
Reviewed-on: https://webrtc-review.googlesource.com/69561
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22852}
2018-04-13 10:51:03 +00:00
Sebastian Jansson
45d9c1de9c Added congestion control functionality to pacer.
This adds the ability to the pacer to apply a congestion window by
tracking sent data. This makes it more reliable when the congestion
window is small enough to be filled at a high rate as there are less
thread context switches that might affect the timing and performance.

Outstanding data is not reduced by the pacer as it has no information
about acknowledged packet feedback. This is by design as the pacer would
also need to keep track of on which connection packets were sent or
received, requiring a larger, more complex, change to the pacer.

Bug: webrtc:8415
Change-Id: I4ecd303e835552ced042cd21186da910288a8258
Reviewed-on: https://webrtc-review.googlesource.com/51764
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22371}
2018-03-09 17:40:24 +00:00
Ilya Nikolaevskiy
94065690f6 Use round robin packet queue in the pacer by default
Bug: webrtc:8968
Change-Id: Ibf7d7917cd8ac6093b0994a8ac206c6934c5d6e8
Reviewed-on: https://webrtc-review.googlesource.com/59325
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22294}
2018-03-05 17:54:00 +00:00
Sebastian Jansson
56da2f7868 Added unit tests for new congestion controller.
This CL activates unit tests for the task queue based send side
congestion controller that will replace the current one in the future.

To be able to have the tests run side by side with the tests of the old
congestion controller, the old tests have been prefixed with "Legacy".

This CL also contains some minor fixes to the new congestion controller
code.

Bug: webrtc:8415
Change-Id: I5e7474d42f17fcbfef402e26f638846fa3424695
Reviewed-on: https://webrtc-review.googlesource.com/55381
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22229}
2018-02-28 14:03:48 +00:00
Sebastian Jansson
e5d8c5778b Added limit to elapsed time in paced sender.
Added sanity checks to interval budget to protect against integer
overflow. To avoid tests failing due to initializing paced sender
in another time domain, the elapsed time that is input into the
interval budget is limited to max 2 seconds.

Bug: webrtc:8942
Change-Id: I9ed32f059e65df7898c37bb34a008189ce79dc60
Reviewed-on: https://webrtc-review.googlesource.com/58087
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22220}
2018-02-28 09:40:00 +00:00
Sebastian Jansson
a1630f83d0 Reland "Base pacer padding in pause state on time since last send."
This is a reland of 18cf4b67ddc66041d6b114ea15d78eea74d0592b.

Original change's description:
> Base pacer padding in pause state on time since last send.
> 
> This clarifies the logic behind the pacer packet interval
> in paused state and prepares for future congestion window
> functionality.
> 
> Bug: None
> Change-Id: Ibf6e23f73523b43742830353915b2b94d09a6fc9
> Reviewed-on: https://webrtc-review.googlesource.com/52060
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22004}

Bug: None
Change-Id: I19fc02bc226ad59cb4cbd2a6ef8ac6f47212f834
Reviewed-on: https://webrtc-review.googlesource.com/53080
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22138}
2018-02-21 17:59:30 +00:00