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) { | |
the sun
2017/03/22 12:06:42
Please add thread checkers to document multithread
elad.alon_webrtc.org
2017/03/22 14:34:47
We've tried that before with this class - https://
| |
45 rtc::CritScope cs(&observers_lock_); | |
46 RTC_DCHECK(observer); | |
47 RTC_DCHECK(std::find(observers_.begin(), observers_.end(), observer) == | |
48 observers_.end()); | |
49 observers_.push_back(observer); | |
50 } | |
51 | |
52 void TransportFeedbackAdapter::DeRegisterTransportFeedbackAdapterObserver( | |
53 TransportFeedbackAdapterObserver* observer) { | |
54 rtc::CritScope cs(&observers_lock_); | |
55 RTC_DCHECK(observer); | |
56 const auto it = std::find(observers_.begin(), observers_.end(), observer); | |
57 RTC_DCHECK(it != observers_.end()); | |
58 observers_.erase(it); | |
59 RTC_DCHECK(std::find(observers_.begin(), observers_.end(), observer) == | |
60 observers_.end()); | |
stefan-webrtc
2017/03/22 12:03:01
This seems redundant to me. Should be enough to ch
minyue-webrtc
2017/03/22 12:14:48
I suggested it. It is clearly redundant, but just
elad.alon_webrtc.org
2017/03/22 14:34:47
Waiting for further input.
the sun
2017/03/23 11:11:14
Agree that we don't need to unit test std::vector:
elad.alon_webrtc.org
2017/03/23 13:37:30
Removed.
| |
61 } | |
62 | |
63 void TransportFeedbackAdapter::AddPacket(uint32_t ssrc, | |
64 uint16_t sequence_number, | |
42 size_t length, | 65 size_t length, |
43 const PacedPacketInfo& pacing_info) { | 66 const PacedPacketInfo& pacing_info) { |
44 rtc::CritScope cs(&lock_); | 67 { |
45 if (send_side_bwe_with_overhead_) { | 68 rtc::CritScope cs(&lock_); |
46 length += transport_overhead_bytes_per_packet_; | 69 if (send_side_bwe_with_overhead_) { |
70 length += transport_overhead_bytes_per_packet_; | |
71 } | |
72 const int64_t creation_time_ms = clock_->TimeInMilliseconds(); | |
73 send_time_history_.AddAndRemoveOld( | |
74 PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_, | |
75 remote_net_id_, pacing_info)); | |
47 } | 76 } |
48 const int64_t creation_time_ms = clock_->TimeInMilliseconds(); | 77 |
49 send_time_history_.AddAndRemoveOld( | 78 { |
50 PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_, | 79 rtc::CritScope cs(&observers_lock_); |
51 remote_net_id_, pacing_info)); | 80 for (auto observer : observers_) { |
81 observer->OnPacketAdded(ssrc, sequence_number); | |
82 } | |
83 } | |
52 } | 84 } |
53 | 85 |
54 void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number, | 86 void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number, |
55 int64_t send_time_ms) { | 87 int64_t send_time_ms) { |
56 rtc::CritScope cs(&lock_); | 88 rtc::CritScope cs(&lock_); |
57 send_time_history_.OnSentPacket(sequence_number, send_time_ms); | 89 send_time_history_.OnSentPacket(sequence_number, send_time_ms); |
58 } | 90 } |
59 | 91 |
60 void TransportFeedbackAdapter::SetTransportOverhead( | 92 void TransportFeedbackAdapter::SetTransportOverhead( |
61 int transport_overhead_bytes_per_packet) { | 93 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" : "") | 179 << " packet" << (failed_lookups > 1 ? "s" : "") |
148 << ". Send time history too small?"; | 180 << ". Send time history too small?"; |
149 } | 181 } |
150 } | 182 } |
151 return packet_feedback_vector; | 183 return packet_feedback_vector; |
152 } | 184 } |
153 | 185 |
154 void TransportFeedbackAdapter::OnTransportFeedback( | 186 void TransportFeedbackAdapter::OnTransportFeedback( |
155 const rtcp::TransportFeedback& feedback) { | 187 const rtcp::TransportFeedback& feedback) { |
156 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback); | 188 last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback); |
189 { | |
190 rtc::CritScope cs(&observers_lock_); | |
191 for (auto observer : observers_) { | |
192 observer->OnNewTransportFeedbackVector(last_packet_feedback_vector_); | |
193 } | |
194 } | |
157 } | 195 } |
158 | 196 |
159 std::vector<PacketFeedback> | 197 std::vector<PacketFeedback> |
160 TransportFeedbackAdapter::GetTransportFeedbackVector() const { | 198 TransportFeedbackAdapter::GetTransportFeedbackVector() const { |
161 return last_packet_feedback_vector_; | 199 return last_packet_feedback_vector_; |
162 } | 200 } |
163 } // namespace webrtc | 201 } // namespace webrtc |
OLD | NEW |