OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 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 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 new_bitrate_bps > static_cast<int>(remote_rate_.LatestEstimate()); | 191 new_bitrate_bps > static_cast<int>(remote_rate_.LatestEstimate()); |
192 return initial_probe || bitrate_above_estimate; | 192 return initial_probe || bitrate_above_estimate; |
193 } | 193 } |
194 | 194 |
195 void DelayBasedBwe::IncomingPacketFeedbackVector( | 195 void DelayBasedBwe::IncomingPacketFeedbackVector( |
196 const std::vector<PacketInfo>& packet_feedback_vector) { | 196 const std::vector<PacketInfo>& packet_feedback_vector) { |
197 RTC_DCHECK(network_thread_.CalledOnValidThread()); | 197 RTC_DCHECK(network_thread_.CalledOnValidThread()); |
198 for (const auto& packet_info : packet_feedback_vector) { | 198 for (const auto& packet_info : packet_feedback_vector) { |
199 IncomingPacketInfo(packet_info.arrival_time_ms, | 199 IncomingPacketInfo(packet_info.arrival_time_ms, |
200 ConvertMsTo24Bits(packet_info.send_time_ms), | 200 ConvertMsTo24Bits(packet_info.send_time_ms), |
201 packet_info.payload_size, 0, packet_info.was_paced, | 201 packet_info.payload_size, 0, |
202 packet_info.probe_cluster_id); | 202 packet_info.probe_cluster_id); |
203 } | 203 } |
204 } | 204 } |
205 | 205 |
206 void DelayBasedBwe::IncomingPacket(int64_t arrival_time_ms, | 206 void DelayBasedBwe::IncomingPacket(int64_t arrival_time_ms, |
207 size_t payload_size, | 207 size_t payload_size, |
208 const RTPHeader& header, | 208 const RTPHeader& header) { |
209 bool was_paced) { | |
210 RTC_DCHECK(network_thread_.CalledOnValidThread()); | 209 RTC_DCHECK(network_thread_.CalledOnValidThread()); |
211 if (!header.extension.hasAbsoluteSendTime) { | 210 if (!header.extension.hasAbsoluteSendTime) { |
212 // NOTE! The BitrateEstimatorTest relies on this EXACT log line. | 211 // NOTE! The BitrateEstimatorTest relies on this EXACT log line. |
213 LOG(LS_WARNING) << "RemoteBitrateEstimatorAbsSendTime: Incoming packet " | 212 LOG(LS_WARNING) << "RemoteBitrateEstimatorAbsSendTime: Incoming packet " |
214 "is missing absolute send time extension!"; | 213 "is missing absolute send time extension!"; |
215 return; | 214 return; |
216 } | 215 } |
217 IncomingPacketInfo(arrival_time_ms, header.extension.absoluteSendTime, | 216 IncomingPacketInfo(arrival_time_ms, header.extension.absoluteSendTime, |
218 payload_size, header.ssrc, was_paced, | 217 payload_size, header.ssrc, PacketInfo::kNotAProbe); |
219 PacketInfo::kNotAProbe); | |
220 } | 218 } |
221 | 219 |
222 void DelayBasedBwe::IncomingPacket(int64_t arrival_time_ms, | 220 void DelayBasedBwe::IncomingPacket(int64_t arrival_time_ms, |
223 size_t payload_size, | 221 size_t payload_size, |
224 const RTPHeader& header, | 222 const RTPHeader& header, |
225 bool was_paced, | |
226 int probe_cluster_id) { | 223 int probe_cluster_id) { |
227 RTC_DCHECK(network_thread_.CalledOnValidThread()); | 224 RTC_DCHECK(network_thread_.CalledOnValidThread()); |
228 if (!header.extension.hasAbsoluteSendTime) { | 225 if (!header.extension.hasAbsoluteSendTime) { |
229 // NOTE! The BitrateEstimatorTest relies on this EXACT log line. | 226 // NOTE! The BitrateEstimatorTest relies on this EXACT log line. |
230 LOG(LS_WARNING) << "RemoteBitrateEstimatorAbsSendTime: Incoming packet " | 227 LOG(LS_WARNING) << "RemoteBitrateEstimatorAbsSendTime: Incoming packet " |
231 "is missing absolute send time extension!"; | 228 "is missing absolute send time extension!"; |
232 return; | 229 return; |
233 } | 230 } |
234 IncomingPacketInfo(arrival_time_ms, header.extension.absoluteSendTime, | 231 IncomingPacketInfo(arrival_time_ms, header.extension.absoluteSendTime, |
235 payload_size, header.ssrc, was_paced, probe_cluster_id); | 232 payload_size, header.ssrc, probe_cluster_id); |
236 } | 233 } |
237 | 234 |
238 void DelayBasedBwe::IncomingPacketInfo(int64_t arrival_time_ms, | 235 void DelayBasedBwe::IncomingPacketInfo(int64_t arrival_time_ms, |
239 uint32_t send_time_24bits, | 236 uint32_t send_time_24bits, |
240 size_t payload_size, | 237 size_t payload_size, |
241 uint32_t ssrc, | 238 uint32_t ssrc, |
242 bool was_paced, | |
243 int probe_cluster_id) { | 239 int probe_cluster_id) { |
244 assert(send_time_24bits < (1ul << 24)); | 240 assert(send_time_24bits < (1ul << 24)); |
245 // Shift up send time to use the full 32 bits that inter_arrival works with, | 241 // Shift up send time to use the full 32 bits that inter_arrival works with, |
246 // so wrapping works properly. | 242 // so wrapping works properly. |
247 uint32_t timestamp = send_time_24bits << kAbsSendTimeInterArrivalUpshift; | 243 uint32_t timestamp = send_time_24bits << kAbsSendTimeInterArrivalUpshift; |
248 int64_t send_time_ms = static_cast<int64_t>(timestamp) * kTimestampToMs; | 244 int64_t send_time_ms = static_cast<int64_t>(timestamp) * kTimestampToMs; |
249 | 245 |
250 int64_t now_ms = arrival_time_ms; | 246 int64_t now_ms = arrival_time_ms; |
251 // TODO(holmer): SSRCs are only needed for REMB, should be broken out from | 247 // TODO(holmer): SSRCs are only needed for REMB, should be broken out from |
252 // here. | 248 // here. |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 return true; | 393 return true; |
398 } | 394 } |
399 | 395 |
400 void DelayBasedBwe::SetMinBitrate(int min_bitrate_bps) { | 396 void DelayBasedBwe::SetMinBitrate(int min_bitrate_bps) { |
401 // Called from both the configuration thread and the network thread. Shouldn't | 397 // Called from both the configuration thread and the network thread. Shouldn't |
402 // be called from the network thread in the future. | 398 // be called from the network thread in the future. |
403 rtc::CritScope lock(&crit_); | 399 rtc::CritScope lock(&crit_); |
404 remote_rate_.SetMinBitrate(min_bitrate_bps); | 400 remote_rate_.SetMinBitrate(min_bitrate_bps); |
405 } | 401 } |
406 } // namespace webrtc | 402 } // namespace webrtc |
OLD | NEW |