From 6736df1778fe4c13d115f6449cff055f2af85b02 Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Wed, 21 Nov 2018 19:18:39 +0100 Subject: [PATCH] Moves BitrateAllocationUpdate to api. This way it can be forwarded to lower layers. This makes it easier to add information without having to change signatures of intermediate classes. This will be used in a later CL to use the link capacity in the Opus decoder. Bug: webrtc:9718 Change-Id: I4a4c9d104fedb0e4a0bb7f14d169475940edbf7e Reviewed-on: https://webrtc-review.googlesource.com/c/111508 Commit-Queue: Sebastian Jansson Reviewed-by: Karl Wiberg Cr-Commit-Position: refs/heads/master@{#25738} --- api/BUILD.gn | 11 ++++++++++ api/call/bitrate_allocation.h | 41 +++++++++++++++++++++++++++++++++++ call/BUILD.gn | 1 + call/bitrate_allocator.cc | 2 ++ call/bitrate_allocator.h | 10 +-------- 5 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 api/call/bitrate_allocation.h diff --git a/api/BUILD.gn b/api/BUILD.gn index 45f0a95e59..6c61fd11d2 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -273,6 +273,17 @@ rtc_source_set("transport_api") { ] } +rtc_source_set("bitrate_allocation") { + visibility = [ "*" ] + sources = [ + "call/bitrate_allocation.h", + ] + deps = [ + "units:data_rate", + "units:time_delta", + ] +} + rtc_source_set("simulated_network_api") { visibility = [ "*" ] sources = [ diff --git a/api/call/bitrate_allocation.h b/api/call/bitrate_allocation.h new file mode 100644 index 0000000000..2d7f21bc1e --- /dev/null +++ b/api/call/bitrate_allocation.h @@ -0,0 +1,41 @@ +/* + * Copyright 2018 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ +#ifndef API_CALL_BITRATE_ALLOCATION_H_ +#define API_CALL_BITRATE_ALLOCATION_H_ + +#include "api/units/data_rate.h" +#include "api/units/time_delta.h" + +namespace webrtc { + +// BitrateAllocationUpdate provides information to allocated streams about their +// bitrate allocation. It originates from the BitrateAllocater class and is +// propagated from there. +struct BitrateAllocationUpdate { + // The allocated target bitrate. Media streams should produce this amount of + // data. (Note that this may include packet overhead depending on + // configuration.) + DataRate target_bitrate = DataRate::Zero(); + // The allocated part of the estimated link capacity. This is more stable than + // the target as it is based on the underlying link capacity estimate. This + // should be used to change encoder configuration when the cost of change is + // high. + DataRate link_capacity = DataRate::Zero(); + // Predicted packet loss ratio. + double packet_loss_ratio = 0; + // Predicted round trip time. + TimeDelta round_trip_time = TimeDelta::PlusInfinity(); + // |bwe_period| is deprecated, use the link capacity allocation instead. + TimeDelta bwe_period = TimeDelta::PlusInfinity(); +}; + +} // namespace webrtc + +#endif // API_CALL_BITRATE_ALLOCATION_H_ diff --git a/call/BUILD.gn b/call/BUILD.gn index c1dc650b6b..f6ba4ec849 100644 --- a/call/BUILD.gn +++ b/call/BUILD.gn @@ -164,6 +164,7 @@ rtc_source_set("bitrate_allocator") { "bitrate_allocator.h", ] deps = [ + "../api:bitrate_allocation", "../api/units:data_rate", "../api/units:time_delta", "../modules/bitrate_controller", diff --git a/call/bitrate_allocator.cc b/call/bitrate_allocator.cc index d3cb2275b0..660981c30e 100644 --- a/call/bitrate_allocator.cc +++ b/call/bitrate_allocator.cc @@ -16,6 +16,8 @@ #include #include +#include "api/units/data_rate.h" +#include "api/units/time_delta.h" #include "modules/bitrate_controller/include/bitrate_controller.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" diff --git a/call/bitrate_allocator.h b/call/bitrate_allocator.h index dbdd14f84b..059f77b967 100644 --- a/call/bitrate_allocator.h +++ b/call/bitrate_allocator.h @@ -19,8 +19,7 @@ #include #include -#include "api/units/data_rate.h" -#include "api/units/time_delta.h" +#include "api/call/bitrate_allocation.h" #include "rtc_base/bitrateallocationstrategy.h" #include "rtc_base/sequenced_task_checker.h" @@ -28,13 +27,6 @@ namespace webrtc { class Clock; -struct BitrateAllocationUpdate { - DataRate target_bitrate = DataRate::Zero(); - DataRate link_capacity = DataRate::Zero(); - double packet_loss_ratio = 0; - TimeDelta round_trip_time = TimeDelta::PlusInfinity(); - TimeDelta bwe_period = TimeDelta::PlusInfinity(); -}; // Used by all send streams with adaptive bitrate, to get the currently // allocated bitrate for the send stream. The current network properties are // given at the same time, to let the send stream decide about possible loss