OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/test/simple_test_tick_clock.h" | 5 #include "base/test/simple_test_tick_clock.h" |
6 #include "media/cast/cast_defines.h" | 6 #include "media/cast/cast_defines.h" |
| 7 #include "media/cast/cast_environment.h" |
7 #include "media/cast/pacing/paced_sender.h" | 8 #include "media/cast/pacing/paced_sender.h" |
8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 9 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" | 10 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" |
10 #include "media/cast/rtcp/rtcp.h" | 11 #include "media/cast/rtcp/rtcp.h" |
11 #include "media/cast/rtcp/test_rtcp_packet_builder.h" | 12 #include "media/cast/rtcp/test_rtcp_packet_builder.h" |
| 13 #include "media/cast/test/fake_task_runner.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
13 | 15 |
14 namespace media { | 16 namespace media { |
15 namespace cast { | 17 namespace cast { |
16 | 18 |
17 using testing::_; | 19 using testing::_; |
18 | 20 |
19 static const uint32 kSenderSsrc = 0x10203; | 21 static const uint32 kSenderSsrc = 0x10203; |
20 static const uint32 kReceiverSsrc = 0x40506; | 22 static const uint32 kReceiverSsrc = 0x40506; |
21 static const std::string kCName("test@10.1.1.1"); | 23 static const std::string kCName("test@10.1.1.1"); |
22 static const uint32 kRtcpIntervalMs = 500; | 24 static const uint32 kRtcpIntervalMs = 500; |
23 static const int64 kStartMillisecond = GG_INT64_C(12345678900000); | 25 static const int64 kStartMillisecond = GG_INT64_C(12345678900000); |
24 static const int64 kAddedDelay = 123; | 26 static const int64 kAddedDelay = 123; |
25 static const int64 kAddedShortDelay= 100; | 27 static const int64 kAddedShortDelay= 100; |
26 | 28 |
27 class LocalRtcpTransport : public PacedPacketSender { | 29 class LocalRtcpTransport : public PacedPacketSender { |
28 public: | 30 public: |
29 explicit LocalRtcpTransport(base::SimpleTestTickClock* testing_clock) | 31 explicit LocalRtcpTransport(scoped_refptr<CastEnvironment> cast_environment, |
| 32 base::SimpleTestTickClock* testing_clock) |
30 : drop_packets_(false), | 33 : drop_packets_(false), |
31 short_delay_(false), | 34 short_delay_(false), |
32 testing_clock_(testing_clock) {} | 35 testing_clock_(testing_clock) {} |
33 | 36 |
34 void SetRtcpReceiver(Rtcp* rtcp) { rtcp_ = rtcp; } | 37 void SetRtcpReceiver(Rtcp* rtcp) { rtcp_ = rtcp; } |
35 | 38 |
36 void SetShortDelay() { short_delay_ = true; } | 39 void SetShortDelay() { short_delay_ = true; } |
37 | 40 |
38 void SetDropPackets(bool drop_packets) { drop_packets_ = drop_packets; } | 41 void SetDropPackets(bool drop_packets) { drop_packets_ = drop_packets; } |
39 | 42 |
(...skipping 17 matching lines...) Expand all Loading... |
57 | 60 |
58 virtual bool ResendPackets(const PacketList& packets) OVERRIDE { | 61 virtual bool ResendPackets(const PacketList& packets) OVERRIDE { |
59 return false; | 62 return false; |
60 } | 63 } |
61 | 64 |
62 private: | 65 private: |
63 bool drop_packets_; | 66 bool drop_packets_; |
64 bool short_delay_; | 67 bool short_delay_; |
65 Rtcp* rtcp_; | 68 Rtcp* rtcp_; |
66 base::SimpleTestTickClock* testing_clock_; | 69 base::SimpleTestTickClock* testing_clock_; |
| 70 scoped_refptr<CastEnvironment> cast_environment_; |
67 }; | 71 }; |
68 | 72 |
69 class RtcpPeer : public Rtcp { | 73 class RtcpPeer : public Rtcp { |
70 public: | 74 public: |
71 RtcpPeer(base::TickClock* clock, | 75 RtcpPeer(scoped_refptr<CastEnvironment> cast_environment, |
72 RtcpSenderFeedback* sender_feedback, | 76 RtcpSenderFeedback* sender_feedback, |
73 PacedPacketSender* const paced_packet_sender, | 77 PacedPacketSender* const paced_packet_sender, |
74 RtpSenderStatistics* rtp_sender_statistics, | 78 RtpSenderStatistics* rtp_sender_statistics, |
75 RtpReceiverStatistics* rtp_receiver_statistics, | 79 RtpReceiverStatistics* rtp_receiver_statistics, |
76 RtcpMode rtcp_mode, | 80 RtcpMode rtcp_mode, |
77 const base::TimeDelta& rtcp_interval, | 81 const base::TimeDelta& rtcp_interval, |
78 uint32 local_ssrc, | 82 uint32 local_ssrc, |
79 uint32 remote_ssrc, | 83 uint32 remote_ssrc, |
80 const std::string& c_name) | 84 const std::string& c_name) |
81 : Rtcp(clock, | 85 : Rtcp(cast_environment, |
82 sender_feedback, | 86 sender_feedback, |
83 paced_packet_sender, | 87 paced_packet_sender, |
84 rtp_sender_statistics, | 88 rtp_sender_statistics, |
85 rtp_receiver_statistics, | 89 rtp_receiver_statistics, |
86 rtcp_mode, | 90 rtcp_mode, |
87 rtcp_interval, | 91 rtcp_interval, |
88 local_ssrc, | 92 local_ssrc, |
89 remote_ssrc, | 93 remote_ssrc, |
90 c_name) { | 94 c_name) { |
91 } | 95 } |
92 | 96 |
93 using Rtcp::CheckForWrapAround; | 97 using Rtcp::CheckForWrapAround; |
94 using Rtcp::OnReceivedLipSyncInfo; | 98 using Rtcp::OnReceivedLipSyncInfo; |
95 }; | 99 }; |
96 | 100 |
97 class RtcpTest : public ::testing::Test { | 101 class RtcpTest : public ::testing::Test { |
98 protected: | 102 protected: |
99 RtcpTest() | 103 RtcpTest() |
100 : transport_(&testing_clock_) { | 104 : task_runner_(new test::FakeTaskRunner(&testing_clock_)), |
| 105 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, |
| 106 task_runner_, task_runner_, task_runner_, task_runner_, |
| 107 GetDefaultCastLoggingConfig())), |
| 108 transport_(cast_environment_, &testing_clock_) { |
101 testing_clock_.Advance( | 109 testing_clock_.Advance( |
102 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | 110 base::TimeDelta::FromMilliseconds(kStartMillisecond)); |
103 } | 111 } |
104 | 112 |
105 virtual ~RtcpTest() {} | 113 virtual ~RtcpTest() {} |
106 | 114 |
107 virtual void SetUp() { | 115 virtual void SetUp() { |
108 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); | 116 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); |
109 } | 117 } |
110 | 118 |
111 base::SimpleTestTickClock testing_clock_; | 119 base::SimpleTestTickClock testing_clock_; |
| 120 scoped_refptr<test::FakeTaskRunner> task_runner_; |
| 121 scoped_refptr<CastEnvironment> cast_environment_; |
112 LocalRtcpTransport transport_; | 122 LocalRtcpTransport transport_; |
113 MockRtcpSenderFeedback mock_sender_feedback_; | 123 MockRtcpSenderFeedback mock_sender_feedback_; |
114 }; | 124 }; |
115 | 125 |
116 TEST_F(RtcpTest, TimeToSend) { | 126 TEST_F(RtcpTest, TimeToSend) { |
117 base::TimeTicks start_time; | 127 base::TimeTicks start_time; |
118 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | 128 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); |
119 Rtcp rtcp(&testing_clock_, | 129 Rtcp rtcp(cast_environment_, |
120 &mock_sender_feedback_, | 130 &mock_sender_feedback_, |
121 &transport_, | 131 &transport_, |
122 NULL, | 132 NULL, |
123 NULL, | 133 NULL, |
124 kRtcpCompound, | 134 kRtcpCompound, |
125 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 135 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
126 kSenderSsrc, | 136 kSenderSsrc, |
127 kReceiverSsrc, | 137 kReceiverSsrc, |
128 kCName); | 138 kCName); |
129 transport_.SetRtcpReceiver(&rtcp); | 139 transport_.SetRtcpReceiver(&rtcp); |
130 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); | 140 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); |
131 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( | 141 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( |
132 kRtcpIntervalMs * 3 / 2), | 142 kRtcpIntervalMs * 3 / 2), |
133 rtcp.TimeToSendNextRtcpReport()); | 143 rtcp.TimeToSendNextRtcpReport()); |
134 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; | 144 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; |
135 testing_clock_.Advance(delta); | 145 testing_clock_.Advance(delta); |
136 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); | 146 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); |
137 } | 147 } |
138 | 148 |
139 TEST_F(RtcpTest, BasicSenderReport) { | 149 TEST_F(RtcpTest, BasicSenderReport) { |
140 Rtcp rtcp(&testing_clock_, | 150 Rtcp rtcp(cast_environment_, |
141 &mock_sender_feedback_, | 151 &mock_sender_feedback_, |
142 &transport_, | 152 &transport_, |
143 NULL, | 153 NULL, |
144 NULL, | 154 NULL, |
145 kRtcpCompound, | 155 kRtcpCompound, |
146 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 156 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
147 kSenderSsrc, | 157 kSenderSsrc, |
148 kReceiverSsrc, | 158 kReceiverSsrc, |
149 kCName); | 159 kCName); |
150 transport_.SetRtcpReceiver(&rtcp); | 160 transport_.SetRtcpReceiver(&rtcp); |
151 rtcp.SendRtcpFromRtpSender(NULL); | 161 rtcp.SendRtcpFromRtpSender(NULL); |
152 } | 162 } |
153 | 163 |
154 TEST_F(RtcpTest, BasicReceiverReport) { | 164 TEST_F(RtcpTest, BasicReceiverReport) { |
155 Rtcp rtcp(&testing_clock_, | 165 Rtcp rtcp(cast_environment_, |
156 &mock_sender_feedback_, | 166 &mock_sender_feedback_, |
157 &transport_, | 167 &transport_, |
158 NULL, | 168 NULL, |
159 NULL, | 169 NULL, |
160 kRtcpCompound, | 170 kRtcpCompound, |
161 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 171 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
162 kSenderSsrc, | 172 kSenderSsrc, |
163 kReceiverSsrc, | 173 kReceiverSsrc, |
164 kCName); | 174 kCName); |
165 transport_.SetRtcpReceiver(&rtcp); | 175 transport_.SetRtcpReceiver(&rtcp); |
166 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); | 176 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); |
167 } | 177 } |
168 | 178 |
169 TEST_F(RtcpTest, BasicCast) { | 179 TEST_F(RtcpTest, BasicCast) { |
170 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); | 180 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); |
171 | 181 |
172 // Media receiver. | 182 // Media receiver. |
173 Rtcp rtcp(&testing_clock_, | 183 Rtcp rtcp(cast_environment_, |
174 &mock_sender_feedback_, | 184 &mock_sender_feedback_, |
175 &transport_, | 185 &transport_, |
176 NULL, | 186 NULL, |
177 NULL, | 187 NULL, |
178 kRtcpReducedSize, | 188 kRtcpReducedSize, |
179 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 189 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
180 kSenderSsrc, | 190 kSenderSsrc, |
181 kSenderSsrc, | 191 kSenderSsrc, |
182 kCName); | 192 kCName); |
183 transport_.SetRtcpReceiver(&rtcp); | 193 transport_.SetRtcpReceiver(&rtcp); |
184 RtcpCastMessage cast_message(kSenderSsrc); | 194 RtcpCastMessage cast_message(kSenderSsrc); |
185 cast_message.ack_frame_id_ = kAckFrameId; | 195 cast_message.ack_frame_id_ = kAckFrameId; |
186 PacketIdSet missing_packets; | 196 PacketIdSet missing_packets; |
187 cast_message.missing_frames_and_packets_[ | 197 cast_message.missing_frames_and_packets_[ |
188 kLostFrameId] = missing_packets; | 198 kLostFrameId] = missing_packets; |
189 | 199 |
190 missing_packets.insert(kLostPacketId1); | 200 missing_packets.insert(kLostPacketId1); |
191 missing_packets.insert(kLostPacketId2); | 201 missing_packets.insert(kLostPacketId2); |
192 missing_packets.insert(kLostPacketId3); | 202 missing_packets.insert(kLostPacketId3); |
193 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = | 203 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
194 missing_packets; | 204 missing_packets; |
195 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); | 205 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); |
196 } | 206 } |
197 | 207 |
198 TEST_F(RtcpTest, RttReducedSizeRtcp) { | 208 TEST_F(RtcpTest, RttReducedSizeRtcp) { |
199 // Media receiver. | 209 // Media receiver. |
200 LocalRtcpTransport receiver_transport(&testing_clock_); | 210 LocalRtcpTransport receiver_transport(cast_environment_, &testing_clock_); |
201 Rtcp rtcp_receiver(&testing_clock_, | 211 Rtcp rtcp_receiver(cast_environment_, |
202 &mock_sender_feedback_, | 212 &mock_sender_feedback_, |
203 &receiver_transport, | 213 &receiver_transport, |
204 NULL, | 214 NULL, |
205 NULL, | 215 NULL, |
206 kRtcpReducedSize, | 216 kRtcpReducedSize, |
207 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 217 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
208 kReceiverSsrc, | 218 kReceiverSsrc, |
209 kSenderSsrc, | 219 kSenderSsrc, |
210 kCName); | 220 kCName); |
211 | 221 |
212 // Media sender. | 222 // Media sender. |
213 LocalRtcpTransport sender_transport(&testing_clock_); | 223 LocalRtcpTransport sender_transport(cast_environment_, &testing_clock_); |
214 Rtcp rtcp_sender(&testing_clock_, | 224 Rtcp rtcp_sender(cast_environment_, |
215 &mock_sender_feedback_, | 225 &mock_sender_feedback_, |
216 &sender_transport, | 226 &sender_transport, |
217 NULL, | 227 NULL, |
218 NULL, | 228 NULL, |
219 kRtcpReducedSize, | 229 kRtcpReducedSize, |
220 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 230 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
221 kSenderSsrc, | 231 kSenderSsrc, |
222 kReceiverSsrc, | 232 kReceiverSsrc, |
223 kCName); | 233 kCName); |
224 | 234 |
(...skipping 19 matching lines...) Expand all Loading... |
244 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 254 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
245 | 255 |
246 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | 256 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
247 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | 257 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
248 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | 258 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
249 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 259 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
250 } | 260 } |
251 | 261 |
252 TEST_F(RtcpTest, Rtt) { | 262 TEST_F(RtcpTest, Rtt) { |
253 // Media receiver. | 263 // Media receiver. |
254 LocalRtcpTransport receiver_transport(&testing_clock_); | 264 LocalRtcpTransport receiver_transport(cast_environment_, &testing_clock_); |
255 Rtcp rtcp_receiver(&testing_clock_, | 265 Rtcp rtcp_receiver(cast_environment_, |
256 &mock_sender_feedback_, | 266 &mock_sender_feedback_, |
257 &receiver_transport, | 267 &receiver_transport, |
258 NULL, | 268 NULL, |
259 NULL, | 269 NULL, |
260 kRtcpCompound, | 270 kRtcpCompound, |
261 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 271 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
262 kReceiverSsrc, | 272 kReceiverSsrc, |
263 kSenderSsrc, | 273 kSenderSsrc, |
264 kCName); | 274 kCName); |
265 | 275 |
266 // Media sender. | 276 // Media sender. |
267 LocalRtcpTransport sender_transport(&testing_clock_); | 277 LocalRtcpTransport sender_transport(cast_environment_, &testing_clock_); |
268 Rtcp rtcp_sender(&testing_clock_, | 278 Rtcp rtcp_sender(cast_environment_, |
269 &mock_sender_feedback_, | 279 &mock_sender_feedback_, |
270 &sender_transport, | 280 &sender_transport, |
271 NULL, | 281 NULL, |
272 NULL, | 282 NULL, |
273 kRtcpCompound, | 283 kRtcpCompound, |
274 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 284 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
275 kSenderSsrc, | 285 kSenderSsrc, |
276 kReceiverSsrc, | 286 kReceiverSsrc, |
277 kCName); | 287 kCName); |
278 | 288 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 | 340 |
331 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 341 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
332 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 342 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
333 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); | 343 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
334 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); | 344 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); |
335 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 345 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
336 } | 346 } |
337 | 347 |
338 TEST_F(RtcpTest, RttWithPacketLoss) { | 348 TEST_F(RtcpTest, RttWithPacketLoss) { |
339 // Media receiver. | 349 // Media receiver. |
340 LocalRtcpTransport receiver_transport(&testing_clock_); | 350 LocalRtcpTransport receiver_transport(cast_environment_, &testing_clock_); |
341 Rtcp rtcp_receiver(&testing_clock_, | 351 Rtcp rtcp_receiver(cast_environment_, |
342 &mock_sender_feedback_, | 352 &mock_sender_feedback_, |
343 &receiver_transport, | 353 &receiver_transport, |
344 NULL, | 354 NULL, |
345 NULL, | 355 NULL, |
346 kRtcpReducedSize, | 356 kRtcpReducedSize, |
347 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 357 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
348 kSenderSsrc, | 358 kSenderSsrc, |
349 kReceiverSsrc, | 359 kReceiverSsrc, |
350 kCName); | 360 kCName); |
351 | 361 |
352 // Media sender. | 362 // Media sender. |
353 LocalRtcpTransport sender_transport(&testing_clock_); | 363 LocalRtcpTransport sender_transport(cast_environment_, &testing_clock_); |
354 Rtcp rtcp_sender(&testing_clock_, | 364 Rtcp rtcp_sender(cast_environment_, |
355 &mock_sender_feedback_, | 365 &mock_sender_feedback_, |
356 &sender_transport, | 366 &sender_transport, |
357 NULL, | 367 NULL, |
358 NULL, | 368 NULL, |
359 kRtcpReducedSize, | 369 kRtcpReducedSize, |
360 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 370 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
361 kReceiverSsrc, | 371 kReceiverSsrc, |
362 kSenderSsrc, | 372 kSenderSsrc, |
363 kCName); | 373 kCName); |
364 | 374 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 ConvertTimeTicksToNtp(input_time, &ntp_seconds_3, &ntp_fractions_3); | 440 ConvertTimeTicksToNtp(input_time, &ntp_seconds_3, &ntp_fractions_3); |
431 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fractions_3); | 441 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fractions_3); |
432 EXPECT_EQ(input_time, out_3); // Verify inverse. | 442 EXPECT_EQ(input_time, out_3); // Verify inverse. |
433 | 443 |
434 // Verify delta. | 444 // Verify delta. |
435 EXPECT_EQ((out_3 - out_2), time_delta); | 445 EXPECT_EQ((out_3 - out_2), time_delta); |
436 EXPECT_NEAR((ntp_fractions_3 - ntp_fractions_2), 0xffffffff / 2, 1); | 446 EXPECT_NEAR((ntp_fractions_3 - ntp_fractions_2), 0xffffffff / 2, 1); |
437 } | 447 } |
438 | 448 |
439 TEST_F(RtcpTest, WrapAround) { | 449 TEST_F(RtcpTest, WrapAround) { |
440 RtcpPeer rtcp_peer(&testing_clock_, | 450 RtcpPeer rtcp_peer(cast_environment_, |
441 &mock_sender_feedback_, | 451 &mock_sender_feedback_, |
442 NULL, | 452 NULL, |
443 NULL, | 453 NULL, |
444 NULL, | 454 NULL, |
445 kRtcpReducedSize, | 455 kRtcpReducedSize, |
446 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 456 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
447 kReceiverSsrc, | 457 kReceiverSsrc, |
448 kSenderSsrc, | 458 kSenderSsrc, |
449 kCName); | 459 kCName); |
450 uint32 new_timestamp = 0; | 460 uint32 new_timestamp = 0; |
451 uint32 old_timestamp = 0; | 461 uint32 old_timestamp = 0; |
452 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 462 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
453 new_timestamp = 1234567890; | 463 new_timestamp = 1234567890; |
454 old_timestamp = 1234567000; | 464 old_timestamp = 1234567000; |
455 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 465 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
456 new_timestamp = 1234567000; | 466 new_timestamp = 1234567000; |
457 old_timestamp = 1234567890; | 467 old_timestamp = 1234567890; |
458 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 468 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
459 new_timestamp = 123; | 469 new_timestamp = 123; |
460 old_timestamp = 4234567890u; | 470 old_timestamp = 4234567890u; |
461 EXPECT_EQ(1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 471 EXPECT_EQ(1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
462 new_timestamp = 4234567890u; | 472 new_timestamp = 4234567890u; |
463 old_timestamp = 123; | 473 old_timestamp = 123; |
464 EXPECT_EQ(-1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 474 EXPECT_EQ(-1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
465 } | 475 } |
466 | 476 |
467 TEST_F(RtcpTest, RtpTimestampInSenderTime) { | 477 TEST_F(RtcpTest, RtpTimestampInSenderTime) { |
468 RtcpPeer rtcp_peer(&testing_clock_, | 478 RtcpPeer rtcp_peer(cast_environment_, |
469 &mock_sender_feedback_, | 479 &mock_sender_feedback_, |
470 NULL, | 480 NULL, |
471 NULL, | 481 NULL, |
472 NULL, | 482 NULL, |
473 kRtcpReducedSize, | 483 kRtcpReducedSize, |
474 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 484 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
475 kReceiverSsrc, | 485 kReceiverSsrc, |
476 kSenderSsrc, | 486 kSenderSsrc, |
477 kCName); | 487 kCName); |
478 int frequency = 32000; | 488 int frequency = 32000; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 532 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
523 rtp_timestamp = 64000; | 533 rtp_timestamp = 64000; |
524 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, | 534 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, |
525 &rtp_timestamp_in_ticks)); | 535 &rtp_timestamp_in_ticks)); |
526 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 536 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
527 rtp_timestamp_in_ticks); | 537 rtp_timestamp_in_ticks); |
528 } | 538 } |
529 | 539 |
530 } // namespace cast | 540 } // namespace cast |
531 } // namespace media | 541 } // namespace media |
OLD | NEW |