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:
philipel
2016-08-24 02:45:35 -07:00
committed by Commit bot
parent cd8ae61b27
commit 0aa9d1808b
8 changed files with 22 additions and 0 deletions

View File

@ -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_);

View File

@ -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;

View File

@ -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;

View File

@ -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));

View File

@ -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;
} }
} }

View File

@ -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() {}
}; };

View File

@ -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);

View File

@ -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_;