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 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 EXPECT_TRUE( | 131 EXPECT_TRUE( |
132 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); | 132 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
133 timestamp -= kTimestampTicksPerMs; | 133 timestamp -= kTimestampTicksPerMs; |
134 int64_t timestamp_ms = -1; | 134 int64_t timestamp_ms = -1; |
135 EXPECT_TRUE(estimator.Estimate(timestamp, ×tamp_ms)); | 135 EXPECT_TRUE(estimator.Estimate(timestamp, ×tamp_ms)); |
136 // Constructed at the same time as the first RTCP and should therefore be | 136 // Constructed at the same time as the first RTCP and should therefore be |
137 // mapped to zero. | 137 // mapped to zero. |
138 EXPECT_EQ(0, timestamp_ms); | 138 EXPECT_EQ(0, timestamp_ms); |
139 } | 139 } |
140 | 140 |
| 141 TEST(WrapAroundTests, GracefullyHandleRtpJump) { |
| 142 RtpToNtpEstimator estimator; |
| 143 bool new_sr; |
| 144 uint32_t ntp_sec = 0; |
| 145 uint32_t ntp_frac = 1; |
| 146 uint32_t timestamp = 0; |
| 147 EXPECT_TRUE( |
| 148 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
| 149 ntp_frac += kOneMsInNtpFrac; |
| 150 timestamp += kTimestampTicksPerMs; |
| 151 EXPECT_TRUE( |
| 152 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
| 153 ntp_frac += kOneMsInNtpFrac; |
| 154 timestamp -= kTimestampTicksPerMs; |
| 155 int64_t timestamp_ms = -1; |
| 156 EXPECT_TRUE(estimator.Estimate(timestamp, ×tamp_ms)); |
| 157 // Constructed at the same time as the first RTCP and should therefore be |
| 158 // mapped to zero. |
| 159 EXPECT_EQ(0, timestamp_ms); |
| 160 |
| 161 timestamp -= 0xFFFFF; |
| 162 for (int i = 0; i < RtpToNtpEstimator::kMaxInvalidSamples - 1; ++i) { |
| 163 EXPECT_FALSE( |
| 164 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
| 165 ntp_frac += kOneMsInNtpFrac; |
| 166 timestamp += kTimestampTicksPerMs; |
| 167 } |
| 168 EXPECT_TRUE( |
| 169 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
| 170 ntp_frac += kOneMsInNtpFrac; |
| 171 timestamp += kTimestampTicksPerMs; |
| 172 EXPECT_TRUE( |
| 173 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
| 174 ntp_frac += kOneMsInNtpFrac; |
| 175 timestamp += kTimestampTicksPerMs; |
| 176 |
| 177 timestamp_ms = -1; |
| 178 EXPECT_TRUE(estimator.Estimate(timestamp, ×tamp_ms)); |
| 179 // 6 milliseconds has passed since the start of the test. |
| 180 EXPECT_EQ(6, timestamp_ms); |
| 181 } |
| 182 |
141 TEST(UpdateRtcpMeasurementTests, FailsForZeroNtp) { | 183 TEST(UpdateRtcpMeasurementTests, FailsForZeroNtp) { |
142 RtpToNtpEstimator estimator; | 184 RtpToNtpEstimator estimator; |
143 uint32_t ntp_sec = 0; | 185 uint32_t ntp_sec = 0; |
144 uint32_t ntp_frac = 0; | 186 uint32_t ntp_frac = 0; |
145 uint32_t timestamp = 0x12345678; | 187 uint32_t timestamp = 0x12345678; |
146 bool new_sr; | 188 bool new_sr; |
147 EXPECT_FALSE( | 189 EXPECT_FALSE( |
148 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); | 190 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
149 EXPECT_FALSE(new_sr); | 191 EXPECT_FALSE(new_sr); |
150 } | 192 } |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 EXPECT_TRUE( | 285 EXPECT_TRUE( |
244 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); | 286 estimator.UpdateMeasurements(ntp_sec, ntp_frac, timestamp, &new_sr)); |
245 EXPECT_TRUE(new_sr); | 287 EXPECT_TRUE(new_sr); |
246 // Parameters are not calculated, conversion of RTP to NTP time should fail. | 288 // Parameters are not calculated, conversion of RTP to NTP time should fail. |
247 EXPECT_FALSE(estimator.params().calculated); | 289 EXPECT_FALSE(estimator.params().calculated); |
248 int64_t timestamp_ms = -1; | 290 int64_t timestamp_ms = -1; |
249 EXPECT_FALSE(estimator.Estimate(timestamp, ×tamp_ms)); | 291 EXPECT_FALSE(estimator.Estimate(timestamp, ×tamp_ms)); |
250 } | 292 } |
251 | 293 |
252 }; // namespace webrtc | 294 }; // namespace webrtc |
OLD | NEW |