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

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

Issue 2638083002: Attach TransportFeedbackPacketLossTracker to ANA (PLR only) (Closed)
Patch Set: SSRC() 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 18 matching lines...) Expand all
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 local_net_id_(0), 36 local_net_id_(0),
37 remote_net_id_(0) {} 37 remote_net_id_(0) {}
38 38
39 TransportFeedbackAdapter::~TransportFeedbackAdapter() {} 39 TransportFeedbackAdapter::~TransportFeedbackAdapter() {
40 RTC_DCHECK(observers_.empty());
41 }
40 42
41 void TransportFeedbackAdapter::AddPacket(uint16_t sequence_number, 43 void TransportFeedbackAdapter::RegisterTransportFeedbackAdapterObserver(
44 TransportFeedbackAdapterObserver* observer) {
45 rtc::CritScope cs(&observers_lock_);
46 RTC_DCHECK(observer);
47 if (std::find(observers_.begin(), observers_.end(), observer) ==
48 observers_.end()) {
49 observers_.push_back(observer);
50 } else {
51 RTC_NOTREACHED();
52 }
53 }
54
55 void TransportFeedbackAdapter::DeRegisterTransportFeedbackAdapterObserver(
56 TransportFeedbackAdapterObserver* observer) {
57 rtc::CritScope cs(&observers_lock_);
58 RTC_DCHECK(observer);
59 auto elem = std::find(observers_.begin(), observers_.end(), observer);
minyue-webrtc 2017/03/17 09:20:31 elem -> it
elad.alon_webrtc.org 2017/03/17 10:10:33 Will do.
60 if (elem != observers_.end()) {
minyue-webrtc 2017/03/17 09:20:31 RTC_DCHECK_NE(observers_.end(), it);
elad.alon_webrtc.org 2017/03/17 10:10:33 Will do.
elad.alon_webrtc.org 2017/03/17 13:40:06 Minyue, FYI, the RTC_DCHECK_EQ/_NE doesn't seem to
minyue-webrtc 2017/03/21 09:22:58 RTC_DCHECK( xx != xx) is fine. Thanks.
61 observers_.erase(elem);
62 } else {
63 RTC_NOTREACHED();
64 }
65 }
66
67 void TransportFeedbackAdapter::AddPacket(uint32_t ssrc,
68 uint16_t sequence_number,
42 size_t length, 69 size_t length,
43 const PacedPacketInfo& pacing_info) { 70 const PacedPacketInfo& pacing_info) {
44 rtc::CritScope cs(&lock_); 71 {
45 if (send_side_bwe_with_overhead_) { 72 rtc::CritScope cs(&lock_);
minyue-webrtc 2017/03/17 09:20:31 lock_ as a name becomes unclear
elad.alon_webrtc.org 2017/03/17 10:10:33 Stefan, do you have a specific name you'd like?
stefan-webrtc 2017/03/21 11:35:47 Not really since it's a generic lock used for a bu
minyue-webrtc 2017/03/21 11:36:51 Acknowledged.
46 length += transport_overhead_bytes_per_packet_; 73 if (send_side_bwe_with_overhead_) {
74 length += transport_overhead_bytes_per_packet_;
75 }
76 const int64_t creation_time_ms = clock_->TimeInMilliseconds();
77 send_time_history_.AddAndRemoveOld(
78 PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_,
79 remote_net_id_, pacing_info));
47 } 80 }
48 const int64_t creation_time_ms = clock_->TimeInMilliseconds(); 81
49 send_time_history_.AddAndRemoveOld( 82 {
50 PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_, 83 rtc::CritScope cs(&observers_lock_);
51 remote_net_id_, pacing_info)); 84 for (auto observer : observers_) {
85 observer->OnPacketAdded(ssrc, sequence_number);
86 }
87 }
52 } 88 }
53 89
54 void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number, 90 void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number,
55 int64_t send_time_ms) { 91 int64_t send_time_ms) {
56 rtc::CritScope cs(&lock_); 92 rtc::CritScope cs(&lock_);
57 send_time_history_.OnSentPacket(sequence_number, send_time_ms); 93 send_time_history_.OnSentPacket(sequence_number, send_time_ms);
58 } 94 }
59 95
60 void TransportFeedbackAdapter::SetTransportOverhead( 96 void TransportFeedbackAdapter::SetTransportOverhead(
61 int transport_overhead_bytes_per_packet) { 97 int transport_overhead_bytes_per_packet) {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 << " packet" << (failed_lookups > 1 ? "s" : "") 183 << " packet" << (failed_lookups > 1 ? "s" : "")
148 << ". Send time history too small?"; 184 << ". Send time history too small?";
149 } 185 }
150 } 186 }
151 return packet_feedback_vector; 187 return packet_feedback_vector;
152 } 188 }
153 189
154 void TransportFeedbackAdapter::OnTransportFeedback( 190 void TransportFeedbackAdapter::OnTransportFeedback(
155 const rtcp::TransportFeedback& feedback) { 191 const rtcp::TransportFeedback& feedback) {
156 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback); 192 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback);
193 {
194 rtc::CritScope cs(&observers_lock_);
195 for (auto observer : observers_) {
196 observer->OnTransportFeedback(feedback);
197 }
198 }
157 } 199 }
158 200
159 std::vector<PacketFeedback> 201 std::vector<PacketFeedback>
160 TransportFeedbackAdapter::GetTransportFeedbackVector() const { 202 TransportFeedbackAdapter::GetTransportFeedbackVector() const {
161 return last_packet_feedback_vector_; 203 return last_packet_feedback_vector_;
162 } 204 }
163 } // namespace webrtc 205 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698