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

Unified Diff: webrtc/modules/congestion_controller/transport_feedback_adapter.cc

Issue 2684353004: Reduce the BWE with 50% when feedback is received too late. (Closed)
Patch Set: Created 3 years, 10 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/transport_feedback_adapter.cc
diff --git a/webrtc/modules/congestion_controller/transport_feedback_adapter.cc b/webrtc/modules/congestion_controller/transport_feedback_adapter.cc
index 87fab26c8af5c20f883cecc27e3bb17c97debc92..52f8e5118d6b5d0ef301a6ca2a89462389bcc709 100644
--- a/webrtc/modules/congestion_controller/transport_feedback_adapter.cc
+++ b/webrtc/modules/congestion_controller/transport_feedback_adapter.cc
@@ -24,7 +24,7 @@
namespace webrtc {
const int64_t kNoTimestamp = -1;
-const int64_t kSendTimeHistoryWindowMs = 10000;
+const int64_t kSendTimeHistoryWindowMs = 60000;
const int64_t kBaseTimestampScaleFactor =
rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8);
const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24);
@@ -44,7 +44,8 @@ TransportFeedbackAdapter::TransportFeedbackAdapter(
Clock* clock,
BitrateController* bitrate_controller)
: send_side_bwe_with_overhead_(webrtc::field_trial::FindFullName(
- "WebRTC-SendSideBwe-WithOverhead") == "Enabled"),
+ "WebRTC-SendSideBwe-WithOverhead") ==
+ "Enabled"),
transport_overhead_bytes_per_packet_(0),
send_time_history_(clock, kSendTimeHistoryWindowMs),
clock_(clock),
@@ -118,21 +119,25 @@ std::vector<PacketInfo> TransportFeedbackAdapter::GetPacketFeedbackVector(
}
last_timestamp_us_ = timestamp_us;
+ auto received_packets = feedback.GetReceivedPackets();
std::vector<PacketInfo> packet_feedback_vector;
- packet_feedback_vector.reserve(feedback.GetReceivedPackets().size());
+ packet_feedback_vector.reserve(received_packets.size());
+ if (received_packets.empty()) {
+ LOG(LS_INFO) << "Empty transport feedback packet received.";
+ return packet_feedback_vector;
+ }
{
rtc::CritScope cs(&lock_);
size_t failed_lookups = 0;
int64_t offset_us = 0;
+ int64_t timestamp_ms = 0;
for (const auto& packet : feedback.GetReceivedPackets()) {
offset_us += packet.delta_us();
- int64_t timestamp_ms = current_offset_ms_ + (offset_us / 1000);
+ timestamp_ms = current_offset_ms_ + (offset_us / 1000);
PacketInfo info(timestamp_ms, packet.sequence_number());
- if (send_time_history_.GetInfo(&info, true) && info.send_time_ms >= 0) {
- packet_feedback_vector.push_back(info);
- } else {
+ if (!send_time_history_.GetInfo(&info, true))
stefan-webrtc 2017/02/10 14:15:11 With this change we will add also acks which have
++failed_lookups;
- }
+ packet_feedback_vector.push_back(info);
}
std::sort(packet_feedback_vector.begin(), packet_feedback_vector.end(),
PacketInfoComparator());
@@ -154,8 +159,9 @@ void TransportFeedbackAdapter::OnTransportFeedback(
result = delay_based_bwe_->IncomingPacketFeedbackVector(
last_packet_feedback_vector_);
}
- if (result.updated)
+ if (result.updated) {
bitrate_controller_->OnDelayBasedBweResult(result);
+ }
}
std::vector<PacketInfo> TransportFeedbackAdapter::GetTransportFeedbackVector()

Powered by Google App Engine
This is Rietveld 408576698