OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |