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

Unified Diff: webrtc/modules/congestion_controller/delay_based_bwe.h

Issue 2038023002: Use |probe_cluster_id| to cluster packets. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: BUILD file fix. Created 4 years, 6 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/congestion_controller/delay_based_bwe.h
diff --git a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h b/webrtc/modules/congestion_controller/delay_based_bwe.h
similarity index 66%
copy from webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h
copy to webrtc/modules/congestion_controller/delay_based_bwe.h
index a6119091ce75f965c69e145dd53555aeafd58383..05fbbd8752a380da3a1c38247076ecc2520a52be 100644
--- a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h
+++ b/webrtc/modules/congestion_controller/delay_based_bwe.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
+ * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
@@ -8,8 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#ifndef WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_REMOTE_BITRATE_ESTIMATOR_ABS_SEND_TIME_H_
-#define WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_REMOTE_BITRATE_ESTIMATOR_ABS_SEND_TIME_H_
+#ifndef WEBRTC_MODULES_CONGESTION_CONTROLLER_DELAY_BASED_BWE_H_
+#define WEBRTC_MODULES_CONGESTION_CONTROLLER_DELAY_BASED_BWE_H_
#include <list>
#include <map>
@@ -30,46 +30,10 @@
namespace webrtc {
-struct Probe {
- Probe(int64_t send_time_ms, int64_t recv_time_ms, size_t payload_size)
- : send_time_ms(send_time_ms),
- recv_time_ms(recv_time_ms),
- payload_size(payload_size) {}
- int64_t send_time_ms;
- int64_t recv_time_ms;
- size_t payload_size;
-};
-
-struct Cluster {
- Cluster()
- : send_mean_ms(0.0f),
- recv_mean_ms(0.0f),
- mean_size(0),
- count(0),
- num_above_min_delta(0) {}
-
- int GetSendBitrateBps() const {
- RTC_CHECK_GT(send_mean_ms, 0.0f);
- return mean_size * 8 * 1000 / send_mean_ms;
- }
-
- int GetRecvBitrateBps() const {
- RTC_CHECK_GT(recv_mean_ms, 0.0f);
- return mean_size * 8 * 1000 / recv_mean_ms;
- }
-
- float send_mean_ms;
- float recv_mean_ms;
- // TODO(holmer): Add some variance metric as well?
- size_t mean_size;
- int count;
- int num_above_min_delta;
-};
-
-class RemoteBitrateEstimatorAbsSendTime : public RemoteBitrateEstimator {
+class DelayBasedBwe : public RemoteBitrateEstimator {
public:
- explicit RemoteBitrateEstimatorAbsSendTime(RemoteBitrateObserver* observer);
- virtual ~RemoteBitrateEstimatorAbsSendTime() {}
+ explicit DelayBasedBwe(RemoteBitrateObserver* observer);
+ virtual ~DelayBasedBwe() {}
void IncomingPacketFeedbackVector(
const std::vector<PacketInfo>& packet_feedback_vector) override;
@@ -78,6 +42,13 @@ class RemoteBitrateEstimatorAbsSendTime : public RemoteBitrateEstimator {
size_t payload_size,
const RTPHeader& header,
bool was_paced) override;
+
+ void IncomingPacket(int64_t arrival_time_ms,
+ size_t payload_size,
+ const RTPHeader& header,
+ bool was_paced,
+ int probe_cluster_id);
+
// This class relies on Process() being called periodically (at least once
// every other second) for streams to be timed out properly. Therefore it
// shouldn't be detached from the ProcessThread except if it's about to be
@@ -91,19 +62,58 @@ class RemoteBitrateEstimatorAbsSendTime : public RemoteBitrateEstimator {
void SetMinBitrate(int min_bitrate_bps) override;
private:
+ struct Probe {
+ Probe(int64_t send_time_ms,
+ int64_t recv_time_ms,
+ size_t payload_size,
+ int cluster_id)
+ : send_time_ms(send_time_ms),
+ recv_time_ms(recv_time_ms),
+ payload_size(payload_size),
+ cluster_id(cluster_id) {}
+ int64_t send_time_ms;
+ int64_t recv_time_ms;
+ size_t payload_size;
+ int cluster_id;
+ };
+
+ struct Cluster {
+ Cluster()
+ : send_mean_ms(0.0f),
+ recv_mean_ms(0.0f),
+ mean_size(0),
+ count(0),
+ num_above_min_delta(0) {}
+
+ int GetSendBitrateBps() const {
+ RTC_CHECK_GT(send_mean_ms, 0.0f);
+ return mean_size * 8 * 1000 / send_mean_ms;
+ }
+
+ int GetRecvBitrateBps() const {
+ RTC_CHECK_GT(recv_mean_ms, 0.0f);
+ return mean_size * 8 * 1000 / recv_mean_ms;
+ }
+
+ float send_mean_ms;
+ float recv_mean_ms;
+ // TODO(holmer): Add some variance metric as well?
+ size_t mean_size;
+ int count;
+ int num_above_min_delta;
+ };
+
typedef std::map<uint32_t, int64_t> Ssrcs;
enum class ProbeResult { kBitrateUpdated, kNoUpdate };
- static bool IsWithinClusterBounds(int send_delta_ms,
- const Cluster& cluster_aggregate);
-
static void AddCluster(std::list<Cluster>* clusters, Cluster* cluster);
void IncomingPacketInfo(int64_t arrival_time_ms,
uint32_t send_time_24bits,
size_t payload_size,
uint32_t ssrc,
- bool was_paced);
+ bool was_paced,
+ int probe_cluster_id);
void ComputeClusters(std::list<Cluster>* clusters) const;
@@ -135,9 +145,9 @@ class RemoteBitrateEstimatorAbsSendTime : public RemoteBitrateEstimator {
Ssrcs ssrcs_ GUARDED_BY(&crit_);
AimdRateControl remote_rate_ GUARDED_BY(&crit_);
- RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RemoteBitrateEstimatorAbsSendTime);
+ RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(DelayBasedBwe);
};
} // namespace webrtc
-#endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_REMOTE_BITRATE_ESTIMATOR_ABS_SEND_TIME_H_
+#endif // WEBRTC_MODULES_CONGESTION_CONTROLLER_DELAY_BASED_BWE_H_

Powered by Google App Engine
This is Rietveld 408576698