Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(494)

Unified Diff: webrtc/video_engine/vie_channel_group.cc

Issue 1368943002: Fix suspend below min bitrate in new API by making it possible to set min bitrate at the receive-si… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Merge. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video_engine/vie_channel_group.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video_engine/vie_channel_group.cc
diff --git a/webrtc/video_engine/vie_channel_group.cc b/webrtc/video_engine/vie_channel_group.cc
index 6553ce2e04dcea487b7d4338ec72d1d1ac48060a..ed4332ab08adc778581c142574912206b9a8140c 100644
--- a/webrtc/video_engine/vie_channel_group.cc
+++ b/webrtc/video_engine/vie_channel_group.cc
@@ -43,12 +43,10 @@ class WrappingBitrateEstimator : public RemoteBitrateEstimator {
: observer_(observer),
clock_(clock),
crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
- min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps),
- rbe_(new RemoteBitrateEstimatorSingleStream(observer_,
- clock_,
- min_bitrate_bps_)),
+ rbe_(new RemoteBitrateEstimatorSingleStream(observer_, clock_)),
using_absolute_send_time_(false),
- packets_since_absolute_send_time_(0) {}
+ packets_since_absolute_send_time_(0),
+ min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps) {}
virtual ~WrappingBitrateEstimator() {}
@@ -92,6 +90,12 @@ class WrappingBitrateEstimator : public RemoteBitrateEstimator {
return rbe_->GetStats(output);
}
+ void SetMinBitrate(int min_bitrate_bps) {
+ CriticalSectionScoped cs(crit_sect_.get());
+ rbe_->SetMinBitrate(min_bitrate_bps);
+ min_bitrate_bps_ = min_bitrate_bps;
+ }
+
private:
void PickEstimatorFromHeader(const RTPHeader& header)
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_.get()) {
@@ -121,21 +125,20 @@ class WrappingBitrateEstimator : public RemoteBitrateEstimator {
// Instantiate RBE for Time Offset or Absolute Send Time extensions.
void PickEstimator() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_.get()) {
if (using_absolute_send_time_) {
- rbe_.reset(new RemoteBitrateEstimatorAbsSendTime(observer_, clock_,
- min_bitrate_bps_));
+ rbe_.reset(new RemoteBitrateEstimatorAbsSendTime(observer_, clock_));
} else {
- rbe_.reset(new RemoteBitrateEstimatorSingleStream(observer_, clock_,
- min_bitrate_bps_));
+ rbe_.reset(new RemoteBitrateEstimatorSingleStream(observer_, clock_));
}
+ rbe_->SetMinBitrate(min_bitrate_bps_);
}
RemoteBitrateObserver* observer_;
Clock* clock_;
rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
- const uint32_t min_bitrate_bps_;
rtc::scoped_ptr<RemoteBitrateEstimator> rbe_;
bool using_absolute_send_time_;
uint32_t packets_since_absolute_send_time_;
+ int min_bitrate_bps_;
RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(WrappingBitrateEstimator);
};
@@ -165,7 +168,8 @@ ChannelGroup::ChannelGroup(ProcessThread* process_thread)
// construction.
bitrate_controller_(
BitrateController::CreateBitrateController(Clock::GetRealTimeClock(),
- this)) {
+ this)),
+ min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps) {
call_stats_->RegisterStatsObserver(remote_bitrate_estimator_.get());
pacer_thread_->RegisterModule(pacer_.get());
@@ -213,8 +217,9 @@ bool ChannelGroup::CreateSendChannel(int channel_id,
Clock::GetRealTimeClock(), process_thread_));
transport_feedback_adapter_->SetBitrateEstimator(
new RemoteBitrateEstimatorAbsSendTime(
- transport_feedback_adapter_.get(), Clock::GetRealTimeClock(),
- RemoteBitrateEstimator::kDefaultMinBitrateBps));
+ transport_feedback_adapter_.get(), Clock::GetRealTimeClock()));
+ transport_feedback_adapter_->GetBitrateEstimator()->SetMinBitrate(
+ min_bitrate_bps_);
call_stats_->RegisterStatsObserver(transport_feedback_adapter_.get());
}
transport_feedback_observer = transport_feedback_adapter_.get();
@@ -364,6 +369,20 @@ void ChannelGroup::SetSyncInterface(VoEVideoSync* sync_interface) {
channel.second->SetVoiceChannel(-1, sync_interface);
}
+void ChannelGroup::SetBweBitrates(int min_bitrate_bps,
+ int start_bitrate_bps,
+ int max_bitrate_bps) {
+ if (start_bitrate_bps > 0)
+ bitrate_controller_->SetStartBitrate(start_bitrate_bps);
+ bitrate_controller_->SetMinMaxBitrate(min_bitrate_bps, max_bitrate_bps);
+ if (remote_bitrate_estimator_.get())
+ remote_bitrate_estimator_->SetMinBitrate(min_bitrate_bps);
+ if (transport_feedback_adapter_.get())
+ transport_feedback_adapter_->GetBitrateEstimator()->SetMinBitrate(
+ min_bitrate_bps);
+ min_bitrate_bps_ = min_bitrate_bps;
+}
+
BitrateController* ChannelGroup::GetBitrateController() const {
return bitrate_controller_.get();
}
« no previous file with comments | « webrtc/video_engine/vie_channel_group.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698