Chromium Code Reviews| Index: webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
| diff --git a/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc b/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
| index 561fde939180b74e0cad8b606952487c984eabbd..37f49df997ab6bd633b8e75165f032c0dc9970bf 100644 |
| --- a/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
| +++ b/webrtc/modules/congestion_controller/probe_bitrate_estimator.cc |
| @@ -48,6 +48,14 @@ ProbingResult ProbeBitrateEstimator::PacketFeedback( |
| } |
| AggregatedCluster* cluster = &clusters_[packet_info.probe_cluster_id]; |
| + if (cluster->sequence_numbers.count(packet_info.sequence_number) == 1) { |
|
danilchap
2016/08/18 19:29:08
may be better compare with 0:
.count(seq_number) >
|
| + LOG(LS_INFO) << "Probing packet with sequence number " |
| + << packet_info.sequence_number |
| + << " already inserted into cluster with id " |
| + << packet_info.probe_cluster_id << "."; |
| + return ProbingResult(); |
| + } |
| + |
| cluster->first_send_ms = |
| std::min(cluster->first_send_ms, packet_info.send_time_ms); |
| cluster->last_send_ms = |
| @@ -57,13 +65,13 @@ ProbingResult ProbeBitrateEstimator::PacketFeedback( |
| cluster->last_receive_ms = |
| std::max(cluster->last_receive_ms, packet_info.arrival_time_ms); |
| cluster->size += packet_info.payload_size * 8; |
| - cluster->num_probes += 1; |
| + cluster->sequence_numbers.insert(packet_info.sequence_number); |
| // Clean up old clusters. |
| while (clusters_.size() > kMaxNumSavedClusters) |
| clusters_.erase(clusters_.begin()); |
| - if (cluster->num_probes < kMinNumProbesValidCluster) |
| + if (cluster->sequence_numbers.size() < kMinNumProbesValidCluster) |
| return ProbingResult(); |
| float send_interval_ms = cluster->last_send_ms - cluster->first_send_ms; |
| @@ -74,7 +82,8 @@ ProbingResult ProbeBitrateEstimator::PacketFeedback( |
| // the last/first packet we expand the interval by the average inverval |
| // between the probing packets. |
| float interval_correction = |
| - static_cast<float>(cluster->num_probes) / (cluster->num_probes - 1); |
| + static_cast<float>(cluster->sequence_numbers.size()) / |
| + (cluster->sequence_numbers.size() - 1); |
| send_interval_ms *= interval_correction; |
| receive_interval_ms *= interval_correction; |