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

Unified Diff: webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc

Issue 1208083002: Remove MimdRateControl and factories for RemoteBitrateEstimor. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Addressed comments Created 5 years, 5 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
Index: webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
diff --git a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
index 6bbb34328e1ca313381f60a0e66f86905aaa3aa2..032de13e728a070bb00e2c1f3b8a9a49960b11fb 100644
--- a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
+++ b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
@@ -7,17 +7,16 @@
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
-#include <map>
+
+#include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h"
#include "webrtc/base/constructormagic.h"
#include "webrtc/base/scoped_ptr.h"
#include "webrtc/base/thread_annotations.h"
-#include "webrtc/modules/remote_bitrate_estimator/rate_statistics.h"
-#include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h"
#include "webrtc/modules/remote_bitrate_estimator/inter_arrival.h"
#include "webrtc/modules/remote_bitrate_estimator/overuse_detector.h"
#include "webrtc/modules/remote_bitrate_estimator/overuse_estimator.h"
-#include "webrtc/modules/remote_bitrate_estimator/remote_rate_control.h"
+#include "webrtc/modules/remote_bitrate_estimator/aimd_rate_control.h"
#include "webrtc/system_wrappers/interface/clock.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/logging.h"
@@ -28,28 +27,7 @@ namespace webrtc {
enum { kTimestampGroupLengthMs = 5 };
static const double kTimestampToMs = 1.0 / 90.0;
-class RemoteBitrateEstimatorImpl : public RemoteBitrateEstimator {
- public:
- RemoteBitrateEstimatorImpl(RemoteBitrateObserver* observer,
- Clock* clock,
- RateControlType control_type,
- uint32_t min_bitrate_bps);
- virtual ~RemoteBitrateEstimatorImpl();
-
- void IncomingPacket(int64_t arrival_time_ms,
- size_t payload_size,
- const RTPHeader& header,
- bool was_paced) override;
- int32_t Process() override;
- int64_t TimeUntilNextProcess() override;
- void OnRttUpdate(int64_t rtt) override;
- void RemoveStream(unsigned int ssrc) override;
- bool LatestEstimate(std::vector<unsigned int>* ssrcs,
- unsigned int* bitrate_bps) const override;
- bool GetStats(ReceiveBandwidthEstimatorStats* output) const override;
-
- private:
- struct Detector {
+struct RemoteBitrateEstimatorSingleStream::Detector {
explicit Detector(int64_t last_packet_time_ms,
const OverUseDetectorOptions& options,
bool enable_burst_grouping)
@@ -64,43 +42,22 @@ class RemoteBitrateEstimatorImpl : public RemoteBitrateEstimator {
OveruseDetector detector;
};
- typedef std::map<unsigned int, Detector*> SsrcOveruseEstimatorMap;
-
- // Triggers a new estimate calculation.
- void UpdateEstimate(int64_t time_now)
- EXCLUSIVE_LOCKS_REQUIRED(crit_sect_.get());
-
- void GetSsrcs(std::vector<unsigned int>* ssrcs) const
- SHARED_LOCKS_REQUIRED(crit_sect_.get());
-
- Clock* clock_;
- SsrcOveruseEstimatorMap overuse_detectors_ GUARDED_BY(crit_sect_.get());
- RateStatistics incoming_bitrate_ GUARDED_BY(crit_sect_.get());
- rtc::scoped_ptr<RemoteRateControl> remote_rate_ GUARDED_BY(crit_sect_.get());
- RemoteBitrateObserver* observer_ GUARDED_BY(crit_sect_.get());
- rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
- int64_t last_process_time_;
- int64_t process_interval_ms_ GUARDED_BY(crit_sect_.get());
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(RemoteBitrateEstimatorImpl);
-};
-
-RemoteBitrateEstimatorImpl::RemoteBitrateEstimatorImpl(
- RemoteBitrateObserver* observer,
- Clock* clock,
- RateControlType control_type,
- uint32_t min_bitrate_bps)
- : clock_(clock),
- incoming_bitrate_(1000, 8000),
- remote_rate_(RemoteRateControl::Create(control_type, min_bitrate_bps)),
- observer_(observer),
- crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
- last_process_time_(-1),
- process_interval_ms_(kProcessIntervalMs) {
+ RemoteBitrateEstimatorSingleStream::RemoteBitrateEstimatorSingleStream(
+ RemoteBitrateObserver* observer,
+ Clock* clock,
+ uint32_t min_bitrate_bps)
+ : clock_(clock),
+ incoming_bitrate_(1000, 8000),
+ remote_rate_(new AimdRateControl(min_bitrate_bps)),
+ observer_(observer),
+ crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
+ last_process_time_(-1),
+ process_interval_ms_(kProcessIntervalMs) {
assert(observer_);
+ LOG(LS_INFO) << "RemoteBitrateEstimatorSingleStream: Instantiating.";
}
-RemoteBitrateEstimatorImpl::~RemoteBitrateEstimatorImpl() {
+RemoteBitrateEstimatorSingleStream::~RemoteBitrateEstimatorSingleStream() {
while (!overuse_detectors_.empty()) {
SsrcOveruseEstimatorMap::iterator it = overuse_detectors_.begin();
delete it->second;
@@ -108,10 +65,10 @@ RemoteBitrateEstimatorImpl::~RemoteBitrateEstimatorImpl() {
}
}
-void RemoteBitrateEstimatorImpl::IncomingPacket(int64_t arrival_time_ms,
- size_t payload_size,
- const RTPHeader& header,
- bool was_paced) {
+void RemoteBitrateEstimatorSingleStream::IncomingPacket(int64_t arrival_time_ms,
+ size_t payload_size,
+ const RTPHeader& header,
+ bool was_paced) {
uint32_t ssrc = header.ssrc;
uint32_t rtp_timestamp = header.timestamp +
header.extension.transmissionTimeOffset;
@@ -126,10 +83,8 @@ void RemoteBitrateEstimatorImpl::IncomingPacket(int64_t arrival_time_ms,
// automatically cleaned up when we have one RemoteBitrateEstimator per REMB
// group.
std::pair<SsrcOveruseEstimatorMap::iterator, bool> insert_result =
- overuse_detectors_.insert(std::make_pair(ssrc, new Detector(
- now_ms,
- OverUseDetectorOptions(),
- remote_rate_->GetControlType() == kAimdControl)));
+ overuse_detectors_.insert(std::make_pair(
+ ssrc, new Detector(now_ms, OverUseDetectorOptions(), true)));
it = insert_result.first;
}
Detector* estimator = it->second;
@@ -161,7 +116,7 @@ void RemoteBitrateEstimatorImpl::IncomingPacket(int64_t arrival_time_ms,
}
}
-int32_t RemoteBitrateEstimatorImpl::Process() {
+int32_t RemoteBitrateEstimatorSingleStream::Process() {
if (TimeUntilNextProcess() > 0) {
return 0;
}
@@ -173,7 +128,7 @@ int32_t RemoteBitrateEstimatorImpl::Process() {
return 0;
}
-int64_t RemoteBitrateEstimatorImpl::TimeUntilNextProcess() {
+int64_t RemoteBitrateEstimatorSingleStream::TimeUntilNextProcess() {
if (last_process_time_ < 0) {
return 0;
}
@@ -184,7 +139,7 @@ int64_t RemoteBitrateEstimatorImpl::TimeUntilNextProcess() {
}
}
-void RemoteBitrateEstimatorImpl::UpdateEstimate(int64_t now_ms) {
+void RemoteBitrateEstimatorSingleStream::UpdateEstimate(int64_t now_ms) {
BandwidthUsage bw_state = kBwNormal;
double sum_var_noise = 0.0;
SsrcOveruseEstimatorMap::iterator it = overuse_detectors_.begin();
@@ -209,8 +164,7 @@ void RemoteBitrateEstimatorImpl::UpdateEstimate(int64_t now_ms) {
}
// We can't update the estimate if we don't have any active streams.
if (overuse_detectors_.empty()) {
- remote_rate_.reset(RemoteRateControl::Create(
- remote_rate_->GetControlType(), remote_rate_->GetMinBitrate()));
+ remote_rate_.reset(new AimdRateControl(remote_rate_->GetMinBitrate()));
return;
}
double mean_noise_var = sum_var_noise /
@@ -231,12 +185,12 @@ void RemoteBitrateEstimatorImpl::UpdateEstimate(int64_t now_ms) {
}
}
-void RemoteBitrateEstimatorImpl::OnRttUpdate(int64_t rtt) {
+void RemoteBitrateEstimatorSingleStream::OnRttUpdate(int64_t rtt) {
CriticalSectionScoped cs(crit_sect_.get());
remote_rate_->SetRtt(rtt);
}
-void RemoteBitrateEstimatorImpl::RemoveStream(unsigned int ssrc) {
+void RemoteBitrateEstimatorSingleStream::RemoveStream(unsigned int ssrc) {
CriticalSectionScoped cs(crit_sect_.get());
SsrcOveruseEstimatorMap::iterator it = overuse_detectors_.find(ssrc);
if (it != overuse_detectors_.end()) {
@@ -245,7 +199,7 @@ void RemoteBitrateEstimatorImpl::RemoveStream(unsigned int ssrc) {
}
}
-bool RemoteBitrateEstimatorImpl::LatestEstimate(
+bool RemoteBitrateEstimatorSingleStream::LatestEstimate(
std::vector<unsigned int>* ssrcs,
unsigned int* bitrate_bps) const {
CriticalSectionScoped cs(crit_sect_.get());
@@ -261,13 +215,13 @@ bool RemoteBitrateEstimatorImpl::LatestEstimate(
return true;
}
-bool RemoteBitrateEstimatorImpl::GetStats(
+bool RemoteBitrateEstimatorSingleStream::GetStats(
ReceiveBandwidthEstimatorStats* output) const {
// Not implemented.
return false;
}
-void RemoteBitrateEstimatorImpl::GetSsrcs(
+void RemoteBitrateEstimatorSingleStream::GetSsrcs(
std::vector<unsigned int>* ssrcs) const {
assert(ssrcs);
ssrcs->resize(overuse_detectors_.size());
@@ -278,13 +232,4 @@ void RemoteBitrateEstimatorImpl::GetSsrcs(
}
}
-RemoteBitrateEstimator* RemoteBitrateEstimatorFactory::Create(
- webrtc::RemoteBitrateObserver* observer,
- webrtc::Clock* clock,
- RateControlType control_type,
- uint32_t min_bitrate_bps) const {
- LOG(LS_INFO) << "RemoteBitrateEstimatorFactory: Instantiating.";
- return new RemoteBitrateEstimatorImpl(observer, clock, control_type,
- min_bitrate_bps);
-}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698