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

Side by Side Diff: webrtc/modules/video_coding/jitter_buffer_unittest.cc

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 months 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 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 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 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 VCMEncodedFrame* found_frame = jitter_buffer_->NextCompleteFrame(10); 261 VCMEncodedFrame* found_frame = jitter_buffer_->NextCompleteFrame(10);
262 if (!found_frame) 262 if (!found_frame)
263 return nullptr; 263 return nullptr;
264 return jitter_buffer_->ExtractAndSetDecode(found_frame->TimeStamp()); 264 return jitter_buffer_->ExtractAndSetDecode(found_frame->TimeStamp());
265 } 265 }
266 266
267 VCMEncodedFrame* DecodeIncompleteFrame() { 267 VCMEncodedFrame* DecodeIncompleteFrame() {
268 uint32_t timestamp = 0; 268 uint32_t timestamp = 0;
269 bool found_frame = jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp); 269 bool found_frame = jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp);
270 if (!found_frame) 270 if (!found_frame)
271 return NULL; 271 return nullptr;
272 VCMEncodedFrame* frame = jitter_buffer_->ExtractAndSetDecode(timestamp); 272 VCMEncodedFrame* frame = jitter_buffer_->ExtractAndSetDecode(timestamp);
273 return frame; 273 return frame;
274 } 274 }
275 275
276 void CheckOutFrame(VCMEncodedFrame* frame_out, 276 void CheckOutFrame(VCMEncodedFrame* frame_out,
277 unsigned int size, 277 unsigned int size,
278 bool startCode) { 278 bool startCode) {
279 ASSERT_TRUE(frame_out); 279 ASSERT_TRUE(frame_out);
280 280
281 const uint8_t* outData = frame_out->Buffer(); 281 const uint8_t* outData = frame_out->Buffer();
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); 411 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
412 } 412 }
413 413
414 bool DecodeCompleteFrame() { 414 bool DecodeCompleteFrame() {
415 VCMEncodedFrame* found_frame = jitter_buffer_->NextCompleteFrame(0); 415 VCMEncodedFrame* found_frame = jitter_buffer_->NextCompleteFrame(0);
416 if (!found_frame) 416 if (!found_frame)
417 return false; 417 return false;
418 418
419 VCMEncodedFrame* frame = 419 VCMEncodedFrame* frame =
420 jitter_buffer_->ExtractAndSetDecode(found_frame->TimeStamp()); 420 jitter_buffer_->ExtractAndSetDecode(found_frame->TimeStamp());
421 bool ret = (frame != NULL); 421 bool ret = (frame != nullptr);
422 jitter_buffer_->ReleaseFrame(frame); 422 jitter_buffer_->ReleaseFrame(frame);
423 return ret; 423 return ret;
424 } 424 }
425 425
426 bool DecodeIncompleteFrame() { 426 bool DecodeIncompleteFrame() {
427 uint32_t timestamp = 0; 427 uint32_t timestamp = 0;
428 bool found_frame = jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp); 428 bool found_frame = jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp);
429 if (!found_frame) 429 if (!found_frame)
430 return false; 430 return false;
431 VCMEncodedFrame* frame = jitter_buffer_->ExtractAndSetDecode(timestamp); 431 VCMEncodedFrame* frame = jitter_buffer_->ExtractAndSetDecode(timestamp);
432 bool ret = (frame != NULL); 432 bool ret = (frame != nullptr);
433 jitter_buffer_->ReleaseFrame(frame); 433 jitter_buffer_->ReleaseFrame(frame);
434 return ret; 434 return ret;
435 } 435 }
436 436
437 VCMJitterBuffer* jitter_buffer_; 437 VCMJitterBuffer* jitter_buffer_;
438 StreamGenerator* stream_generator_; 438 StreamGenerator* stream_generator_;
439 std::unique_ptr<SimulatedClock> clock_; 439 std::unique_ptr<SimulatedClock> clock_;
440 NullEventFactory event_factory_; 440 NullEventFactory event_factory_;
441 size_t max_nack_list_size_; 441 size_t max_nack_list_size_;
442 int oldest_packet_to_nack_; 442 int oldest_packet_to_nack_;
443 uint8_t data_buffer_[kDataBufferSize]; 443 uint8_t data_buffer_[kDataBufferSize];
444 }; 444 };
445 445
446 class TestJitterBufferNack : public TestRunningJitterBuffer { 446 class TestJitterBufferNack : public TestRunningJitterBuffer {
447 protected: 447 protected:
448 TestJitterBufferNack() {} 448 TestJitterBufferNack() {}
449 virtual void SetUp() { 449 virtual void SetUp() {
450 TestRunningJitterBuffer::SetUp(); 450 TestRunningJitterBuffer::SetUp();
451 jitter_buffer_->SetNackMode(kNack, -1, -1); 451 jitter_buffer_->SetNackMode(kNack, -1, -1);
452 } 452 }
453 453
454 virtual void TearDown() { TestRunningJitterBuffer::TearDown(); } 454 virtual void TearDown() { TestRunningJitterBuffer::TearDown(); }
455 }; 455 };
456 456
457 TEST_F(TestBasicJitterBuffer, StopRunning) { 457 TEST_F(TestBasicJitterBuffer, StopRunning) {
458 jitter_buffer_->Stop(); 458 jitter_buffer_->Stop();
459 EXPECT_TRUE(NULL == DecodeCompleteFrame()); 459 EXPECT_TRUE(nullptr == DecodeCompleteFrame());
460 EXPECT_TRUE(NULL == DecodeIncompleteFrame()); 460 EXPECT_TRUE(nullptr == DecodeIncompleteFrame());
461 jitter_buffer_->Start(); 461 jitter_buffer_->Start();
462 // Allow selective errors. 462 // Allow selective errors.
463 jitter_buffer_->SetDecodeErrorMode(kSelectiveErrors); 463 jitter_buffer_->SetDecodeErrorMode(kSelectiveErrors);
464 464
465 // No packets inserted. 465 // No packets inserted.
466 EXPECT_TRUE(NULL == DecodeCompleteFrame()); 466 EXPECT_TRUE(nullptr == DecodeCompleteFrame());
467 EXPECT_TRUE(NULL == DecodeIncompleteFrame()); 467 EXPECT_TRUE(nullptr == DecodeIncompleteFrame());
468 468
469 // Allow decoding with errors. 469 // Allow decoding with errors.
470 jitter_buffer_->SetDecodeErrorMode(kWithErrors); 470 jitter_buffer_->SetDecodeErrorMode(kWithErrors);
471 471
472 // No packets inserted. 472 // No packets inserted.
473 EXPECT_TRUE(NULL == DecodeCompleteFrame()); 473 EXPECT_TRUE(nullptr == DecodeCompleteFrame());
474 EXPECT_TRUE(NULL == DecodeIncompleteFrame()); 474 EXPECT_TRUE(nullptr == DecodeIncompleteFrame());
475 } 475 }
476 476
477 TEST_F(TestBasicJitterBuffer, SinglePacketFrame) { 477 TEST_F(TestBasicJitterBuffer, SinglePacketFrame) {
478 // Always start with a complete key frame when not allowing errors. 478 // Always start with a complete key frame when not allowing errors.
479 jitter_buffer_->SetDecodeErrorMode(kNoErrors); 479 jitter_buffer_->SetDecodeErrorMode(kNoErrors);
480 packet_->frameType = kVideoFrameKey; 480 packet_->frameType = kVideoFrameKey;
481 packet_->is_first_packet_in_frame = true; 481 packet_->is_first_packet_in_frame = true;
482 packet_->markerBit = true; 482 packet_->markerBit = true;
483 packet_->timestamp += 123 * 90; 483 packet_->timestamp += 123 * 90;
484 484
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 TEST_F(TestBasicJitterBuffer, DualPacketFrame) { 533 TEST_F(TestBasicJitterBuffer, DualPacketFrame) {
534 packet_->frameType = kVideoFrameKey; 534 packet_->frameType = kVideoFrameKey;
535 packet_->is_first_packet_in_frame = true; 535 packet_->is_first_packet_in_frame = true;
536 packet_->markerBit = false; 536 packet_->markerBit = false;
537 537
538 bool retransmitted = false; 538 bool retransmitted = false;
539 EXPECT_EQ(kIncomplete, 539 EXPECT_EQ(kIncomplete,
540 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 540 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
541 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 541 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
542 // Should not be complete. 542 // Should not be complete.
543 EXPECT_TRUE(frame_out == NULL); 543 EXPECT_TRUE(frame_out == nullptr);
544 544
545 ++seq_num_; 545 ++seq_num_;
546 packet_->is_first_packet_in_frame = false; 546 packet_->is_first_packet_in_frame = false;
547 packet_->markerBit = true; 547 packet_->markerBit = true;
548 packet_->seqNum = seq_num_; 548 packet_->seqNum = seq_num_;
549 549
550 EXPECT_EQ(kCompleteSession, 550 EXPECT_EQ(kCompleteSession,
551 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 551 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
552 552
553 frame_out = DecodeCompleteFrame(); 553 frame_out = DecodeCompleteFrame();
554 CheckOutFrame(frame_out, 2 * size_, false); 554 CheckOutFrame(frame_out, 2 * size_, false);
555 555
556 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); 556 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType());
557 jitter_buffer_->ReleaseFrame(frame_out); 557 jitter_buffer_->ReleaseFrame(frame_out);
558 } 558 }
559 559
560 TEST_F(TestBasicJitterBuffer, 100PacketKeyFrame) { 560 TEST_F(TestBasicJitterBuffer, 100PacketKeyFrame) {
561 packet_->frameType = kVideoFrameKey; 561 packet_->frameType = kVideoFrameKey;
562 packet_->is_first_packet_in_frame = true; 562 packet_->is_first_packet_in_frame = true;
563 packet_->markerBit = false; 563 packet_->markerBit = false;
564 564
565 bool retransmitted = false; 565 bool retransmitted = false;
566 EXPECT_EQ(kIncomplete, 566 EXPECT_EQ(kIncomplete,
567 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 567 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
568 568
569 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 569 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
570 570
571 // Frame should not be complete. 571 // Frame should not be complete.
572 EXPECT_TRUE(frame_out == NULL); 572 EXPECT_TRUE(frame_out == nullptr);
573 573
574 // Insert 98 frames. 574 // Insert 98 frames.
575 int loop = 0; 575 int loop = 0;
576 do { 576 do {
577 seq_num_++; 577 seq_num_++;
578 packet_->is_first_packet_in_frame = false; 578 packet_->is_first_packet_in_frame = false;
579 packet_->markerBit = false; 579 packet_->markerBit = false;
580 packet_->seqNum = seq_num_; 580 packet_->seqNum = seq_num_;
581 581
582 EXPECT_EQ(kIncomplete, 582 EXPECT_EQ(kIncomplete,
(...skipping 20 matching lines...) Expand all
603 TEST_F(TestBasicJitterBuffer, 100PacketDeltaFrame) { 603 TEST_F(TestBasicJitterBuffer, 100PacketDeltaFrame) {
604 // Always start with a complete key frame. 604 // Always start with a complete key frame.
605 packet_->frameType = kVideoFrameKey; 605 packet_->frameType = kVideoFrameKey;
606 packet_->is_first_packet_in_frame = true; 606 packet_->is_first_packet_in_frame = true;
607 packet_->markerBit = true; 607 packet_->markerBit = true;
608 608
609 bool retransmitted = false; 609 bool retransmitted = false;
610 EXPECT_EQ(kCompleteSession, 610 EXPECT_EQ(kCompleteSession,
611 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 611 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
612 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 612 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
613 EXPECT_FALSE(frame_out == NULL); 613 EXPECT_FALSE(frame_out == nullptr);
614 jitter_buffer_->ReleaseFrame(frame_out); 614 jitter_buffer_->ReleaseFrame(frame_out);
615 615
616 ++seq_num_; 616 ++seq_num_;
617 packet_->seqNum = seq_num_; 617 packet_->seqNum = seq_num_;
618 packet_->markerBit = false; 618 packet_->markerBit = false;
619 packet_->frameType = kVideoFrameDelta; 619 packet_->frameType = kVideoFrameDelta;
620 packet_->timestamp += 33 * 90; 620 packet_->timestamp += 33 * 90;
621 621
622 EXPECT_EQ(kIncomplete, 622 EXPECT_EQ(kIncomplete,
623 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 623 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
624 624
625 frame_out = DecodeCompleteFrame(); 625 frame_out = DecodeCompleteFrame();
626 626
627 // Frame should not be complete. 627 // Frame should not be complete.
628 EXPECT_TRUE(frame_out == NULL); 628 EXPECT_TRUE(frame_out == nullptr);
629 629
630 packet_->is_first_packet_in_frame = false; 630 packet_->is_first_packet_in_frame = false;
631 // Insert 98 frames. 631 // Insert 98 frames.
632 int loop = 0; 632 int loop = 0;
633 do { 633 do {
634 ++seq_num_; 634 ++seq_num_;
635 packet_->seqNum = seq_num_; 635 packet_->seqNum = seq_num_;
636 636
637 // Insert a packet into a frame. 637 // Insert a packet into a frame.
638 EXPECT_EQ(kIncomplete, 638 EXPECT_EQ(kIncomplete,
(...skipping 25 matching lines...) Expand all
664 packet_->markerBit = true; 664 packet_->markerBit = true;
665 packet_->seqNum = seq_num_; 665 packet_->seqNum = seq_num_;
666 packet_->timestamp = timestamp_; 666 packet_->timestamp = timestamp_;
667 667
668 bool retransmitted = false; 668 bool retransmitted = false;
669 EXPECT_EQ(kIncomplete, 669 EXPECT_EQ(kIncomplete,
670 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 670 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
671 671
672 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 672 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
673 673
674 EXPECT_TRUE(frame_out == NULL); 674 EXPECT_TRUE(frame_out == nullptr);
675 675
676 // Insert 98 packets. 676 // Insert 98 packets.
677 int loop = 0; 677 int loop = 0;
678 do { 678 do {
679 seq_num_--; 679 seq_num_--;
680 packet_->is_first_packet_in_frame = false; 680 packet_->is_first_packet_in_frame = false;
681 packet_->markerBit = false; 681 packet_->markerBit = false;
682 packet_->seqNum = seq_num_; 682 packet_->seqNum = seq_num_;
683 683
684 EXPECT_EQ(kIncomplete, 684 EXPECT_EQ(kIncomplete,
(...skipping 22 matching lines...) Expand all
707 packet_->frameType = kVideoFrameDelta; 707 packet_->frameType = kVideoFrameDelta;
708 packet_->is_first_packet_in_frame = true; 708 packet_->is_first_packet_in_frame = true;
709 packet_->markerBit = false; 709 packet_->markerBit = false;
710 710
711 bool retransmitted = false; 711 bool retransmitted = false;
712 EXPECT_EQ(kIncomplete, 712 EXPECT_EQ(kIncomplete,
713 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 713 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
714 714
715 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 715 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
716 716
717 EXPECT_TRUE(frame_out == NULL); 717 EXPECT_TRUE(frame_out == nullptr);
718 718
719 seq_num_++; 719 seq_num_++;
720 packet_->is_first_packet_in_frame = false; 720 packet_->is_first_packet_in_frame = false;
721 packet_->markerBit = true; 721 packet_->markerBit = true;
722 packet_->seqNum = seq_num_; 722 packet_->seqNum = seq_num_;
723 723
724 EXPECT_EQ(kCompleteSession, 724 EXPECT_EQ(kCompleteSession,
725 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 725 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
726 726
727 // check that we fail to get frame since seqnum is not continuous 727 // check that we fail to get frame since seqnum is not continuous
728 frame_out = DecodeCompleteFrame(); 728 frame_out = DecodeCompleteFrame();
729 EXPECT_TRUE(frame_out == NULL); 729 EXPECT_TRUE(frame_out == nullptr);
730 730
731 seq_num_ -= 3; 731 seq_num_ -= 3;
732 timestamp_ -= 33 * 90; 732 timestamp_ -= 33 * 90;
733 packet_->frameType = kVideoFrameKey; 733 packet_->frameType = kVideoFrameKey;
734 packet_->is_first_packet_in_frame = true; 734 packet_->is_first_packet_in_frame = true;
735 packet_->markerBit = false; 735 packet_->markerBit = false;
736 packet_->seqNum = seq_num_; 736 packet_->seqNum = seq_num_;
737 packet_->timestamp = timestamp_; 737 packet_->timestamp = timestamp_;
738 738
739 EXPECT_EQ(kIncomplete, 739 EXPECT_EQ(kIncomplete,
740 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 740 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
741 741
742 frame_out = DecodeCompleteFrame(); 742 frame_out = DecodeCompleteFrame();
743 743
744 // It should not be complete. 744 // It should not be complete.
745 EXPECT_TRUE(frame_out == NULL); 745 EXPECT_TRUE(frame_out == nullptr);
746 746
747 seq_num_++; 747 seq_num_++;
748 packet_->is_first_packet_in_frame = false; 748 packet_->is_first_packet_in_frame = false;
749 packet_->markerBit = true; 749 packet_->markerBit = true;
750 packet_->seqNum = seq_num_; 750 packet_->seqNum = seq_num_;
751 751
752 EXPECT_EQ(kCompleteSession, 752 EXPECT_EQ(kCompleteSession,
753 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 753 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
754 754
755 frame_out = DecodeCompleteFrame(); 755 frame_out = DecodeCompleteFrame();
(...skipping 10 matching lines...) Expand all
766 TEST_F(TestBasicJitterBuffer, TestReorderingWithPadding) { 766 TEST_F(TestBasicJitterBuffer, TestReorderingWithPadding) {
767 packet_->frameType = kVideoFrameKey; 767 packet_->frameType = kVideoFrameKey;
768 packet_->is_first_packet_in_frame = true; 768 packet_->is_first_packet_in_frame = true;
769 packet_->markerBit = true; 769 packet_->markerBit = true;
770 770
771 // Send in an initial good packet/frame (Frame A) to start things off. 771 // Send in an initial good packet/frame (Frame A) to start things off.
772 bool retransmitted = false; 772 bool retransmitted = false;
773 EXPECT_EQ(kCompleteSession, 773 EXPECT_EQ(kCompleteSession,
774 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 774 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
775 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 775 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
776 EXPECT_TRUE(frame_out != NULL); 776 EXPECT_TRUE(frame_out != nullptr);
777 jitter_buffer_->ReleaseFrame(frame_out); 777 jitter_buffer_->ReleaseFrame(frame_out);
778 778
779 // Now send in a complete delta frame (Frame C), but with a sequence number 779 // Now send in a complete delta frame (Frame C), but with a sequence number
780 // gap. No pic index either, so no temporal scalability cheating :) 780 // gap. No pic index either, so no temporal scalability cheating :)
781 packet_->frameType = kVideoFrameDelta; 781 packet_->frameType = kVideoFrameDelta;
782 // Leave a gap of 2 sequence numbers and two frames. 782 // Leave a gap of 2 sequence numbers and two frames.
783 packet_->seqNum = seq_num_ + 3; 783 packet_->seqNum = seq_num_ + 3;
784 packet_->timestamp = timestamp_ + (66 * 90); 784 packet_->timestamp = timestamp_ + (66 * 90);
785 // Still isFirst = marker = true. 785 // Still isFirst = marker = true.
786 // Session should be complete (frame is complete), but there's nothing to 786 // Session should be complete (frame is complete), but there's nothing to
787 // decode yet. 787 // decode yet.
788 EXPECT_EQ(kCompleteSession, 788 EXPECT_EQ(kCompleteSession,
789 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 789 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
790 frame_out = DecodeCompleteFrame(); 790 frame_out = DecodeCompleteFrame();
791 EXPECT_TRUE(frame_out == NULL); 791 EXPECT_TRUE(frame_out == nullptr);
792 792
793 // Now send in a complete delta frame (Frame B) that is continuous from A, but 793 // Now send in a complete delta frame (Frame B) that is continuous from A, but
794 // doesn't fill the full gap to C. The rest of the gap is going to be padding. 794 // doesn't fill the full gap to C. The rest of the gap is going to be padding.
795 packet_->seqNum = seq_num_ + 1; 795 packet_->seqNum = seq_num_ + 1;
796 packet_->timestamp = timestamp_ + (33 * 90); 796 packet_->timestamp = timestamp_ + (33 * 90);
797 // Still isFirst = marker = true. 797 // Still isFirst = marker = true.
798 EXPECT_EQ(kCompleteSession, 798 EXPECT_EQ(kCompleteSession,
799 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 799 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
800 frame_out = DecodeCompleteFrame(); 800 frame_out = DecodeCompleteFrame();
801 EXPECT_TRUE(frame_out != NULL); 801 EXPECT_TRUE(frame_out != nullptr);
802 jitter_buffer_->ReleaseFrame(frame_out); 802 jitter_buffer_->ReleaseFrame(frame_out);
803 803
804 // But Frame C isn't continuous yet. 804 // But Frame C isn't continuous yet.
805 frame_out = DecodeCompleteFrame(); 805 frame_out = DecodeCompleteFrame();
806 EXPECT_TRUE(frame_out == NULL); 806 EXPECT_TRUE(frame_out == nullptr);
807 807
808 // Add in the padding. These are empty packets (data length is 0) with no 808 // Add in the padding. These are empty packets (data length is 0) with no
809 // marker bit and matching the timestamp of Frame B. 809 // marker bit and matching the timestamp of Frame B.
810 WebRtcRTPHeader rtpHeader; 810 WebRtcRTPHeader rtpHeader;
811 memset(&rtpHeader, 0, sizeof(rtpHeader)); 811 memset(&rtpHeader, 0, sizeof(rtpHeader));
812 rtpHeader.header.sequenceNumber = seq_num_ + 2; 812 rtpHeader.header.sequenceNumber = seq_num_ + 2;
813 rtpHeader.header.timestamp = timestamp_ + (33 * 90); 813 rtpHeader.header.timestamp = timestamp_ + (33 * 90);
814 rtpHeader.header.markerBit = false; 814 rtpHeader.header.markerBit = false;
815 VCMPacket empty_packet(data_, 0, rtpHeader); 815 VCMPacket empty_packet(data_, 0, rtpHeader);
816 EXPECT_EQ(kOldPacket, 816 EXPECT_EQ(kOldPacket,
817 jitter_buffer_->InsertPacket(empty_packet, &retransmitted)); 817 jitter_buffer_->InsertPacket(empty_packet, &retransmitted));
818 empty_packet.seqNum += 1; 818 empty_packet.seqNum += 1;
819 EXPECT_EQ(kOldPacket, 819 EXPECT_EQ(kOldPacket,
820 jitter_buffer_->InsertPacket(empty_packet, &retransmitted)); 820 jitter_buffer_->InsertPacket(empty_packet, &retransmitted));
821 821
822 // But now Frame C should be ready! 822 // But now Frame C should be ready!
823 frame_out = DecodeCompleteFrame(); 823 frame_out = DecodeCompleteFrame();
824 EXPECT_TRUE(frame_out != NULL); 824 EXPECT_TRUE(frame_out != nullptr);
825 jitter_buffer_->ReleaseFrame(frame_out); 825 jitter_buffer_->ReleaseFrame(frame_out);
826 } 826 }
827 827
828 TEST_F(TestBasicJitterBuffer, DuplicatePackets) { 828 TEST_F(TestBasicJitterBuffer, DuplicatePackets) {
829 packet_->frameType = kVideoFrameKey; 829 packet_->frameType = kVideoFrameKey;
830 packet_->is_first_packet_in_frame = true; 830 packet_->is_first_packet_in_frame = true;
831 packet_->markerBit = false; 831 packet_->markerBit = false;
832 packet_->seqNum = seq_num_; 832 packet_->seqNum = seq_num_;
833 packet_->timestamp = timestamp_; 833 packet_->timestamp = timestamp_;
834 EXPECT_EQ(0, jitter_buffer_->num_packets()); 834 EXPECT_EQ(0, jitter_buffer_->num_packets());
835 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets()); 835 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets());
836 836
837 bool retransmitted = false; 837 bool retransmitted = false;
838 EXPECT_EQ(kIncomplete, 838 EXPECT_EQ(kIncomplete,
839 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 839 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
840 840
841 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 841 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
842 842
843 EXPECT_TRUE(frame_out == NULL); 843 EXPECT_TRUE(frame_out == nullptr);
844 EXPECT_EQ(1, jitter_buffer_->num_packets()); 844 EXPECT_EQ(1, jitter_buffer_->num_packets());
845 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets()); 845 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets());
846 846
847 // Insert a packet into a frame. 847 // Insert a packet into a frame.
848 EXPECT_EQ(kDuplicatePacket, 848 EXPECT_EQ(kDuplicatePacket,
849 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 849 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
850 EXPECT_EQ(2, jitter_buffer_->num_packets()); 850 EXPECT_EQ(2, jitter_buffer_->num_packets());
851 EXPECT_EQ(1, jitter_buffer_->num_duplicated_packets()); 851 EXPECT_EQ(1, jitter_buffer_->num_duplicated_packets());
852 852
853 seq_num_++; 853 seq_num_++;
854 packet_->seqNum = seq_num_; 854 packet_->seqNum = seq_num_;
855 packet_->markerBit = true; 855 packet_->markerBit = true;
856 packet_->is_first_packet_in_frame = false; 856 packet_->is_first_packet_in_frame = false;
857 857
858 EXPECT_EQ(kCompleteSession, 858 EXPECT_EQ(kCompleteSession,
859 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 859 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
860 860
861 frame_out = DecodeCompleteFrame(); 861 frame_out = DecodeCompleteFrame();
862 ASSERT_TRUE(frame_out != NULL); 862 ASSERT_TRUE(frame_out != nullptr);
863 CheckOutFrame(frame_out, 2 * size_, false); 863 CheckOutFrame(frame_out, 2 * size_, false);
864 864
865 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); 865 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType());
866 EXPECT_EQ(3, jitter_buffer_->num_packets()); 866 EXPECT_EQ(3, jitter_buffer_->num_packets());
867 EXPECT_EQ(1, jitter_buffer_->num_duplicated_packets()); 867 EXPECT_EQ(1, jitter_buffer_->num_duplicated_packets());
868 jitter_buffer_->ReleaseFrame(frame_out); 868 jitter_buffer_->ReleaseFrame(frame_out);
869 } 869 }
870 870
871 TEST_F(TestBasicJitterBuffer, DuplicatePreviousDeltaFramePacket) { 871 TEST_F(TestBasicJitterBuffer, DuplicatePreviousDeltaFramePacket) {
872 packet_->frameType = kVideoFrameKey; 872 packet_->frameType = kVideoFrameKey;
873 packet_->is_first_packet_in_frame = true; 873 packet_->is_first_packet_in_frame = true;
874 packet_->markerBit = true; 874 packet_->markerBit = true;
875 packet_->seqNum = seq_num_; 875 packet_->seqNum = seq_num_;
876 packet_->timestamp = timestamp_; 876 packet_->timestamp = timestamp_;
877 jitter_buffer_->SetDecodeErrorMode(kNoErrors); 877 jitter_buffer_->SetDecodeErrorMode(kNoErrors);
878 EXPECT_EQ(0, jitter_buffer_->num_packets()); 878 EXPECT_EQ(0, jitter_buffer_->num_packets());
879 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets()); 879 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets());
880 880
881 bool retransmitted = false; 881 bool retransmitted = false;
882 // Insert first complete frame. 882 // Insert first complete frame.
883 EXPECT_EQ(kCompleteSession, 883 EXPECT_EQ(kCompleteSession,
884 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 884 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
885 885
886 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 886 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
887 ASSERT_TRUE(frame_out != NULL); 887 ASSERT_TRUE(frame_out != nullptr);
888 CheckOutFrame(frame_out, size_, false); 888 CheckOutFrame(frame_out, size_, false);
889 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); 889 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType());
890 jitter_buffer_->ReleaseFrame(frame_out); 890 jitter_buffer_->ReleaseFrame(frame_out);
891 891
892 // Insert 3 delta frames. 892 // Insert 3 delta frames.
893 for (uint16_t i = 1; i <= 3; ++i) { 893 for (uint16_t i = 1; i <= 3; ++i) {
894 packet_->seqNum = seq_num_ + i; 894 packet_->seqNum = seq_num_ + i;
895 packet_->timestamp = timestamp_ + (i * 33) * 90; 895 packet_->timestamp = timestamp_ + (i * 33) * 90;
896 packet_->frameType = kVideoFrameDelta; 896 packet_->frameType = kVideoFrameDelta;
897 EXPECT_EQ(kCompleteSession, 897 EXPECT_EQ(kCompleteSession,
898 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 898 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
899 EXPECT_EQ(i + 1, jitter_buffer_->num_packets()); 899 EXPECT_EQ(i + 1, jitter_buffer_->num_packets());
900 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets()); 900 EXPECT_EQ(0, jitter_buffer_->num_duplicated_packets());
901 } 901 }
902 902
903 // Retransmit second delta frame. 903 // Retransmit second delta frame.
904 packet_->seqNum = seq_num_ + 2; 904 packet_->seqNum = seq_num_ + 2;
905 packet_->timestamp = timestamp_ + 66 * 90; 905 packet_->timestamp = timestamp_ + 66 * 90;
906 906
907 EXPECT_EQ(kDuplicatePacket, 907 EXPECT_EQ(kDuplicatePacket,
908 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 908 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
909 909
910 EXPECT_EQ(5, jitter_buffer_->num_packets()); 910 EXPECT_EQ(5, jitter_buffer_->num_packets());
911 EXPECT_EQ(1, jitter_buffer_->num_duplicated_packets()); 911 EXPECT_EQ(1, jitter_buffer_->num_duplicated_packets());
912 912
913 // Should be able to decode 3 delta frames, key frame already decoded. 913 // Should be able to decode 3 delta frames, key frame already decoded.
914 for (size_t i = 0; i < 3; ++i) { 914 for (size_t i = 0; i < 3; ++i) {
915 frame_out = DecodeCompleteFrame(); 915 frame_out = DecodeCompleteFrame();
916 ASSERT_TRUE(frame_out != NULL); 916 ASSERT_TRUE(frame_out != nullptr);
917 CheckOutFrame(frame_out, size_, false); 917 CheckOutFrame(frame_out, size_, false);
918 EXPECT_EQ(kVideoFrameDelta, frame_out->FrameType()); 918 EXPECT_EQ(kVideoFrameDelta, frame_out->FrameType());
919 jitter_buffer_->ReleaseFrame(frame_out); 919 jitter_buffer_->ReleaseFrame(frame_out);
920 } 920 }
921 } 921 }
922 922
923 TEST_F(TestBasicJitterBuffer, TestSkipForwardVp9) { 923 TEST_F(TestBasicJitterBuffer, TestSkipForwardVp9) {
924 // Verify that JB skips forward to next base layer frame. 924 // Verify that JB skips forward to next base layer frame.
925 // ------------------------------------------------- 925 // -------------------------------------------------
926 // | 65485 | 65486 | 65487 | 65488 | 65489 | ... 926 // | 65485 | 65486 | 65487 | 65488 | 65489 | ...
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 packet_->timestamp = timestamp_; 1139 packet_->timestamp = timestamp_;
1140 packet_->insertStartCode = true; 1140 packet_->insertStartCode = true;
1141 1141
1142 bool retransmitted = false; 1142 bool retransmitted = false;
1143 EXPECT_EQ(kIncomplete, 1143 EXPECT_EQ(kIncomplete,
1144 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1144 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1145 1145
1146 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1146 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1147 1147
1148 // Frame should not be complete. 1148 // Frame should not be complete.
1149 EXPECT_TRUE(frame_out == NULL); 1149 EXPECT_TRUE(frame_out == nullptr);
1150 1150
1151 seq_num_++; 1151 seq_num_++;
1152 packet_->is_first_packet_in_frame = false; 1152 packet_->is_first_packet_in_frame = false;
1153 packet_->markerBit = true; 1153 packet_->markerBit = true;
1154 packet_->seqNum = seq_num_; 1154 packet_->seqNum = seq_num_;
1155 1155
1156 EXPECT_EQ(kCompleteSession, 1156 EXPECT_EQ(kCompleteSession,
1157 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1157 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1158 1158
1159 frame_out = DecodeCompleteFrame(); 1159 frame_out = DecodeCompleteFrame();
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1314 EXPECT_TRUE(jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp)); 1314 EXPECT_TRUE(jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp));
1315 } 1315 }
1316 1316
1317 packet_->seqNum++; 1317 packet_->seqNum++;
1318 EXPECT_EQ(kDecodableSession, 1318 EXPECT_EQ(kDecodableSession,
1319 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1319 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1320 EXPECT_EQ(jitter_buffer_->NextCompleteFrame(0), nullptr); 1320 EXPECT_EQ(jitter_buffer_->NextCompleteFrame(0), nullptr);
1321 EXPECT_TRUE(jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp)); 1321 EXPECT_TRUE(jitter_buffer_->NextMaybeIncompleteTimestamp(&timestamp));
1322 1322
1323 frame_out = DecodeIncompleteFrame(); 1323 frame_out = DecodeIncompleteFrame();
1324 ASSERT_FALSE(NULL == frame_out); 1324 ASSERT_FALSE(nullptr == frame_out);
1325 CheckOutFrame(frame_out, 9 * size_, false); 1325 CheckOutFrame(frame_out, 9 * size_, false);
1326 EXPECT_EQ(kVideoFrameDelta, frame_out->FrameType()); 1326 EXPECT_EQ(kVideoFrameDelta, frame_out->FrameType());
1327 jitter_buffer_->ReleaseFrame(frame_out); 1327 jitter_buffer_->ReleaseFrame(frame_out);
1328 1328
1329 packet_->markerBit = true; 1329 packet_->markerBit = true;
1330 packet_->seqNum++; 1330 packet_->seqNum++;
1331 EXPECT_EQ(kOldPacket, jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1331 EXPECT_EQ(kOldPacket, jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1332 } 1332 }
1333 1333
1334 // Make sure first packet is present before a frame can be decoded. 1334 // Make sure first packet is present before a frame can be decoded.
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 packet_->seqNum = seq_num_; 1467 packet_->seqNum = seq_num_;
1468 packet_->timestamp = timestamp_; 1468 packet_->timestamp = timestamp_;
1469 bool retransmitted = false; 1469 bool retransmitted = false;
1470 EXPECT_EQ(kCompleteSession, 1470 EXPECT_EQ(kCompleteSession,
1471 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1471 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1472 uint32_t next_timestamp; 1472 uint32_t next_timestamp;
1473 VCMEncodedFrame* frame = jitter_buffer_->NextCompleteFrame(0); 1473 VCMEncodedFrame* frame = jitter_buffer_->NextCompleteFrame(0);
1474 EXPECT_NE(frame, nullptr); 1474 EXPECT_NE(frame, nullptr);
1475 EXPECT_EQ(packet_->timestamp, frame->TimeStamp()); 1475 EXPECT_EQ(packet_->timestamp, frame->TimeStamp());
1476 frame = jitter_buffer_->ExtractAndSetDecode(frame->TimeStamp()); 1476 frame = jitter_buffer_->ExtractAndSetDecode(frame->TimeStamp());
1477 EXPECT_TRUE(frame != NULL); 1477 EXPECT_TRUE(frame != nullptr);
1478 jitter_buffer_->ReleaseFrame(frame); 1478 jitter_buffer_->ReleaseFrame(frame);
1479 1479
1480 // Drop a complete frame. 1480 // Drop a complete frame.
1481 timestamp_ += 2 * 33 * 90; 1481 timestamp_ += 2 * 33 * 90;
1482 seq_num_ += 2; 1482 seq_num_ += 2;
1483 packet_->frameType = kVideoFrameDelta; 1483 packet_->frameType = kVideoFrameDelta;
1484 packet_->is_first_packet_in_frame = true; 1484 packet_->is_first_packet_in_frame = true;
1485 packet_->markerBit = false; 1485 packet_->markerBit = false;
1486 packet_->seqNum = seq_num_; 1486 packet_->seqNum = seq_num_;
1487 packet_->timestamp = timestamp_; 1487 packet_->timestamp = timestamp_;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 packet_->seqNum = seq_num_; 1533 packet_->seqNum = seq_num_;
1534 packet_->timestamp = timestamp_; 1534 packet_->timestamp = timestamp_;
1535 packet_->completeNALU = kNaluStart; 1535 packet_->completeNALU = kNaluStart;
1536 1536
1537 EXPECT_EQ(kDecodableSession, 1537 EXPECT_EQ(kDecodableSession,
1538 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1538 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1539 1539
1540 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1540 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1541 1541
1542 // Should not be complete. 1542 // Should not be complete.
1543 EXPECT_TRUE(frame_out == NULL); 1543 EXPECT_TRUE(frame_out == nullptr);
1544 1544
1545 seq_num_ += 2; 1545 seq_num_ += 2;
1546 packet_->is_first_packet_in_frame = false; 1546 packet_->is_first_packet_in_frame = false;
1547 packet_->markerBit = true; 1547 packet_->markerBit = true;
1548 packet_->seqNum = seq_num_; 1548 packet_->seqNum = seq_num_;
1549 packet_->completeNALU = kNaluEnd; 1549 packet_->completeNALU = kNaluEnd;
1550 1550
1551 EXPECT_EQ(jitter_buffer_->InsertPacket(*packet_, &retransmitted), 1551 EXPECT_EQ(jitter_buffer_->InsertPacket(*packet_, &retransmitted),
1552 kDecodableSession); 1552 kDecodableSession);
1553 1553
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 packet_->markerBit = false; 1610 packet_->markerBit = false;
1611 packet_->seqNum = seq_num_; 1611 packet_->seqNum = seq_num_;
1612 packet_->timestamp = timestamp_; 1612 packet_->timestamp = timestamp_;
1613 1613
1614 bool retransmitted = false; 1614 bool retransmitted = false;
1615 EXPECT_EQ(kIncomplete, 1615 EXPECT_EQ(kIncomplete,
1616 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1616 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1617 1617
1618 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1618 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1619 1619
1620 EXPECT_TRUE(frame_out == NULL); 1620 EXPECT_TRUE(frame_out == nullptr);
1621 1621
1622 int loop = 0; 1622 int loop = 0;
1623 do { 1623 do {
1624 seq_num_++; 1624 seq_num_++;
1625 packet_->is_first_packet_in_frame = false; 1625 packet_->is_first_packet_in_frame = false;
1626 packet_->markerBit = false; 1626 packet_->markerBit = false;
1627 packet_->seqNum = seq_num_; 1627 packet_->seqNum = seq_num_;
1628 1628
1629 EXPECT_EQ(kIncomplete, 1629 EXPECT_EQ(kIncomplete,
1630 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1630 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1631 1631
1632 frame_out = DecodeCompleteFrame(); 1632 frame_out = DecodeCompleteFrame();
1633 1633
1634 EXPECT_TRUE(frame_out == NULL); 1634 EXPECT_TRUE(frame_out == nullptr);
1635 1635
1636 loop++; 1636 loop++;
1637 } while (loop < 98); 1637 } while (loop < 98);
1638 1638
1639 seq_num_++; 1639 seq_num_++;
1640 packet_->is_first_packet_in_frame = false; 1640 packet_->is_first_packet_in_frame = false;
1641 packet_->markerBit = true; 1641 packet_->markerBit = true;
1642 packet_->seqNum = seq_num_; 1642 packet_->seqNum = seq_num_;
1643 1643
1644 EXPECT_EQ(kCompleteSession, 1644 EXPECT_EQ(kCompleteSession,
(...skipping 14 matching lines...) Expand all
1659 packet_->is_first_packet_in_frame = false; 1659 packet_->is_first_packet_in_frame = false;
1660 packet_->markerBit = true; 1660 packet_->markerBit = true;
1661 packet_->seqNum = seq_num_; 1661 packet_->seqNum = seq_num_;
1662 1662
1663 bool retransmitted = false; 1663 bool retransmitted = false;
1664 EXPECT_EQ(kIncomplete, 1664 EXPECT_EQ(kIncomplete,
1665 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1665 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1666 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1666 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1667 1667
1668 // Should not be complete. 1668 // Should not be complete.
1669 EXPECT_TRUE(frame_out == NULL); 1669 EXPECT_TRUE(frame_out == nullptr);
1670 1670
1671 // Insert 98 frames. 1671 // Insert 98 frames.
1672 int loop = 0; 1672 int loop = 0;
1673 do { 1673 do {
1674 seq_num_--; 1674 seq_num_--;
1675 packet_->is_first_packet_in_frame = false; 1675 packet_->is_first_packet_in_frame = false;
1676 packet_->markerBit = false; 1676 packet_->markerBit = false;
1677 packet_->seqNum = seq_num_; 1677 packet_->seqNum = seq_num_;
1678 1678
1679 EXPECT_EQ(kIncomplete, 1679 EXPECT_EQ(kIncomplete,
1680 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1680 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1681 1681
1682 frame_out = DecodeCompleteFrame(); 1682 frame_out = DecodeCompleteFrame();
1683 1683
1684 EXPECT_TRUE(frame_out == NULL); 1684 EXPECT_TRUE(frame_out == nullptr);
1685 1685
1686 loop++; 1686 loop++;
1687 } while (loop < 98); 1687 } while (loop < 98);
1688 1688
1689 // Insert last packet. 1689 // Insert last packet.
1690 seq_num_--; 1690 seq_num_--;
1691 packet_->is_first_packet_in_frame = true; 1691 packet_->is_first_packet_in_frame = true;
1692 packet_->markerBit = false; 1692 packet_->markerBit = false;
1693 packet_->seqNum = seq_num_; 1693 packet_->seqNum = seq_num_;
1694 1694
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1785 packet_->is_first_packet_in_frame = true; 1785 packet_->is_first_packet_in_frame = true;
1786 packet_->markerBit = false; 1786 packet_->markerBit = false;
1787 packet_->seqNum = seq_num_; 1787 packet_->seqNum = seq_num_;
1788 packet_->timestamp = timestamp_; 1788 packet_->timestamp = timestamp_;
1789 1789
1790 bool retransmitted = false; 1790 bool retransmitted = false;
1791 EXPECT_EQ(kIncomplete, 1791 EXPECT_EQ(kIncomplete,
1792 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1792 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1793 1793
1794 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1794 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1795 EXPECT_TRUE(frame_out == NULL); 1795 EXPECT_TRUE(frame_out == nullptr);
1796 1796
1797 seq_num_++; 1797 seq_num_++;
1798 packet_->is_first_packet_in_frame = false; 1798 packet_->is_first_packet_in_frame = false;
1799 packet_->markerBit = true; 1799 packet_->markerBit = true;
1800 packet_->seqNum = seq_num_; 1800 packet_->seqNum = seq_num_;
1801 1801
1802 EXPECT_EQ(kCompleteSession, 1802 EXPECT_EQ(kCompleteSession,
1803 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1803 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1804 1804
1805 frame_out = DecodeCompleteFrame(); 1805 frame_out = DecodeCompleteFrame();
1806 CheckOutFrame(frame_out, 2 * size_, false); 1806 CheckOutFrame(frame_out, 2 * size_, false);
1807 jitter_buffer_->ReleaseFrame(frame_out); 1807 jitter_buffer_->ReleaseFrame(frame_out);
1808 1808
1809 seq_num_++; 1809 seq_num_++;
1810 timestamp_ += 33 * 90; 1810 timestamp_ += 33 * 90;
1811 packet_->frameType = kVideoFrameDelta; 1811 packet_->frameType = kVideoFrameDelta;
1812 packet_->is_first_packet_in_frame = true; 1812 packet_->is_first_packet_in_frame = true;
1813 packet_->markerBit = false; 1813 packet_->markerBit = false;
1814 packet_->seqNum = seq_num_; 1814 packet_->seqNum = seq_num_;
1815 packet_->timestamp = timestamp_; 1815 packet_->timestamp = timestamp_;
1816 1816
1817 EXPECT_EQ(kIncomplete, 1817 EXPECT_EQ(kIncomplete,
1818 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1818 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1819 1819
1820 frame_out = DecodeCompleteFrame(); 1820 frame_out = DecodeCompleteFrame();
1821 EXPECT_TRUE(frame_out == NULL); 1821 EXPECT_TRUE(frame_out == nullptr);
1822 1822
1823 seq_num_++; 1823 seq_num_++;
1824 packet_->is_first_packet_in_frame = false; 1824 packet_->is_first_packet_in_frame = false;
1825 packet_->markerBit = true; 1825 packet_->markerBit = true;
1826 packet_->seqNum = seq_num_; 1826 packet_->seqNum = seq_num_;
1827 1827
1828 EXPECT_EQ(kCompleteSession, 1828 EXPECT_EQ(kCompleteSession,
1829 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1829 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1830 1830
1831 frame_out = DecodeCompleteFrame(); 1831 frame_out = DecodeCompleteFrame();
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 1944
1945 // Max number of packets inserted. 1945 // Max number of packets inserted.
1946 // Insert one more packet. 1946 // Insert one more packet.
1947 seq_num_++; 1947 seq_num_++;
1948 packet_->is_first_packet_in_frame = false; 1948 packet_->is_first_packet_in_frame = false;
1949 packet_->markerBit = true; 1949 packet_->markerBit = true;
1950 packet_->seqNum = seq_num_; 1950 packet_->seqNum = seq_num_;
1951 1951
1952 // Insert the packet -> frame recycled. 1952 // Insert the packet -> frame recycled.
1953 EXPECT_EQ(kSizeError, jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 1953 EXPECT_EQ(kSizeError, jitter_buffer_->InsertPacket(*packet_, &retransmitted));
1954 EXPECT_TRUE(NULL == DecodeCompleteFrame()); 1954 EXPECT_TRUE(nullptr == DecodeCompleteFrame());
1955 } 1955 }
1956 1956
1957 TEST_F(TestBasicJitterBuffer, ExceedNumOfFrameWithSeqNumWrap) { 1957 TEST_F(TestBasicJitterBuffer, ExceedNumOfFrameWithSeqNumWrap) {
1958 // TEST fill JB with more than max number of frame (50 delta frames + 1958 // TEST fill JB with more than max number of frame (50 delta frames +
1959 // 51 key frames) with wrap in seq_num_ 1959 // 51 key frames) with wrap in seq_num_
1960 // 1960 //
1961 // -------------------------------------------------------------- 1961 // --------------------------------------------------------------
1962 // | 65485 | 65486 | 65487 | .... | 65535 | 0 | 1 | 2 | .....| 50 | 1962 // | 65485 | 65486 | 65487 | .... | 65535 | 0 | 1 | 2 | .....| 50 |
1963 // -------------------------------------------------------------- 1963 // --------------------------------------------------------------
1964 // |<-----------delta frames------------->|<------key frames----->| 1964 // |<-----------delta frames------------->|<------key frames----->|
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2026 seq_num_++; 2026 seq_num_++;
2027 packet_->is_first_packet_in_frame = false; 2027 packet_->is_first_packet_in_frame = false;
2028 packet_->markerBit = false; 2028 packet_->markerBit = false;
2029 packet_->seqNum = seq_num_; 2029 packet_->seqNum = seq_num_;
2030 packet_->timestamp = timestamp_; 2030 packet_->timestamp = timestamp_;
2031 packet_->frameType = kEmptyFrame; 2031 packet_->frameType = kEmptyFrame;
2032 2032
2033 EXPECT_EQ(kNoError, jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 2033 EXPECT_EQ(kNoError, jitter_buffer_->InsertPacket(*packet_, &retransmitted));
2034 VCMEncodedFrame* testFrame = DecodeIncompleteFrame(); 2034 VCMEncodedFrame* testFrame = DecodeIncompleteFrame();
2035 // Timestamp should never be the last TS inserted. 2035 // Timestamp should never be the last TS inserted.
2036 if (testFrame != NULL) { 2036 if (testFrame != nullptr) {
2037 EXPECT_TRUE(testFrame->TimeStamp() < timestamp_); 2037 EXPECT_TRUE(testFrame->TimeStamp() < timestamp_);
2038 jitter_buffer_->ReleaseFrame(testFrame); 2038 jitter_buffer_->ReleaseFrame(testFrame);
2039 } 2039 }
2040 } 2040 }
2041 } 2041 }
2042 2042
2043 TEST_F(TestBasicJitterBuffer, H264IncompleteNalu) { 2043 TEST_F(TestBasicJitterBuffer, H264IncompleteNalu) {
2044 jitter_buffer_->SetNackMode(kNoNack, -1, -1); 2044 jitter_buffer_->SetNackMode(kNoNack, -1, -1);
2045 jitter_buffer_->SetDecodeErrorMode(kWithErrors); 2045 jitter_buffer_->SetDecodeErrorMode(kWithErrors);
2046 ++seq_num_; 2046 ++seq_num_;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
2183 emptypacket.completeNALU = kNaluComplete; 2183 emptypacket.completeNALU = kNaluComplete;
2184 emptypacket.markerBit = true; 2184 emptypacket.markerBit = true;
2185 EXPECT_EQ(kCompleteSession, 2185 EXPECT_EQ(kCompleteSession,
2186 jitter_buffer_->InsertPacket(emptypacket, &retransmitted)); 2186 jitter_buffer_->InsertPacket(emptypacket, &retransmitted));
2187 // This packet should not be decoded because it is an incomplete NAL if it 2187 // This packet should not be decoded because it is an incomplete NAL if it
2188 // is the last. 2188 // is the last.
2189 2189
2190 // Will be sent to the decoder, as a packet belonging to a subsequent frame 2190 // Will be sent to the decoder, as a packet belonging to a subsequent frame
2191 // has arrived. 2191 // has arrived.
2192 frame_out = DecodeIncompleteFrame(); 2192 frame_out = DecodeIncompleteFrame();
2193 EXPECT_TRUE(frame_out != NULL); 2193 EXPECT_TRUE(frame_out != nullptr);
2194 jitter_buffer_->ReleaseFrame(frame_out); 2194 jitter_buffer_->ReleaseFrame(frame_out);
2195 2195
2196 // Test that a frame can include an empty packet. 2196 // Test that a frame can include an empty packet.
2197 seq_num_++; 2197 seq_num_++;
2198 timestamp_ += 33 * 90; 2198 timestamp_ += 33 * 90;
2199 2199
2200 packet_->seqNum = seq_num_; 2200 packet_->seqNum = seq_num_;
2201 packet_->timestamp = timestamp_; 2201 packet_->timestamp = timestamp_;
2202 packet_->frameType = kVideoFrameKey; 2202 packet_->frameType = kVideoFrameKey;
2203 packet_->is_first_packet_in_frame = true; 2203 packet_->is_first_packet_in_frame = true;
(...skipping 26 matching lines...) Expand all
2230 jitter_buffer_->SetDecodeErrorMode(kWithErrors); 2230 jitter_buffer_->SetDecodeErrorMode(kWithErrors);
2231 // Start with a complete key frame - insert and decode. 2231 // Start with a complete key frame - insert and decode.
2232 packet_->frameType = kVideoFrameKey; 2232 packet_->frameType = kVideoFrameKey;
2233 packet_->is_first_packet_in_frame = true; 2233 packet_->is_first_packet_in_frame = true;
2234 packet_->markerBit = true; 2234 packet_->markerBit = true;
2235 bool retransmitted = false; 2235 bool retransmitted = false;
2236 2236
2237 EXPECT_EQ(kCompleteSession, 2237 EXPECT_EQ(kCompleteSession,
2238 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 2238 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
2239 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 2239 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
2240 EXPECT_TRUE(frame_out != NULL); 2240 EXPECT_TRUE(frame_out != nullptr);
2241 jitter_buffer_->ReleaseFrame(frame_out); 2241 jitter_buffer_->ReleaseFrame(frame_out);
2242 2242
2243 packet_->seqNum += 2; 2243 packet_->seqNum += 2;
2244 packet_->timestamp += 33 * 90; 2244 packet_->timestamp += 33 * 90;
2245 packet_->frameType = kVideoFrameDelta; 2245 packet_->frameType = kVideoFrameDelta;
2246 packet_->is_first_packet_in_frame = false; 2246 packet_->is_first_packet_in_frame = false;
2247 packet_->markerBit = false; 2247 packet_->markerBit = false;
2248 2248
2249 EXPECT_EQ(kDecodableSession, 2249 EXPECT_EQ(kDecodableSession,
2250 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 2250 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
2251 2251
2252 frame_out = DecodeIncompleteFrame(); 2252 frame_out = DecodeIncompleteFrame();
2253 EXPECT_TRUE(frame_out == NULL); 2253 EXPECT_TRUE(frame_out == nullptr);
2254 2254
2255 packet_->seqNum += 2; 2255 packet_->seqNum += 2;
2256 packet_->timestamp += 33 * 90; 2256 packet_->timestamp += 33 * 90;
2257 packet_->is_first_packet_in_frame = true; 2257 packet_->is_first_packet_in_frame = true;
2258 2258
2259 EXPECT_EQ(kDecodableSession, 2259 EXPECT_EQ(kDecodableSession,
2260 jitter_buffer_->InsertPacket(*packet_, &retransmitted)); 2260 jitter_buffer_->InsertPacket(*packet_, &retransmitted));
2261 2261
2262 frame_out = DecodeIncompleteFrame(); 2262 frame_out = DecodeIncompleteFrame();
2263 CheckOutFrame(frame_out, packet_->sizeBytes, false); 2263 CheckOutFrame(frame_out, packet_->sizeBytes, false);
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
2503 // No list generated, and a key frame request is signaled. 2503 // No list generated, and a key frame request is signaled.
2504 EXPECT_EQ(0u, nack_list.size()); 2504 EXPECT_EQ(0u, nack_list.size());
2505 EXPECT_TRUE(request_key_frame); 2505 EXPECT_TRUE(request_key_frame);
2506 } 2506 }
2507 2507
2508 TEST_F(TestJitterBufferNack, NackListBuiltBeforeFirstDecode) { 2508 TEST_F(TestJitterBufferNack, NackListBuiltBeforeFirstDecode) {
2509 stream_generator_->Init(0, clock_->TimeInMilliseconds()); 2509 stream_generator_->Init(0, clock_->TimeInMilliseconds());
2510 InsertFrame(kVideoFrameKey); 2510 InsertFrame(kVideoFrameKey);
2511 stream_generator_->GenerateFrame(kVideoFrameDelta, 2, 0, 2511 stream_generator_->GenerateFrame(kVideoFrameDelta, 2, 0,
2512 clock_->TimeInMilliseconds()); 2512 clock_->TimeInMilliseconds());
2513 stream_generator_->NextPacket(NULL); // Drop packet. 2513 stream_generator_->NextPacket(nullptr); // Drop packet.
2514 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0)); 2514 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0));
2515 EXPECT_TRUE(DecodeCompleteFrame()); 2515 EXPECT_TRUE(DecodeCompleteFrame());
2516 bool extended = false; 2516 bool extended = false;
2517 std::vector<uint16_t> nack_list = jitter_buffer_->GetNackList(&extended); 2517 std::vector<uint16_t> nack_list = jitter_buffer_->GetNackList(&extended);
2518 EXPECT_EQ(1u, nack_list.size()); 2518 EXPECT_EQ(1u, nack_list.size());
2519 } 2519 }
2520 2520
2521 TEST_F(TestJitterBufferNack, VerifyRetransmittedFlag) { 2521 TEST_F(TestJitterBufferNack, VerifyRetransmittedFlag) {
2522 stream_generator_->Init(0, clock_->TimeInMilliseconds()); 2522 stream_generator_->Init(0, clock_->TimeInMilliseconds());
2523 stream_generator_->GenerateFrame(kVideoFrameKey, 3, 0, 2523 stream_generator_->GenerateFrame(kVideoFrameKey, 3, 0,
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2602 stream_generator_->GenerateFrame(kVideoFrameKey, 100, 0, 2602 stream_generator_->GenerateFrame(kVideoFrameKey, 100, 0,
2603 clock_->TimeInMilliseconds()); 2603 clock_->TimeInMilliseconds());
2604 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); 2604 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
2605 EXPECT_EQ(kDecodableSession, InsertPacketAndPop(0)); 2605 EXPECT_EQ(kDecodableSession, InsertPacketAndPop(0));
2606 // Verify that the frame is incomplete. 2606 // Verify that the frame is incomplete.
2607 EXPECT_FALSE(DecodeCompleteFrame()); 2607 EXPECT_FALSE(DecodeCompleteFrame());
2608 while (stream_generator_->PacketsRemaining() > 1) { 2608 while (stream_generator_->PacketsRemaining() > 1) {
2609 if (stream_generator_->NextSequenceNumber() % 10 != 0) { 2609 if (stream_generator_->NextSequenceNumber() % 10 != 0) {
2610 EXPECT_EQ(kDecodableSession, InsertPacketAndPop(0)); 2610 EXPECT_EQ(kDecodableSession, InsertPacketAndPop(0));
2611 } else { 2611 } else {
2612 stream_generator_->NextPacket(NULL); // Drop packet 2612 stream_generator_->NextPacket(nullptr); // Drop packet
2613 } 2613 }
2614 } 2614 }
2615 EXPECT_EQ(kDecodableSession, InsertPacketAndPop(0)); 2615 EXPECT_EQ(kDecodableSession, InsertPacketAndPop(0));
2616 EXPECT_EQ(0, stream_generator_->PacketsRemaining()); 2616 EXPECT_EQ(0, stream_generator_->PacketsRemaining());
2617 EXPECT_FALSE(DecodeCompleteFrame()); 2617 EXPECT_FALSE(DecodeCompleteFrame());
2618 EXPECT_FALSE(DecodeIncompleteFrame()); 2618 EXPECT_FALSE(DecodeIncompleteFrame());
2619 bool request_key_frame = false; 2619 bool request_key_frame = false;
2620 2620
2621 // Verify the NACK list. 2621 // Verify the NACK list.
2622 std::vector<uint16_t> nack_list = 2622 std::vector<uint16_t> nack_list =
(...skipping 14 matching lines...) Expand all
2637 EXPECT_FALSE(request_key_frame); 2637 EXPECT_FALSE(request_key_frame);
2638 EXPECT_TRUE(DecodeCompleteFrame()); 2638 EXPECT_TRUE(DecodeCompleteFrame());
2639 stream_generator_->GenerateFrame(kVideoFrameDelta, 100, 0, 2639 stream_generator_->GenerateFrame(kVideoFrameDelta, 100, 0,
2640 clock_->TimeInMilliseconds()); 2640 clock_->TimeInMilliseconds());
2641 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0)); 2641 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0));
2642 while (stream_generator_->PacketsRemaining() > 1) { 2642 while (stream_generator_->PacketsRemaining() > 1) {
2643 if (stream_generator_->NextSequenceNumber() % 10 != 0) { 2643 if (stream_generator_->NextSequenceNumber() % 10 != 0) {
2644 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0)); 2644 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0));
2645 EXPECT_FALSE(request_key_frame); 2645 EXPECT_FALSE(request_key_frame);
2646 } else { 2646 } else {
2647 stream_generator_->NextPacket(NULL); // Drop packet 2647 stream_generator_->NextPacket(nullptr); // Drop packet
2648 } 2648 }
2649 } 2649 }
2650 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0)); 2650 EXPECT_EQ(kIncomplete, InsertPacketAndPop(0));
2651 EXPECT_FALSE(request_key_frame); 2651 EXPECT_FALSE(request_key_frame);
2652 EXPECT_EQ(0, stream_generator_->PacketsRemaining()); 2652 EXPECT_EQ(0, stream_generator_->PacketsRemaining());
2653 EXPECT_FALSE(DecodeCompleteFrame()); 2653 EXPECT_FALSE(DecodeCompleteFrame());
2654 EXPECT_FALSE(DecodeCompleteFrame()); 2654 EXPECT_FALSE(DecodeCompleteFrame());
2655 bool extended = false; 2655 bool extended = false;
2656 std::vector<uint16_t> nack_list = jitter_buffer_->GetNackList(&extended); 2656 std::vector<uint16_t> nack_list = jitter_buffer_->GetNackList(&extended);
2657 // Verify the NACK list. 2657 // Verify the NACK list.
(...skipping 13 matching lines...) Expand all
2671 EXPECT_FALSE(request_key_frame); 2671 EXPECT_FALSE(request_key_frame);
2672 EXPECT_TRUE(DecodeCompleteFrame()); 2672 EXPECT_TRUE(DecodeCompleteFrame());
2673 stream_generator_->GenerateFrame(kVideoFrameDelta, 1, 0, 2673 stream_generator_->GenerateFrame(kVideoFrameDelta, 1, 0,
2674 clock_->TimeInMilliseconds()); 2674 clock_->TimeInMilliseconds());
2675 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); 2675 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
2676 for (int i = 0; i < 5; ++i) { 2676 for (int i = 0; i < 5; ++i) {
2677 if (stream_generator_->NextSequenceNumber() != 65535) { 2677 if (stream_generator_->NextSequenceNumber() != 65535) {
2678 EXPECT_EQ(kCompleteSession, InsertPacketAndPop(0)); 2678 EXPECT_EQ(kCompleteSession, InsertPacketAndPop(0));
2679 EXPECT_FALSE(request_key_frame); 2679 EXPECT_FALSE(request_key_frame);
2680 } else { 2680 } else {
2681 stream_generator_->NextPacket(NULL); // Drop packet 2681 stream_generator_->NextPacket(nullptr); // Drop packet
2682 } 2682 }
2683 stream_generator_->GenerateFrame(kVideoFrameDelta, 1, 0, 2683 stream_generator_->GenerateFrame(kVideoFrameDelta, 1, 0,
2684 clock_->TimeInMilliseconds()); 2684 clock_->TimeInMilliseconds());
2685 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); 2685 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
2686 } 2686 }
2687 EXPECT_EQ(kCompleteSession, InsertPacketAndPop(0)); 2687 EXPECT_EQ(kCompleteSession, InsertPacketAndPop(0));
2688 EXPECT_FALSE(request_key_frame); 2688 EXPECT_FALSE(request_key_frame);
2689 bool extended = false; 2689 bool extended = false;
2690 std::vector<uint16_t> nack_list = jitter_buffer_->GetNackList(&extended); 2690 std::vector<uint16_t> nack_list = jitter_buffer_->GetNackList(&extended);
2691 // Verify the NACK list. 2691 // Verify the NACK list.
(...skipping 20 matching lines...) Expand all
2712 EXPECT_EQ(0u, nack_list.size()); 2712 EXPECT_EQ(0u, nack_list.size());
2713 2713
2714 // Stream should be decodable from this point. 2714 // Stream should be decodable from this point.
2715 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); 2715 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
2716 InsertFrame(kVideoFrameDelta); 2716 InsertFrame(kVideoFrameDelta);
2717 EXPECT_TRUE(DecodeCompleteFrame()); 2717 EXPECT_TRUE(DecodeCompleteFrame());
2718 nack_list = jitter_buffer_->GetNackList(&extended); 2718 nack_list = jitter_buffer_->GetNackList(&extended);
2719 EXPECT_EQ(0u, nack_list.size()); 2719 EXPECT_EQ(0u, nack_list.size());
2720 } 2720 }
2721 } // namespace webrtc 2721 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698