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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "media/cast/cast_defines.h" | 8 #include "media/cast/cast_defines.h" |
9 #include "media/cast/cast_environment.h" | 9 #include "media/cast/cast_environment.h" |
10 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 10 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 const std::string& c_name) | 133 const std::string& c_name) |
134 : Rtcp(cast_environment, | 134 : Rtcp(cast_environment, |
135 sender_feedback, | 135 sender_feedback, |
136 transport_sender, | 136 transport_sender, |
137 paced_packet_sender, | 137 paced_packet_sender, |
138 rtp_receiver_statistics, | 138 rtp_receiver_statistics, |
139 rtcp_mode, | 139 rtcp_mode, |
140 rtcp_interval, | 140 rtcp_interval, |
141 local_ssrc, | 141 local_ssrc, |
142 remote_ssrc, | 142 remote_ssrc, |
143 c_name) {} | 143 c_name, |
| 144 true) {} |
144 | 145 |
145 using Rtcp::CheckForWrapAround; | 146 using Rtcp::CheckForWrapAround; |
146 using Rtcp::OnReceivedLipSyncInfo; | 147 using Rtcp::OnReceivedLipSyncInfo; |
147 }; | 148 }; |
148 | 149 |
149 class RtcpTest : public ::testing::Test { | 150 class RtcpTest : public ::testing::Test { |
150 protected: | 151 protected: |
151 RtcpTest() | 152 RtcpTest() |
152 : testing_clock_(new base::SimpleTestTickClock()), | 153 : testing_clock_(new base::SimpleTestTickClock()), |
153 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), | 154 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | 208 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); |
208 Rtcp rtcp(cast_environment_, | 209 Rtcp rtcp(cast_environment_, |
209 &mock_sender_feedback_, | 210 &mock_sender_feedback_, |
210 transport_sender_.get(), | 211 transport_sender_.get(), |
211 &receiver_to_sender_, | 212 &receiver_to_sender_, |
212 NULL, | 213 NULL, |
213 kRtcpCompound, | 214 kRtcpCompound, |
214 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 215 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
215 kSenderSsrc, | 216 kSenderSsrc, |
216 kReceiverSsrc, | 217 kReceiverSsrc, |
217 kCName); | 218 kCName, |
| 219 true); |
218 receiver_to_sender_.set_rtcp_receiver(&rtcp); | 220 receiver_to_sender_.set_rtcp_receiver(&rtcp); |
219 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); | 221 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); |
220 EXPECT_GE( | 222 EXPECT_GE( |
221 start_time + base::TimeDelta::FromMilliseconds(kRtcpIntervalMs * 3 / 2), | 223 start_time + base::TimeDelta::FromMilliseconds(kRtcpIntervalMs * 3 / 2), |
222 rtcp.TimeToSendNextRtcpReport()); | 224 rtcp.TimeToSendNextRtcpReport()); |
223 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; | 225 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; |
224 testing_clock_->Advance(delta); | 226 testing_clock_->Advance(delta); |
225 EXPECT_EQ(testing_clock_->NowTicks(), rtcp.TimeToSendNextRtcpReport()); | 227 EXPECT_EQ(testing_clock_->NowTicks(), rtcp.TimeToSendNextRtcpReport()); |
226 } | 228 } |
227 | 229 |
228 TEST_F(RtcpTest, BasicSenderReport) { | 230 TEST_F(RtcpTest, BasicSenderReport) { |
229 Rtcp rtcp(cast_environment_, | 231 Rtcp rtcp(cast_environment_, |
230 &mock_sender_feedback_, | 232 &mock_sender_feedback_, |
231 transport_sender_.get(), | 233 transport_sender_.get(), |
232 NULL, | 234 NULL, |
233 NULL, | 235 NULL, |
234 kRtcpCompound, | 236 kRtcpCompound, |
235 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 237 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
236 kSenderSsrc, | 238 kSenderSsrc, |
237 kReceiverSsrc, | 239 kReceiverSsrc, |
238 kCName); | 240 kCName, |
| 241 true); |
239 sender_to_receiver_.set_rtcp_receiver(&rtcp); | 242 sender_to_receiver_.set_rtcp_receiver(&rtcp); |
240 transport::RtcpSenderLogMessage empty_sender_log; | 243 transport::RtcpSenderLogMessage empty_sender_log; |
241 rtcp.SendRtcpFromRtpSender(empty_sender_log, rtp_sender_stats_.sender_info()); | 244 rtcp.SendRtcpFromRtpSender(empty_sender_log, rtp_sender_stats_.sender_info()); |
242 } | 245 } |
243 | 246 |
244 TEST_F(RtcpTest, BasicReceiverReport) { | 247 TEST_F(RtcpTest, BasicReceiverReport) { |
245 Rtcp rtcp(cast_environment_, | 248 Rtcp rtcp(cast_environment_, |
246 &mock_sender_feedback_, | 249 &mock_sender_feedback_, |
247 NULL, | 250 NULL, |
248 &receiver_to_sender_, | 251 &receiver_to_sender_, |
249 NULL, | 252 NULL, |
250 kRtcpCompound, | 253 kRtcpCompound, |
251 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 254 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
252 kSenderSsrc, | 255 kSenderSsrc, |
253 kReceiverSsrc, | 256 kReceiverSsrc, |
254 kCName); | 257 kCName, |
| 258 true); |
255 receiver_to_sender_.set_rtcp_receiver(&rtcp); | 259 receiver_to_sender_.set_rtcp_receiver(&rtcp); |
256 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); | 260 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); |
257 } | 261 } |
258 | 262 |
259 TEST_F(RtcpTest, BasicCast) { | 263 TEST_F(RtcpTest, BasicCast) { |
260 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); | 264 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); |
261 | 265 |
262 // Media receiver. | 266 // Media receiver. |
263 Rtcp rtcp(cast_environment_, | 267 Rtcp rtcp(cast_environment_, |
264 &mock_sender_feedback_, | 268 &mock_sender_feedback_, |
265 NULL, | 269 NULL, |
266 &receiver_to_sender_, | 270 &receiver_to_sender_, |
267 NULL, | 271 NULL, |
268 kRtcpReducedSize, | 272 kRtcpReducedSize, |
269 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 273 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
270 kSenderSsrc, | 274 kSenderSsrc, |
271 kSenderSsrc, | 275 kSenderSsrc, |
272 kCName); | 276 kCName, |
| 277 true); |
273 receiver_to_sender_.set_rtcp_receiver(&rtcp); | 278 receiver_to_sender_.set_rtcp_receiver(&rtcp); |
274 RtcpCastMessage cast_message(kSenderSsrc); | 279 RtcpCastMessage cast_message(kSenderSsrc); |
275 cast_message.ack_frame_id_ = kAckFrameId; | 280 cast_message.ack_frame_id_ = kAckFrameId; |
276 PacketIdSet missing_packets; | 281 PacketIdSet missing_packets; |
277 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; | 282 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; |
278 | 283 |
279 missing_packets.insert(kLostPacketId1); | 284 missing_packets.insert(kLostPacketId1); |
280 missing_packets.insert(kLostPacketId2); | 285 missing_packets.insert(kLostPacketId2); |
281 missing_packets.insert(kLostPacketId3); | 286 missing_packets.insert(kLostPacketId3); |
282 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = | 287 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
283 missing_packets; | 288 missing_packets; |
284 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); | 289 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); |
285 } | 290 } |
286 | 291 |
287 TEST_F(RtcpTest, RttReducedSizeRtcp) { | 292 TEST_F(RtcpTest, RttReducedSizeRtcp) { |
288 // Media receiver. | 293 // Media receiver. |
289 Rtcp rtcp_receiver(cast_environment_, | 294 Rtcp rtcp_receiver(cast_environment_, |
290 &mock_sender_feedback_, | 295 &mock_sender_feedback_, |
291 NULL, | 296 NULL, |
292 &receiver_to_sender_, | 297 &receiver_to_sender_, |
293 NULL, | 298 NULL, |
294 kRtcpReducedSize, | 299 kRtcpReducedSize, |
295 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 300 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
296 kReceiverSsrc, | 301 kReceiverSsrc, |
297 kSenderSsrc, | 302 kSenderSsrc, |
298 kCName); | 303 kCName, |
| 304 true); |
299 | 305 |
300 // Media sender. | 306 // Media sender. |
301 Rtcp rtcp_sender(cast_environment_, | 307 Rtcp rtcp_sender(cast_environment_, |
302 &mock_sender_feedback_, | 308 &mock_sender_feedback_, |
303 transport_sender_.get(), | 309 transport_sender_.get(), |
304 NULL, | 310 NULL, |
305 NULL, | 311 NULL, |
306 kRtcpReducedSize, | 312 kRtcpReducedSize, |
307 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 313 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
308 kSenderSsrc, | 314 kSenderSsrc, |
309 kReceiverSsrc, | 315 kReceiverSsrc, |
310 kCName); | 316 kCName, |
| 317 true); |
311 | 318 |
312 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 319 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
313 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 320 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
314 | 321 |
315 base::TimeDelta rtt; | 322 base::TimeDelta rtt; |
316 base::TimeDelta avg_rtt; | 323 base::TimeDelta avg_rtt; |
317 base::TimeDelta min_rtt; | 324 base::TimeDelta min_rtt; |
318 base::TimeDelta max_rtt; | 325 base::TimeDelta max_rtt; |
319 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 326 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
320 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 327 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
(...skipping 24 matching lines...) Expand all Loading... |
345 // Media receiver. | 352 // Media receiver. |
346 Rtcp rtcp_receiver(cast_environment_, | 353 Rtcp rtcp_receiver(cast_environment_, |
347 &mock_sender_feedback_, | 354 &mock_sender_feedback_, |
348 NULL, | 355 NULL, |
349 &receiver_to_sender_, | 356 &receiver_to_sender_, |
350 NULL, | 357 NULL, |
351 kRtcpCompound, | 358 kRtcpCompound, |
352 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 359 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
353 kReceiverSsrc, | 360 kReceiverSsrc, |
354 kSenderSsrc, | 361 kSenderSsrc, |
355 kCName); | 362 kCName, |
| 363 true); |
356 | 364 |
357 // Media sender. | 365 // Media sender. |
358 Rtcp rtcp_sender(cast_environment_, | 366 Rtcp rtcp_sender(cast_environment_, |
359 &mock_sender_feedback_, | 367 &mock_sender_feedback_, |
360 transport_sender_.get(), | 368 transport_sender_.get(), |
361 NULL, | 369 NULL, |
362 NULL, | 370 NULL, |
363 kRtcpCompound, | 371 kRtcpCompound, |
364 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 372 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
365 kSenderSsrc, | 373 kSenderSsrc, |
366 kReceiverSsrc, | 374 kReceiverSsrc, |
367 kCName); | 375 kCName, |
| 376 true); |
368 | 377 |
369 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 378 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
370 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 379 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
371 | 380 |
372 base::TimeDelta rtt; | 381 base::TimeDelta rtt; |
373 base::TimeDelta avg_rtt; | 382 base::TimeDelta avg_rtt; |
374 base::TimeDelta min_rtt; | 383 base::TimeDelta min_rtt; |
375 base::TimeDelta max_rtt; | 384 base::TimeDelta max_rtt; |
376 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 385 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
377 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 386 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 // Media receiver. | 449 // Media receiver. |
441 Rtcp rtcp_receiver(cast_environment_, | 450 Rtcp rtcp_receiver(cast_environment_, |
442 &mock_sender_feedback_, | 451 &mock_sender_feedback_, |
443 NULL, | 452 NULL, |
444 &receiver_to_sender_, | 453 &receiver_to_sender_, |
445 NULL, | 454 NULL, |
446 kRtcpReducedSize, | 455 kRtcpReducedSize, |
447 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 456 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
448 kSenderSsrc, | 457 kSenderSsrc, |
449 kReceiverSsrc, | 458 kReceiverSsrc, |
450 kCName); | 459 kCName, |
| 460 true); |
451 | 461 |
452 // Media sender. | 462 // Media sender. |
453 Rtcp rtcp_sender(cast_environment_, | 463 Rtcp rtcp_sender(cast_environment_, |
454 &mock_sender_feedback_, | 464 &mock_sender_feedback_, |
455 transport_sender_.get(), | 465 transport_sender_.get(), |
456 NULL, | 466 NULL, |
457 NULL, | 467 NULL, |
458 kRtcpReducedSize, | 468 kRtcpReducedSize, |
459 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 469 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
460 kReceiverSsrc, | 470 kReceiverSsrc, |
461 kSenderSsrc, | 471 kSenderSsrc, |
462 kCName); | 472 kCName, |
| 473 true); |
463 | 474 |
464 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); | 475 receiver_to_sender_.set_rtcp_receiver(&rtcp_sender); |
465 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); | 476 sender_to_receiver_.set_rtcp_receiver(&rtcp_receiver); |
466 | 477 |
467 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 478 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
468 transport::RtcpSenderLogMessage empty_sender_log; | 479 transport::RtcpSenderLogMessage empty_sender_log; |
469 rtcp_sender.SendRtcpFromRtpSender(empty_sender_log, | 480 rtcp_sender.SendRtcpFromRtpSender(empty_sender_log, |
470 rtp_sender_stats_.sender_info()); | 481 rtp_sender_stats_.sender_info()); |
471 RunTasks(33); | 482 RunTasks(33); |
472 | 483 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 637 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
627 rtp_timestamp = 64000; | 638 rtp_timestamp = 64000; |
628 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime( | 639 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime( |
629 frequency, rtp_timestamp, &rtp_timestamp_in_ticks)); | 640 frequency, rtp_timestamp, &rtp_timestamp_in_ticks)); |
630 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 641 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
631 rtp_timestamp_in_ticks); | 642 rtp_timestamp_in_ticks); |
632 } | 643 } |
633 | 644 |
634 } // namespace cast | 645 } // namespace cast |
635 } // namespace media | 646 } // namespace media |
OLD | NEW |