Configuration in constructor of Goog CC.

Adding configuration of new GoogCcNetworkController to initializer, this
makes sure that it is properly initialized from the start. To achieve
this SendSideCongestionController waits until it has received the
necessary information to construct the object. This information should
be provided in the constructor for SendSideCongestionController in the
future.

Bug: webrtc:8415
Change-Id: Icc09b8b246bae9f9704b80855fc4caa3450b34fc
Reviewed-on: https://webrtc-review.googlesource.com/58099
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22404}
This commit is contained in:
Sebastian Jansson
2018-03-13 11:38:04 +01:00
committed by Commit Bot
parent e63afff364
commit efbcfb13a7
9 changed files with 228 additions and 108 deletions

View File

@ -41,6 +41,21 @@ class NetworkControllerObserver : public TargetTransferRateObserver {
virtual void OnProbeClusterConfig(ProbeClusterConfig) = 0;
};
// Configuration sent to factory create function. The parameters here are
// optional to use for a network controller implementation.
struct NetworkControllerConfig {
// The initial constraints to start with, these can be changed at any later
// time by calls to OnTargetRateConstraints.
TargetRateConstraints constraints;
// Initial stream specific configuration, these are changed at any later time
// by calls to OnStreamsConfig.
StreamsConfig stream_based_config;
// The initial bandwidth estimate to base target rate on. This should be used
// as the basis for initial OnTargetTransferRate and OnPacerConfig callbacks.
// Note that starting rate is only provided on construction.
DataRate starting_bandwidth;
};
// NetworkControllerInterface is implemented by network controllers. A network
// controller is a class that uses information about network state and traffic
// to estimate network parameters such as round trip time and bandwidth. Network
@ -82,7 +97,8 @@ class NetworkControllerFactoryInterface {
// Used to create a new network controller, requires an observer to be
// provided to handle callbacks.
virtual NetworkControllerInterface::uptr Create(
NetworkControllerObserver* observer) = 0;
NetworkControllerObserver* observer,
NetworkControllerConfig config) = 0;
// Returns the interval by which the network controller expects
// OnProcessInterval calls.
virtual TimeDelta GetProcessInterval() const = 0;

View File

@ -38,7 +38,6 @@ struct StreamsConfig {
struct TargetRateConstraints {
Timestamp at_time;
DataRate starting_rate;
DataRate min_data_rate;
DataRate max_data_rate;
};
@ -55,6 +54,7 @@ struct NetworkRouteChange {
// The TargetRateConstraints are set here so they can be changed synchronously
// when network route changes.
TargetRateConstraints constraints;
DataRate starting_rate;
};
struct SentPacket {