Signals start rate when registering to TargetTransferRateObserver.

Bug: webrtc:10121
Change-Id: Ib608a98406d61225544d8b13bbcccb65c34e37f0
Reviewed-on: https://webrtc-review.googlesource.com/c/113814
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25983}
This commit is contained in:
Sebastian Jansson 2018-12-11 15:02:47 +01:00 committed by Commit Bot
parent 50b66d55f8
commit 2701bc93df
5 changed files with 21 additions and 0 deletions

View File

@ -23,6 +23,9 @@ class TargetTransferRateObserver {
// Called to indicate target transfer rate as well as giving information about
// the current estimate of network parameters.
virtual void OnTargetTransferRate(TargetTransferRate) = 0;
// Called to provide updates to the expected target rate in case it changes
// before the first call to OnTargetTransferRate.
virtual void OnStartRateUpdate(DataRate) {}
};
// Configuration sent to factory create function. The parameters here are

View File

@ -77,6 +77,11 @@ BitrateAllocator::~BitrateAllocator() {
num_pause_events_);
}
void BitrateAllocator::UpdateStartRate(uint32_t start_rate_bps) {
RTC_DCHECK_CALLED_SEQUENTIALLY(&sequenced_checker_);
last_non_zero_bitrate_bps_ = start_rate_bps;
}
// static
uint8_t BitrateAllocator::GetTransmissionMaxBitrateMultiplier() {
uint64_t multiplier = strtoul(webrtc::field_trial::FindFullName(

View File

@ -100,6 +100,8 @@ class BitrateAllocator : public BitrateAllocatorInterface {
explicit BitrateAllocator(LimitObserver* limit_observer);
~BitrateAllocator() override;
void UpdateStartRate(uint32_t start_rate_bps);
// Allocate target_bitrate across the registered BitrateAllocatorObservers.
void OnNetworkChanged(uint32_t target_bitrate_bps,
uint32_t link_capacity_bps,

View File

@ -215,6 +215,7 @@ class Call final : public webrtc::Call,
// Implements TargetTransferRateObserver,
void OnTargetTransferRate(TargetTransferRate msg) override;
void OnStartRateUpdate(DataRate start_rate) override;
// Implements BitrateAllocator::LimitObserver.
void OnAllocationLimitsChanged(uint32_t min_send_bitrate_bps,
@ -1091,6 +1092,15 @@ void Call::OnSentPacket(const rtc::SentPacket& sent_packet) {
transport_send_ptr_->OnSentPacket(sent_packet);
}
void Call::OnStartRateUpdate(DataRate start_rate) {
if (!transport_send_ptr_->GetWorkerQueue()->IsCurrent()) {
transport_send_ptr_->GetWorkerQueue()->PostTask(
[this, start_rate] { this->OnStartRateUpdate(start_rate); });
return;
}
bitrate_allocator_->UpdateStartRate(start_rate.bps<uint32_t>());
}
void Call::OnTargetTransferRate(TargetTransferRate msg) {
// TODO(bugs.webrtc.org/9719)
// Call::OnTargetTransferRate requires that on target transfer rate is invoked

View File

@ -271,6 +271,7 @@ void RtpTransportControllerSend::RegisterTargetTransferRateObserver(
RTC_DCHECK_RUN_ON(&task_queue_);
RTC_DCHECK(observer_ == nullptr);
observer_ = observer;
observer_->OnStartRateUpdate(*initial_config_.constraints.starting_rate);
MaybeCreateControllers();
});
}