Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(519)

Side by Side Diff: media/cast/net/rtcp/rtcp_builder_unittest.cc

Issue 1515433002: Replace uses of raw uint32's with a type-checked RtpTimeTicks data type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed mkwst's comments, plus REBASE. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/test/simple_test_tick_clock.h" 6 #include "base/test/simple_test_tick_clock.h"
7 #include "media/cast/cast_environment.h" 7 #include "media/cast/cast_environment.h"
8 #include "media/cast/net/cast_transport_config.h" 8 #include "media/cast/net/cast_transport_config.h"
9 #include "media/cast/net/cast_transport_defines.h" 9 #include "media/cast/net/cast_transport_defines.h"
10 #include "media/cast/net/pacing/paced_sender.h" 10 #include "media/cast/net/pacing/paced_sender.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 EXPECT_EQ((*golden_packet)[x], packet->data[x]) << 54 EXPECT_EQ((*golden_packet)[x], packet->data[x]) <<
55 "x = " << x << " / " << golden_packet->size(); 55 "x = " << x << " / " << golden_packet->size();
56 if ((*golden_packet)[x] != packet->data[x]) { 56 if ((*golden_packet)[x] != packet->data[x]) {
57 if (++diffs > 5) 57 if (++diffs > 5)
58 break; 58 break;
59 } 59 }
60 } 60 }
61 } 61 }
62 } 62 }
63 63
64 static RtpTimeTicks test_rtp_timestamp() {
65 return RtpTimeTicks().Expand(kRtpTimestamp);
66 }
67
64 scoped_ptr<RtcpBuilder> rtcp_builder_; 68 scoped_ptr<RtcpBuilder> rtcp_builder_;
65 69
66 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); 70 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest);
67 }; 71 };
68 72
69 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { 73 TEST_F(RtcpBuilderTest, RtcpReceiverReport) {
70 // Receiver report with report block. 74 // Receiver report with report block.
71 TestRtcpPacketBuilder p2; 75 TestRtcpPacketBuilder p2;
72 p2.AddRr(kSendingSsrc, 1); 76 p2.AddRr(kSendingSsrc, 1);
73 p2.AddRb(kMediaSsrc); 77 p2.AddRb(kMediaSsrc);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 &report_block, 206 &report_block,
203 &rrtr, 207 &rrtr,
204 &cast_message, 208 &cast_message,
205 &rtcp_events, 209 &rtcp_events,
206 kDefaultDelay)); 210 kDefaultDelay));
207 211
208 base::SimpleTestTickClock testing_clock; 212 base::SimpleTestTickClock testing_clock;
209 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 213 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
210 214
211 p.AddReceiverLog(kSendingSsrc); 215 p.AddReceiverLog(kSendingSsrc);
212 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); 216 p.AddReceiverFrameLog(test_rtp_timestamp().lower_32_bits(), 2, kTimeBaseMs);
213 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); 217 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0);
214 p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); 218 p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs);
215 219
216 FrameEvent frame_event; 220 FrameEvent frame_event;
217 frame_event.rtp_timestamp = kRtpTimestamp; 221 frame_event.rtp_timestamp = test_rtp_timestamp();
218 frame_event.type = FRAME_ACK_SENT; 222 frame_event.type = FRAME_ACK_SENT;
219 frame_event.media_type = VIDEO_EVENT; 223 frame_event.media_type = VIDEO_EVENT;
220 frame_event.timestamp = testing_clock.NowTicks(); 224 frame_event.timestamp = testing_clock.NowTicks();
221 event_subscriber.OnReceiveFrameEvent(frame_event); 225 event_subscriber.OnReceiveFrameEvent(frame_event);
222 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); 226 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
223 227
224 PacketEvent packet_event; 228 PacketEvent packet_event;
225 packet_event.rtp_timestamp = kRtpTimestamp; 229 packet_event.rtp_timestamp = test_rtp_timestamp();
226 packet_event.type = PACKET_RECEIVED; 230 packet_event.type = PACKET_RECEIVED;
227 packet_event.media_type = VIDEO_EVENT; 231 packet_event.media_type = VIDEO_EVENT;
228 packet_event.timestamp = testing_clock.NowTicks(); 232 packet_event.timestamp = testing_clock.NowTicks();
229 packet_event.packet_id = kLostPacketId1; 233 packet_event.packet_id = kLostPacketId1;
230 event_subscriber.OnReceivePacketEvent(packet_event); 234 event_subscriber.OnReceivePacketEvent(packet_event);
231 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); 235 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events);
232 EXPECT_EQ(2u, rtcp_events.size()); 236 EXPECT_EQ(2u, rtcp_events.size());
233 237
234 ExpectPacketEQ( 238 ExpectPacketEQ(
235 p.GetPacket().Pass(), 239 p.GetPacket().Pass(),
(...skipping 17 matching lines...) Expand all
253 257
254 base::SimpleTestTickClock testing_clock; 258 base::SimpleTestTickClock testing_clock;
255 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 259 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
256 260
257 p.AddReceiverLog(kSendingSsrc); 261 p.AddReceiverLog(kSendingSsrc);
258 262
259 int num_events = kMaxEventsPerRTCP; 263 int num_events = kMaxEventsPerRTCP;
260 264
261 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); 265 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages));
262 p.AddReceiverFrameLog( 266 p.AddReceiverFrameLog(
263 kRtpTimestamp + 2345, 267 (test_rtp_timestamp() + RtpTimeDelta::FromTicks(2345)).lower_32_bits(),
264 num_events, 268 num_events,
265 kTimeBaseMs); 269 kTimeBaseMs);
266 for (int i = 0; i < num_events; i++) { 270 for (int i = 0; i < num_events; i++) {
267 p.AddReceiverEventLog( 271 p.AddReceiverEventLog(
268 kLostPacketId1, 272 kLostPacketId1,
269 PACKET_RECEIVED, 273 PACKET_RECEIVED,
270 static_cast<uint16>(kTimeDelayMs * i)); 274 static_cast<uint16>(kTimeDelayMs * i));
271 } 275 }
272 276
273 277
274 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); 278 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT);
275 279
276 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { 280 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) {
277 PacketEvent packet_event; 281 PacketEvent packet_event;
278 packet_event.rtp_timestamp = kRtpTimestamp + 2345; 282 packet_event.rtp_timestamp =
283 test_rtp_timestamp() + RtpTimeDelta::FromTicks(2345);
279 packet_event.type = PACKET_RECEIVED; 284 packet_event.type = PACKET_RECEIVED;
280 packet_event.media_type = VIDEO_EVENT; 285 packet_event.media_type = VIDEO_EVENT;
281 packet_event.timestamp = testing_clock.NowTicks(); 286 packet_event.timestamp = testing_clock.NowTicks();
282 packet_event.packet_id = kLostPacketId1; 287 packet_event.packet_id = kLostPacketId1;
283 event_subscriber.OnReceivePacketEvent(packet_event); 288 event_subscriber.OnReceivePacketEvent(packet_event);
284 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); 289 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
285 } 290 }
286 291
287 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; 292 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events;
288 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); 293 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events);
(...skipping 18 matching lines...) Expand all
307 RtcpReportBlock report_block = GetReportBlock(); 312 RtcpReportBlock report_block = GetReportBlock();
308 313
309 base::SimpleTestTickClock testing_clock; 314 base::SimpleTestTickClock testing_clock;
310 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 315 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
311 316
312 p.AddReceiverLog(kSendingSsrc); 317 p.AddReceiverLog(kSendingSsrc);
313 318
314 int num_events = kMaxEventsPerRTCP; 319 int num_events = kMaxEventsPerRTCP;
315 320
316 for (int i = 0; i < num_events; i++) { 321 for (int i = 0; i < num_events; i++) {
317 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); 322 p.AddReceiverFrameLog(
323 (test_rtp_timestamp() + RtpTimeDelta::FromTicks(i)).lower_32_bits(),
324 1, kTimeBaseMs + i * kTimeDelayMs);
318 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); 325 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0);
319 } 326 }
320 327
321 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); 328 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT);
322 329
323 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { 330 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) {
324 FrameEvent frame_event; 331 FrameEvent frame_event;
325 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); 332 frame_event.rtp_timestamp =
333 test_rtp_timestamp() + RtpTimeDelta::FromTicks(i);
326 frame_event.type = FRAME_ACK_SENT; 334 frame_event.type = FRAME_ACK_SENT;
327 frame_event.media_type = VIDEO_EVENT; 335 frame_event.media_type = VIDEO_EVENT;
328 frame_event.timestamp = testing_clock.NowTicks(); 336 frame_event.timestamp = testing_clock.NowTicks();
329 event_subscriber.OnReceiveFrameEvent(frame_event); 337 event_subscriber.OnReceiveFrameEvent(frame_event);
330 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); 338 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
331 } 339 }
332 340
333 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; 341 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events;
334 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); 342 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events);
335 343
(...skipping 17 matching lines...) Expand all
353 361
354 base::SimpleTestTickClock testing_clock; 362 base::SimpleTestTickClock testing_clock;
355 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 363 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
356 364
357 p.AddReceiverLog(kSendingSsrc); 365 p.AddReceiverLog(kSendingSsrc);
358 366
359 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. 367 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart.
360 // Only last 10 events will be sent because the first event is more than 368 // Only last 10 events will be sent because the first event is more than
361 // 4095 milliseconds away from latest event. 369 // 4095 milliseconds away from latest event.
362 const int kTimeBetweenEventsMs = 410; 370 const int kTimeBetweenEventsMs = 410;
363 p.AddReceiverFrameLog(kRtpTimestamp, 10, kTimeBaseMs + kTimeBetweenEventsMs); 371 p.AddReceiverFrameLog(test_rtp_timestamp().lower_32_bits(), 10,
372 kTimeBaseMs + kTimeBetweenEventsMs);
364 for (int i = 0; i < 10; ++i) { 373 for (int i = 0; i < 10; ++i) {
365 p.AddReceiverEventLog(0, FRAME_ACK_SENT, i * kTimeBetweenEventsMs); 374 p.AddReceiverEventLog(0, FRAME_ACK_SENT, i * kTimeBetweenEventsMs);
366 } 375 }
367 376
368 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); 377 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT);
369 for (int i = 0; i < 11; ++i) { 378 for (int i = 0; i < 11; ++i) {
370 FrameEvent frame_event; 379 FrameEvent frame_event;
371 frame_event.rtp_timestamp = kRtpTimestamp; 380 frame_event.rtp_timestamp = test_rtp_timestamp();
372 frame_event.type = FRAME_ACK_SENT; 381 frame_event.type = FRAME_ACK_SENT;
373 frame_event.media_type = VIDEO_EVENT; 382 frame_event.media_type = VIDEO_EVENT;
374 frame_event.timestamp = testing_clock.NowTicks(); 383 frame_event.timestamp = testing_clock.NowTicks();
375 event_subscriber.OnReceiveFrameEvent(frame_event); 384 event_subscriber.OnReceiveFrameEvent(frame_event);
376 testing_clock.Advance( 385 testing_clock.Advance(
377 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); 386 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs));
378 } 387 }
379 388
380 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; 389 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events;
381 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); 390 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events);
(...skipping 20 matching lines...) Expand all
402 size_t packet_count = kNumResends * kResendDelay + 10; 411 size_t packet_count = kNumResends * kResendDelay + 10;
403 for (size_t i = 0; i < packet_count; i++) { 412 for (size_t i = 0; i < packet_count; i++) {
404 TestRtcpPacketBuilder p; 413 TestRtcpPacketBuilder p;
405 p.AddRr(kSendingSsrc, 1); 414 p.AddRr(kSendingSsrc, 1);
406 p.AddRb(kMediaSsrc); 415 p.AddRb(kMediaSsrc);
407 416
408 p.AddReceiverLog(kSendingSsrc); 417 p.AddReceiverLog(kSendingSsrc);
409 418
410 int num_events = (i + kResendDelay) / kResendDelay; 419 int num_events = (i + kResendDelay) / kResendDelay;
411 num_events = std::min<int>(num_events, kNumResends); 420 num_events = std::min<int>(num_events, kNumResends);
412 p.AddReceiverFrameLog(kRtpTimestamp, num_events, 421 p.AddReceiverFrameLog(test_rtp_timestamp().lower_32_bits(), num_events,
413 time_base_ms - (num_events - 1) * kResendDelay * 422 time_base_ms - (num_events - 1) * kResendDelay *
414 kTimeBetweenEventsMs); 423 kTimeBetweenEventsMs);
415 for (int i = 0; i < num_events; i++) { 424 for (int i = 0; i < num_events; i++) {
416 p.AddReceiverEventLog( 425 p.AddReceiverEventLog(
417 0, FRAME_ACK_SENT, 426 0, FRAME_ACK_SENT,
418 base::checked_cast<uint16>(i * kResendDelay * kTimeBetweenEventsMs)); 427 base::checked_cast<uint16>(i * kResendDelay * kTimeBetweenEventsMs));
419 } 428 }
420 429
421 FrameEvent frame_event; 430 FrameEvent frame_event;
422 frame_event.rtp_timestamp = kRtpTimestamp; 431 frame_event.rtp_timestamp = test_rtp_timestamp();
423 frame_event.type = FRAME_ACK_SENT; 432 frame_event.type = FRAME_ACK_SENT;
424 frame_event.media_type = VIDEO_EVENT; 433 frame_event.media_type = VIDEO_EVENT;
425 frame_event.timestamp = testing_clock.NowTicks(); 434 frame_event.timestamp = testing_clock.NowTicks();
426 event_subscriber.OnReceiveFrameEvent(frame_event); 435 event_subscriber.OnReceiveFrameEvent(frame_event);
427 436
428 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; 437 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events;
429 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); 438 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events);
430 439
431 ExpectPacketEQ(p.GetPacket().Pass(), 440 ExpectPacketEQ(p.GetPacket().Pass(),
432 rtcp_builder_->BuildRtcpFromReceiver( 441 rtcp_builder_->BuildRtcpFromReceiver(
433 &report_block, 442 &report_block,
434 NULL, 443 NULL,
435 NULL, 444 NULL,
436 &rtcp_events, 445 &rtcp_events,
437 kDefaultDelay)); 446 kDefaultDelay));
438 447
439 testing_clock.Advance( 448 testing_clock.Advance(
440 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); 449 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs));
441 time_base_ms += kTimeBetweenEventsMs; 450 time_base_ms += kTimeBetweenEventsMs;
442 } 451 }
443 } 452 }
444 453
445 TEST_F(RtcpBuilderTest, RtcpSenderReport) { 454 TEST_F(RtcpBuilderTest, RtcpSenderReport) {
446 RtcpSenderInfo sender_info; 455 RtcpSenderInfo sender_info;
447 sender_info.ntp_seconds = kNtpHigh; 456 sender_info.ntp_seconds = kNtpHigh;
448 sender_info.ntp_fraction = kNtpLow; 457 sender_info.ntp_fraction = kNtpLow;
449 sender_info.rtp_timestamp = kRtpTimestamp; 458 sender_info.rtp_timestamp = test_rtp_timestamp();
450 sender_info.send_packet_count = kSendPacketCount; 459 sender_info.send_packet_count = kSendPacketCount;
451 sender_info.send_octet_count = kSendOctetCount; 460 sender_info.send_octet_count = kSendOctetCount;
452 461
453 // Sender report. 462 // Sender report.
454 TestRtcpPacketBuilder p; 463 TestRtcpPacketBuilder p;
455 p.AddSr(kSendingSsrc, 0); 464 p.AddSr(kSendingSsrc, 0);
456 465
457 ExpectPacketEQ(p.GetPacket().Pass(), 466 ExpectPacketEQ(p.GetPacket().Pass(),
458 rtcp_builder_->BuildRtcpFromSender(sender_info)); 467 rtcp_builder_->BuildRtcpFromSender(sender_info));
459 } 468 }
460 469
461 } // namespace cast 470 } // namespace cast
462 } // namespace media 471 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698