Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 |
| 11 #include "webrtc/system_wrappers/include/rtp_to_ntp_estimator.h" | 11 #include "webrtc/system_wrappers/include/rtp_to_ntp_estimator.h" |
| 12 | 12 |
| 13 #include "webrtc/rtc_base/checks.h" | |
| 13 #include "webrtc/rtc_base/logging.h" | 14 #include "webrtc/rtc_base/logging.h" |
| 14 #include "webrtc/system_wrappers/include/clock.h" | 15 #include "webrtc/system_wrappers/include/clock.h" |
| 15 | 16 |
| 16 namespace webrtc { | 17 namespace webrtc { |
| 17 namespace { | 18 namespace { |
| 18 // Number of RTCP SR reports to use to map between RTP and NTP. | 19 // Number of RTCP SR reports to use to map between RTP and NTP. |
| 19 const size_t kNumRtcpReportsToUse = 2; | 20 const size_t kNumRtcpReportsToUse = 2; |
| 20 | 21 |
| 21 // Calculates the RTP timestamp frequency from two pairs of NTP/RTP timestamps. | 22 // Calculates the RTP timestamp frequency from two pairs of NTP/RTP timestamps. |
| 22 bool CalculateFrequency(int64_t ntp_ms1, | 23 bool CalculateFrequency(int64_t ntp_ms1, |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 155 if (!params_.calculated || measurements_.empty()) | 156 if (!params_.calculated || measurements_.empty()) |
| 156 return false; | 157 return false; |
| 157 | 158 |
| 158 uint32_t rtp_timestamp_old = measurements_.back().rtp_timestamp; | 159 uint32_t rtp_timestamp_old = measurements_.back().rtp_timestamp; |
| 159 int64_t rtp_timestamp_unwrapped; | 160 int64_t rtp_timestamp_unwrapped; |
| 160 if (!CompensateForWrapAround(rtp_timestamp, rtp_timestamp_old, | 161 if (!CompensateForWrapAround(rtp_timestamp, rtp_timestamp_old, |
| 161 &rtp_timestamp_unwrapped)) { | 162 &rtp_timestamp_unwrapped)) { |
| 162 return false; | 163 return false; |
| 163 } | 164 } |
| 164 | 165 |
| 166 // params_.calculated should not be true unless params_.frequency_khz has been | |
| 167 // set to something non-zero. | |
| 168 RTC_DCHECK_NE(params_.frequency_khz, 0.0); | |
|
kwiberg-webrtc
2017/09/01 12:53:06
Is it OK if the value is very, very close to zero?
| |
| 165 double rtp_ms = | 169 double rtp_ms = |
| 166 (static_cast<double>(rtp_timestamp_unwrapped) - params_.offset_ms) / | 170 (static_cast<double>(rtp_timestamp_unwrapped) - params_.offset_ms) / |
| 167 params_.frequency_khz + | 171 params_.frequency_khz + |
| 168 0.5f; | 172 0.5f; |
| 169 | 173 |
| 170 if (rtp_ms < 0) | 174 if (rtp_ms < 0) |
| 171 return false; | 175 return false; |
| 172 | 176 |
| 173 *rtp_timestamp_ms = rtp_ms; | 177 *rtp_timestamp_ms = rtp_ms; |
| 174 return true; | 178 return true; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 185 } | 189 } |
| 186 } else if (static_cast<int32_t>(old_timestamp - new_timestamp) > 0) { | 190 } else if (static_cast<int32_t>(old_timestamp - new_timestamp) > 0) { |
| 187 // This difference should be less than -2^31 if we have had a backward wrap | 191 // This difference should be less than -2^31 if we have had a backward wrap |
| 188 // around. Since it is cast to a int32_t, it should be positive. | 192 // around. Since it is cast to a int32_t, it should be positive. |
| 189 return -1; | 193 return -1; |
| 190 } | 194 } |
| 191 return 0; | 195 return 0; |
| 192 } | 196 } |
| 193 | 197 |
| 194 } // namespace webrtc | 198 } // namespace webrtc |
| OLD | NEW |