Making RemoteRateControl::min_configured_bit_rate_ configurable

The minimum bitrate can now be configured from WrappingBitrateEstimator.

BUG=2698
R=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/5699004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5279 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrik.lundin@webrtc.org
2013-12-13 08:42:42 +00:00
parent a9890800e0
commit e9abd591d7
11 changed files with 51 additions and 21 deletions

View File

@@ -69,7 +69,8 @@ struct RemoteBitrateEstimatorFactory {
virtual RemoteBitrateEstimator* Create(
RemoteBitrateObserver* observer,
Clock* clock) const;
Clock* clock,
uint32_t min_bitrate_bps) const;
};
struct AbsoluteSendTimeRemoteBitrateEstimatorFactory
@@ -79,7 +80,8 @@ struct AbsoluteSendTimeRemoteBitrateEstimatorFactory
virtual RemoteBitrateEstimator* Create(
RemoteBitrateObserver* observer,
Clock* clock) const;
Clock* clock,
uint32_t min_bitrate_bps) const;
};
} // namespace webrtc

View File

@@ -24,7 +24,8 @@ namespace {
class RemoteBitrateEstimatorSingleStream : public RemoteBitrateEstimator {
public:
RemoteBitrateEstimatorSingleStream(RemoteBitrateObserver* observer,
Clock* clock);
Clock* clock,
uint32_t min_bitrate_bps);
virtual ~RemoteBitrateEstimatorSingleStream() {}
// Called for each incoming packet. If this is a new SSRC, a new
@@ -72,9 +73,11 @@ class RemoteBitrateEstimatorSingleStream : public RemoteBitrateEstimator {
RemoteBitrateEstimatorSingleStream::RemoteBitrateEstimatorSingleStream(
RemoteBitrateObserver* observer,
Clock* clock)
Clock* clock,
uint32_t min_bitrate_bps)
: clock_(clock),
incoming_bitrate_(500, 8000),
remote_rate_(min_bitrate_bps),
observer_(observer),
crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
last_process_time_(-1) {
@@ -220,13 +223,17 @@ void RemoteBitrateEstimatorSingleStream::GetSsrcs(
RemoteBitrateEstimator* RemoteBitrateEstimatorFactory::Create(
RemoteBitrateObserver* observer,
Clock* clock) const {
return new RemoteBitrateEstimatorSingleStream(observer, clock);
Clock* clock,
uint32_t min_bitrate_bps) const {
return new RemoteBitrateEstimatorSingleStream(observer, clock,
min_bitrate_bps);
}
RemoteBitrateEstimator* AbsoluteSendTimeRemoteBitrateEstimatorFactory::Create(
RemoteBitrateObserver* observer,
Clock* clock) const {
return new RemoteBitrateEstimatorSingleStream(observer, clock);
Clock* clock,
uint32_t min_bitrate_bps) const {
return new RemoteBitrateEstimatorSingleStream(observer, clock,
min_bitrate_bps);
}
} // namespace webrtc

View File

@@ -17,11 +17,14 @@ namespace webrtc {
class RemoteBitrateEstimatorSingleTest : public RemoteBitrateEstimatorTest {
public:
static const uint32_t kRemoteBitrateEstimatorMinBitrateBps = 30000;
RemoteBitrateEstimatorSingleTest() {}
virtual void SetUp() {
bitrate_estimator_.reset(RemoteBitrateEstimatorFactory().Create(
bitrate_observer_.get(),
&clock_));
&clock_,
kRemoteBitrateEstimatorMinBitrateBps));
}
protected:
DISALLOW_COPY_AND_ASSIGN(RemoteBitrateEstimatorSingleTest);

View File

@@ -22,8 +22,8 @@ namespace webrtc {
const unsigned int kDefaultRttMs = 200;
RemoteRateControl::RemoteRateControl()
: min_configured_bit_rate_(30000),
RemoteRateControl::RemoteRateControl(uint32_t min_bitrate_bps)
: min_configured_bit_rate_(min_bitrate_bps),
max_configured_bit_rate_(30000000),
current_bit_rate_(max_configured_bit_rate_),
max_hold_rate_(0),
@@ -45,7 +45,7 @@ RemoteRateControl::RemoteRateControl()
}
void RemoteRateControl::Reset() {
*this = RemoteRateControl();
*this = RemoteRateControl(min_configured_bit_rate_);
came_from_state_ = kRcHold;
}

View File

@@ -17,7 +17,7 @@ namespace webrtc {
class RemoteRateControl {
public:
RemoteRateControl();
explicit RemoteRateControl(uint32_t min_bitrate_bps);
~RemoteRateControl() {}
void Reset();

View File

@@ -36,6 +36,8 @@ template<typename T> void DeleteElements(T* container) {
class BweTest::TestedEstimator : public RemoteBitrateObserver {
public:
static const uint32_t kRemoteBitrateEstimatorMinBitrateBps = 30000;
TestedEstimator(const string& test_name,
const BweTestConfig::EstimatorConfig& config)
: debug_name_(config.debug_name),
@@ -43,7 +45,8 @@ class BweTest::TestedEstimator : public RemoteBitrateObserver {
stats_(),
relative_estimator_stats_(),
latest_estimate_bps_(-1),
estimator_(config.estimator_factory->Create(this, &clock_)),
estimator_(config.estimator_factory->Create(
this, &clock_, kRemoteBitrateEstimatorMinBitrateBps)),
relative_estimator_(NULL),
baseline_(BaseLineFileInterface::Create(test_name + "_" + debug_name_,
config.update_baseline)) {