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

Side by Side Diff: webrtc/modules/congestion_controller/transport_feedback_adapter.cc

Issue 2638083002: Attach TransportFeedbackPacketLossTracker to ANA (PLR only) (Closed)
Patch Set: event_log_visualizer Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 16 matching lines...) Expand all
27 27
28 TransportFeedbackAdapter::TransportFeedbackAdapter(const Clock* clock) 28 TransportFeedbackAdapter::TransportFeedbackAdapter(const Clock* clock)
29 : send_side_bwe_with_overhead_( 29 : send_side_bwe_with_overhead_(
30 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")), 30 webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")),
31 transport_overhead_bytes_per_packet_(0), 31 transport_overhead_bytes_per_packet_(0),
32 send_time_history_(clock, kSendTimeHistoryWindowMs), 32 send_time_history_(clock, kSendTimeHistoryWindowMs),
33 clock_(clock), 33 clock_(clock),
34 current_offset_ms_(kNoTimestamp), 34 current_offset_ms_(kNoTimestamp),
35 last_timestamp_us_(kNoTimestamp) {} 35 last_timestamp_us_(kNoTimestamp) {}
36 36
37 TransportFeedbackAdapter::~TransportFeedbackAdapter() {} 37 TransportFeedbackAdapter::~TransportFeedbackAdapter() {
38 RTC_DCHECK(observers_.empty());
39 }
38 40
39 void TransportFeedbackAdapter::AddPacket(uint16_t sequence_number, 41 void TransportFeedbackAdapter::RegisterTransportFeedbackAdapterObserver(
42 TransportFeedbackAdapterObserver* observer) {
43 rtc::CritScope cs(&observers_lock_);
44 RTC_DCHECK(observer);
45 if (std::find(observers_.begin(), observers_.end(), observer) ==
46 observers_.end()) {
47 observers_.push_back(observer);
48 } else {
49 RTC_NOTREACHED();
50 }
51 }
52
53 void TransportFeedbackAdapter::DeRegisterTransportFeedbackAdapterObserver(
54 TransportFeedbackAdapterObserver* observer) {
55 rtc::CritScope cs(&observers_lock_);
56 RTC_DCHECK(observer);
57 auto elem = std::find(observers_.begin(), observers_.end(), observer);
58 if (elem != observers_.end()) {
59 observers_.erase(elem);
60 } else {
61 RTC_NOTREACHED();
62 }
63 }
64
65 void TransportFeedbackAdapter::AddPacket(uint32_t ssrc,
66 uint16_t sequence_number,
40 size_t length, 67 size_t length,
41 const PacedPacketInfo& pacing_info) { 68 const PacedPacketInfo& pacing_info) {
42 rtc::CritScope cs(&lock_); 69 {
43 if (send_side_bwe_with_overhead_) { 70 rtc::CritScope cs(&lock_);
44 length += transport_overhead_bytes_per_packet_; 71 if (send_side_bwe_with_overhead_) {
72 length += transport_overhead_bytes_per_packet_;
73 }
74 send_time_history_.AddAndRemoveOld(sequence_number, length, pacing_info);
45 } 75 }
46 send_time_history_.AddAndRemoveOld(sequence_number, length, pacing_info); 76
77 {
78 rtc::CritScope cs(&observers_lock_);
79 for (auto observer : observers_) {
80 observer->OnPacketAdded(ssrc, sequence_number);
81 }
82 }
47 } 83 }
48 84
49 void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number, 85 void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number,
50 int64_t send_time_ms) { 86 int64_t send_time_ms) {
51 rtc::CritScope cs(&lock_); 87 rtc::CritScope cs(&lock_);
52 send_time_history_.OnSentPacket(sequence_number, send_time_ms); 88 send_time_history_.OnSentPacket(sequence_number, send_time_ms);
53 } 89 }
54 90
55 void TransportFeedbackAdapter::SetTransportOverhead( 91 void TransportFeedbackAdapter::SetTransportOverhead(
56 int transport_overhead_bytes_per_packet) { 92 int transport_overhead_bytes_per_packet) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 << " packet" << (failed_lookups > 1 ? "s" : "") 170 << " packet" << (failed_lookups > 1 ? "s" : "")
135 << ". Send time history too small?"; 171 << ". Send time history too small?";
136 } 172 }
137 } 173 }
138 return packet_feedback_vector; 174 return packet_feedback_vector;
139 } 175 }
140 176
141 void TransportFeedbackAdapter::OnTransportFeedback( 177 void TransportFeedbackAdapter::OnTransportFeedback(
142 const rtcp::TransportFeedback& feedback) { 178 const rtcp::TransportFeedback& feedback) {
143 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback); 179 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback);
180 {
181 rtc::CritScope cs(&observers_lock_);
182 for (auto observer : observers_) {
183 observer->OnTransportFeedback(feedback);
184 }
185 }
144 } 186 }
145 187
146 std::vector<PacketFeedback> 188 std::vector<PacketFeedback>
147 TransportFeedbackAdapter::GetTransportFeedbackVector() const { 189 TransportFeedbackAdapter::GetTransportFeedbackVector() const {
148 return last_packet_feedback_vector_; 190 return last_packet_feedback_vector_;
149 } 191 }
150 } // namespace webrtc 192 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698