Set send side bitrate estimate on successful probing attempt.
BUG=webrtc:5859 Review-Url: https://codereview.webrtc.org/2263973004 Cr-Commit-Position: refs/heads/master@{#13887}
This commit is contained in:
@ -182,6 +182,14 @@ void BitrateControllerImpl::OnReceivedEstimatedBitrate(uint32_t bitrate) {
|
|||||||
MaybeTriggerOnNetworkChanged();
|
MaybeTriggerOnNetworkChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BitrateControllerImpl::UpdateProbeBitrate(uint32_t bitrate_bps) {
|
||||||
|
{
|
||||||
|
rtc::CritScope cs(&critsect_);
|
||||||
|
bandwidth_estimation_.SetSendBitrate(bitrate_bps);
|
||||||
|
}
|
||||||
|
MaybeTriggerOnNetworkChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void BitrateControllerImpl::UpdateDelayBasedEstimate(uint32_t bitrate_bps) {
|
void BitrateControllerImpl::UpdateDelayBasedEstimate(uint32_t bitrate_bps) {
|
||||||
{
|
{
|
||||||
rtc::CritScope cs(&critsect_);
|
rtc::CritScope cs(&critsect_);
|
||||||
|
|||||||
@ -61,6 +61,8 @@ class BitrateControllerImpl : public BitrateController {
|
|||||||
uint8_t* fraction_loss,
|
uint8_t* fraction_loss,
|
||||||
int64_t* rtt) override;
|
int64_t* rtt) override;
|
||||||
|
|
||||||
|
void UpdateProbeBitrate(uint32_t bitrate_bps) override;
|
||||||
|
|
||||||
int64_t TimeUntilNextProcess() override;
|
int64_t TimeUntilNextProcess() override;
|
||||||
void Process() override;
|
void Process() override;
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ class BitrateController : public Module {
|
|||||||
|
|
||||||
virtual void UpdateDelayBasedEstimate(uint32_t bitrate_bps) = 0;
|
virtual void UpdateDelayBasedEstimate(uint32_t bitrate_bps) = 0;
|
||||||
|
|
||||||
|
virtual void UpdateProbeBitrate(uint32_t bitrate_bps) = 0;
|
||||||
|
|
||||||
// Gets the available payload bandwidth in bits per second. Note that
|
// Gets the available payload bandwidth in bits per second. Note that
|
||||||
// this bandwidth excludes packet headers.
|
// this bandwidth excludes packet headers.
|
||||||
virtual bool AvailableBandwidth(uint32_t* bandwidth) const = 0;
|
virtual bool AvailableBandwidth(uint32_t* bandwidth) const = 0;
|
||||||
|
|||||||
@ -38,6 +38,7 @@ class MockBitrateController : public BitrateController {
|
|||||||
MOCK_METHOD3(ResetBitrates,
|
MOCK_METHOD3(ResetBitrates,
|
||||||
void(int bitrate_bps, int min_bitrate_bps, int max_bitrate_bps));
|
void(int bitrate_bps, int min_bitrate_bps, int max_bitrate_bps));
|
||||||
MOCK_METHOD1(UpdateDelayBasedEstimate, void(uint32_t bitrate_bps));
|
MOCK_METHOD1(UpdateDelayBasedEstimate, void(uint32_t bitrate_bps));
|
||||||
|
MOCK_METHOD1(UpdateProbeBitrate, void(uint32_t bitrate_bps));
|
||||||
MOCK_METHOD1(SetEventLog, void(RtcEventLog* event_log));
|
MOCK_METHOD1(SetEventLog, void(RtcEventLog* event_log));
|
||||||
MOCK_CONST_METHOD1(AvailableBandwidth, bool(uint32_t* bandwidth));
|
MOCK_CONST_METHOD1(AvailableBandwidth, bool(uint32_t* bandwidth));
|
||||||
MOCK_METHOD1(SetReservedBitrate, void(uint32_t reserved_bitrate_bps));
|
MOCK_METHOD1(SetReservedBitrate, void(uint32_t reserved_bitrate_bps));
|
||||||
|
|||||||
@ -95,6 +95,7 @@ void DelayBasedBwe::IncomingPacketInfo(const PacketInfo& info) {
|
|||||||
int bps = probe_bitrate_estimator_.HandleProbeAndEstimateBitrate(info);
|
int bps = probe_bitrate_estimator_.HandleProbeAndEstimateBitrate(info);
|
||||||
if (bps > 0) {
|
if (bps > 0) {
|
||||||
remote_rate_.SetEstimate(bps, info.arrival_time_ms);
|
remote_rate_.SetEstimate(bps, info.arrival_time_ms);
|
||||||
|
observer_->OnProbeBitrate(bps);
|
||||||
update_estimate = true;
|
update_estimate = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,6 +35,8 @@ class RemoteBitrateObserver {
|
|||||||
virtual void OnReceiveBitrateChanged(const std::vector<uint32_t>& ssrcs,
|
virtual void OnReceiveBitrateChanged(const std::vector<uint32_t>& ssrcs,
|
||||||
uint32_t bitrate) = 0;
|
uint32_t bitrate) = 0;
|
||||||
|
|
||||||
|
virtual void OnProbeBitrate(uint32_t bitrate) {}
|
||||||
|
|
||||||
virtual ~RemoteBitrateObserver() {}
|
virtual ~RemoteBitrateObserver() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -142,6 +142,10 @@ void TransportFeedbackAdapter::OnReceiveBitrateChanged(
|
|||||||
bitrate_controller_->UpdateDelayBasedEstimate(bitrate);
|
bitrate_controller_->UpdateDelayBasedEstimate(bitrate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TransportFeedbackAdapter::OnProbeBitrate(uint32_t bitrate) {
|
||||||
|
bitrate_controller_->UpdateProbeBitrate(bitrate);
|
||||||
|
}
|
||||||
|
|
||||||
void TransportFeedbackAdapter::OnRttUpdate(int64_t avg_rtt_ms,
|
void TransportFeedbackAdapter::OnRttUpdate(int64_t avg_rtt_ms,
|
||||||
int64_t max_rtt_ms) {
|
int64_t max_rtt_ms) {
|
||||||
RTC_DCHECK(bitrate_estimator_.get() != nullptr);
|
RTC_DCHECK(bitrate_estimator_.get() != nullptr);
|
||||||
|
|||||||
@ -56,6 +56,8 @@ class TransportFeedbackAdapter : public TransportFeedbackObserver,
|
|||||||
void OnReceiveBitrateChanged(const std::vector<uint32_t>& ssrcs,
|
void OnReceiveBitrateChanged(const std::vector<uint32_t>& ssrcs,
|
||||||
uint32_t bitrate) override;
|
uint32_t bitrate) override;
|
||||||
|
|
||||||
|
void OnProbeBitrate(uint32_t bitrate) override;
|
||||||
|
|
||||||
rtc::CriticalSection lock_;
|
rtc::CriticalSection lock_;
|
||||||
SendTimeHistory send_time_history_ GUARDED_BY(&lock_);
|
SendTimeHistory send_time_history_ GUARDED_BY(&lock_);
|
||||||
BitrateController* bitrate_controller_;
|
BitrateController* bitrate_controller_;
|
||||||
|
|||||||
Reference in New Issue
Block a user