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 |