Chromium Code Reviews| Index: webrtc/modules/congestion_controller/send_side_congestion_controller.cc |
| diff --git a/webrtc/modules/congestion_controller/send_side_congestion_controller.cc b/webrtc/modules/congestion_controller/send_side_congestion_controller.cc |
| index 354ccaaaa58e67052d79c9b34992c62fe6610fef..317747352b0c0d8c1c3b34a6bb444e79c621e5db 100644 |
| --- a/webrtc/modules/congestion_controller/send_side_congestion_controller.cc |
| +++ b/webrtc/modules/congestion_controller/send_side_congestion_controller.cc |
| @@ -16,9 +16,11 @@ |
| #include "webrtc/base/checks.h" |
| #include "webrtc/base/logging.h" |
| +#include "webrtc/base/ptr_util.h" |
| #include "webrtc/base/rate_limiter.h" |
| #include "webrtc/base/socket.h" |
| #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" |
| +#include "webrtc/modules/congestion_controller/acknowledge_bitrate_estimator.h" |
| #include "webrtc/modules/congestion_controller/probe_controller.h" |
| #include "webrtc/modules/remote_bitrate_estimator/include/bwe_defines.h" |
| @@ -42,6 +44,24 @@ static void ClampBitrates(int* bitrate_bps, |
| *bitrate_bps = std::max(*min_bitrate_bps, *bitrate_bps); |
| } |
| +std::vector<webrtc::PacketFeedback> ReceivedPacketFeedbackVector( |
| + const std::vector<webrtc::PacketFeedback>& input) { |
| + std::vector<PacketFeedback> sorted_packet_feedback_vector; |
| + auto is_received = [](const webrtc::PacketFeedback& packet_feedback) { |
| + return packet_feedback.arrival_time_ms != |
| + webrtc::PacketFeedback::kNotReceived; |
| + }; |
| + std::copy_if(input.begin(), input.end(), |
| + std::back_inserter(sorted_packet_feedback_vector), is_received); |
| + return sorted_packet_feedback_vector; |
|
stefan-webrtc
2017/06/07 09:56:31
If this is already sorted here, why do we sort it
tschumi
2017/06/07 15:26:19
You are right there is no sorting. Will renamed th
|
| +} |
| + |
| +void SortPacketFeedbackVector( |
| + std::vector<webrtc::PacketFeedback>* const input) { |
| + RTC_DCHECK(input); |
| + std::sort(input->begin(), input->end(), PacketFeedbackComparator()); |
| +} |
| + |
| } // namespace |
| SendSideCongestionController::SendSideCongestionController( |
| @@ -67,6 +87,8 @@ SendSideCongestionController::SendSideCongestionController( |
| pacer_(std::move(pacer)), |
| bitrate_controller_( |
| BitrateController::CreateBitrateController(clock_, event_log)), |
| + acknowledged_bitrate_estimator_( |
| + rtc::MakeUnique<AcknowledgedBitrateEstimator>()), |
| probe_controller_(new ProbeController(pacer_.get(), clock_)), |
| retransmission_rate_limiter_( |
| new RateLimiter(clock, kRetransmitWindowSizeMs)), |
| @@ -145,6 +167,7 @@ void SendSideCongestionController::OnNetworkRouteChanged( |
| rtc::CritScope cs(&bwe_lock_); |
| min_bitrate_bps_ = min_bitrate_bps; |
| delay_based_bwe_.reset(new DelayBasedBwe(event_log_, clock_)); |
| + acknowledged_bitrate_estimator_.reset(new AcknowledgedBitrateEstimator()); |
| delay_based_bwe_->SetStartBitrate(bitrate_bps); |
| delay_based_bwe_->SetMinBitrate(min_bitrate_bps); |
| } |
| @@ -251,12 +274,16 @@ void SendSideCongestionController::OnTransportFeedback( |
| const rtcp::TransportFeedback& feedback) { |
| RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
| transport_feedback_adapter_.OnTransportFeedback(feedback); |
| - std::vector<PacketFeedback> feedback_vector = |
| - transport_feedback_adapter_.GetTransportFeedbackVector(); |
| + std::vector<PacketFeedback> feedback_vector = ReceivedPacketFeedbackVector( |
| + transport_feedback_adapter_.GetTransportFeedbackVector()); |
| + SortPacketFeedbackVector(&feedback_vector); |
| + acknowledged_bitrate_estimator_->IncomingPacketFeedbackVector( |
| + feedback_vector); |
| DelayBasedBwe::Result result; |
| { |
| rtc::CritScope cs(&bwe_lock_); |
| - result = delay_based_bwe_->IncomingPacketFeedbackVector(feedback_vector); |
| + result = delay_based_bwe_->IncomingPacketFeedbackVector( |
| + feedback_vector, acknowledged_bitrate_estimator_->bitrate_bps()); |
| } |
| if (result.updated) |
| bitrate_controller_->OnDelayBasedBweResult(result); |