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:
parent
50b66d55f8
commit
2701bc93df
@ -23,6 +23,9 @@ class TargetTransferRateObserver {
|
|||||||
// Called to indicate target transfer rate as well as giving information about
|
// Called to indicate target transfer rate as well as giving information about
|
||||||
// the current estimate of network parameters.
|
// the current estimate of network parameters.
|
||||||
virtual void OnTargetTransferRate(TargetTransferRate) = 0;
|
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
|
// Configuration sent to factory create function. The parameters here are
|
||||||
|
|||||||
@ -77,6 +77,11 @@ BitrateAllocator::~BitrateAllocator() {
|
|||||||
num_pause_events_);
|
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
|
// static
|
||||||
uint8_t BitrateAllocator::GetTransmissionMaxBitrateMultiplier() {
|
uint8_t BitrateAllocator::GetTransmissionMaxBitrateMultiplier() {
|
||||||
uint64_t multiplier = strtoul(webrtc::field_trial::FindFullName(
|
uint64_t multiplier = strtoul(webrtc::field_trial::FindFullName(
|
||||||
|
|||||||
@ -100,6 +100,8 @@ class BitrateAllocator : public BitrateAllocatorInterface {
|
|||||||
explicit BitrateAllocator(LimitObserver* limit_observer);
|
explicit BitrateAllocator(LimitObserver* limit_observer);
|
||||||
~BitrateAllocator() override;
|
~BitrateAllocator() override;
|
||||||
|
|
||||||
|
void UpdateStartRate(uint32_t start_rate_bps);
|
||||||
|
|
||||||
// Allocate target_bitrate across the registered BitrateAllocatorObservers.
|
// Allocate target_bitrate across the registered BitrateAllocatorObservers.
|
||||||
void OnNetworkChanged(uint32_t target_bitrate_bps,
|
void OnNetworkChanged(uint32_t target_bitrate_bps,
|
||||||
uint32_t link_capacity_bps,
|
uint32_t link_capacity_bps,
|
||||||
|
|||||||
10
call/call.cc
10
call/call.cc
@ -215,6 +215,7 @@ class Call final : public webrtc::Call,
|
|||||||
|
|
||||||
// Implements TargetTransferRateObserver,
|
// Implements TargetTransferRateObserver,
|
||||||
void OnTargetTransferRate(TargetTransferRate msg) override;
|
void OnTargetTransferRate(TargetTransferRate msg) override;
|
||||||
|
void OnStartRateUpdate(DataRate start_rate) override;
|
||||||
|
|
||||||
// Implements BitrateAllocator::LimitObserver.
|
// Implements BitrateAllocator::LimitObserver.
|
||||||
void OnAllocationLimitsChanged(uint32_t min_send_bitrate_bps,
|
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);
|
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) {
|
void Call::OnTargetTransferRate(TargetTransferRate msg) {
|
||||||
// TODO(bugs.webrtc.org/9719)
|
// TODO(bugs.webrtc.org/9719)
|
||||||
// Call::OnTargetTransferRate requires that on target transfer rate is invoked
|
// Call::OnTargetTransferRate requires that on target transfer rate is invoked
|
||||||
|
|||||||
@ -271,6 +271,7 @@ void RtpTransportControllerSend::RegisterTargetTransferRateObserver(
|
|||||||
RTC_DCHECK_RUN_ON(&task_queue_);
|
RTC_DCHECK_RUN_ON(&task_queue_);
|
||||||
RTC_DCHECK(observer_ == nullptr);
|
RTC_DCHECK(observer_ == nullptr);
|
||||||
observer_ = observer;
|
observer_ = observer;
|
||||||
|
observer_->OnStartRateUpdate(*initial_config_.constraints.starting_rate);
|
||||||
MaybeCreateControllers();
|
MaybeCreateControllers();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user