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

Side by Side Diff: webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc

Issue 1316523002: Convert channel counts to size_t. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Fix compile Created 4 years, 11 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 "dummy name", kPayloadType, kSampleRateHz)); 459 "dummy name", kPayloadType, kSampleRateHz));
460 460
461 // Insert one packet. 461 // Insert one packet.
462 EXPECT_EQ(NetEq::kOK, 462 EXPECT_EQ(NetEq::kOK,
463 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 463 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
464 464
465 // Pull audio once. 465 // Pull audio once.
466 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 466 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
467 int16_t output[kMaxOutputSize]; 467 int16_t output[kMaxOutputSize];
468 size_t samples_per_channel; 468 size_t samples_per_channel;
469 int num_channels; 469 size_t num_channels;
470 NetEqOutputType type; 470 NetEqOutputType type;
471 EXPECT_EQ( 471 EXPECT_EQ(
472 NetEq::kOK, 472 NetEq::kOK,
473 neteq_->GetAudio( 473 neteq_->GetAudio(
474 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type)); 474 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type));
475 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 475 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
476 EXPECT_EQ(1, num_channels); 476 EXPECT_EQ(1u, num_channels);
477 EXPECT_EQ(kOutputNormal, type); 477 EXPECT_EQ(kOutputNormal, type);
478 478
479 // Start with a simple check that the fake decoder is behaving as expected. 479 // Start with a simple check that the fake decoder is behaving as expected.
480 EXPECT_EQ(kPayloadLengthSamples, 480 EXPECT_EQ(kPayloadLengthSamples,
481 static_cast<size_t>(decoder_.next_value() - 1)); 481 static_cast<size_t>(decoder_.next_value() - 1));
482 482
483 // The value of the last of the output samples is the same as the number of 483 // The value of the last of the output samples is the same as the number of
484 // samples played from the decoded packet. Thus, this number + the RTP 484 // samples played from the decoded packet. Thus, this number + the RTP
485 // timestamp should match the playout timestamp. 485 // timestamp should match the playout timestamp.
486 uint32_t timestamp = 0; 486 uint32_t timestamp = 0;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 "dummy name", kPayloadType, kSampleRateHz)); 538 "dummy name", kPayloadType, kSampleRateHz));
539 539
540 // Insert one packet. 540 // Insert one packet.
541 EXPECT_EQ(NetEq::kOK, 541 EXPECT_EQ(NetEq::kOK,
542 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 542 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
543 543
544 // Pull audio once. 544 // Pull audio once.
545 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 545 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
546 int16_t output[kMaxOutputSize]; 546 int16_t output[kMaxOutputSize];
547 size_t samples_per_channel; 547 size_t samples_per_channel;
548 int num_channels; 548 size_t num_channels;
549 NetEqOutputType type; 549 NetEqOutputType type;
550 EXPECT_EQ( 550 EXPECT_EQ(
551 NetEq::kOK, 551 NetEq::kOK,
552 neteq_->GetAudio( 552 neteq_->GetAudio(
553 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type)); 553 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type));
554 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 554 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
555 EXPECT_EQ(1, num_channels); 555 EXPECT_EQ(1u, num_channels);
556 EXPECT_EQ(kOutputNormal, type); 556 EXPECT_EQ(kOutputNormal, type);
557 557
558 // Insert two more packets. The first one is out of order, and is already too 558 // Insert two more packets. The first one is out of order, and is already too
559 // old, the second one is the expected next packet. 559 // old, the second one is the expected next packet.
560 rtp_header.header.sequenceNumber -= 1; 560 rtp_header.header.sequenceNumber -= 1;
561 rtp_header.header.timestamp -= kPayloadLengthSamples; 561 rtp_header.header.timestamp -= kPayloadLengthSamples;
562 payload[0] = 1; 562 payload[0] = 1;
563 EXPECT_EQ(NetEq::kOK, 563 EXPECT_EQ(NetEq::kOK,
564 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 564 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
565 rtp_header.header.sequenceNumber += 2; 565 rtp_header.header.sequenceNumber += 2;
(...skipping 10 matching lines...) Expand all
576 dummy_output + kPayloadLengthSamples), 576 dummy_output + kPayloadLengthSamples),
577 SetArgPointee<4>(AudioDecoder::kSpeech), 577 SetArgPointee<4>(AudioDecoder::kSpeech),
578 Return(kPayloadLengthSamples))); 578 Return(kPayloadLengthSamples)));
579 579
580 // Pull audio once. 580 // Pull audio once.
581 EXPECT_EQ( 581 EXPECT_EQ(
582 NetEq::kOK, 582 NetEq::kOK,
583 neteq_->GetAudio( 583 neteq_->GetAudio(
584 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type)); 584 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type));
585 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 585 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
586 EXPECT_EQ(1, num_channels); 586 EXPECT_EQ(1u, num_channels);
587 EXPECT_EQ(kOutputNormal, type); 587 EXPECT_EQ(kOutputNormal, type);
588 588
589 // Now check the packet buffer, and make sure it is empty, since the 589 // Now check the packet buffer, and make sure it is empty, since the
590 // out-of-order packet should have been discarded. 590 // out-of-order packet should have been discarded.
591 EXPECT_TRUE(packet_buffer_->Empty()); 591 EXPECT_TRUE(packet_buffer_->Empty());
592 592
593 EXPECT_CALL(mock_decoder, Die()); 593 EXPECT_CALL(mock_decoder, Die());
594 } 594 }
595 595
596 // This test verifies that NetEq can handle the situation where the first 596 // This test verifies that NetEq can handle the situation where the first
(...skipping 18 matching lines...) Expand all
615 // Insert one packet. Note that we have not registered any payload type, so 615 // Insert one packet. Note that we have not registered any payload type, so
616 // this packet will be rejected. 616 // this packet will be rejected.
617 EXPECT_EQ(NetEq::kFail, 617 EXPECT_EQ(NetEq::kFail,
618 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 618 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
619 EXPECT_EQ(NetEq::kUnknownRtpPayloadType, neteq_->LastError()); 619 EXPECT_EQ(NetEq::kUnknownRtpPayloadType, neteq_->LastError());
620 620
621 // Pull audio once. 621 // Pull audio once.
622 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 622 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
623 int16_t output[kMaxOutputSize]; 623 int16_t output[kMaxOutputSize];
624 size_t samples_per_channel; 624 size_t samples_per_channel;
625 int num_channels; 625 size_t num_channels;
626 NetEqOutputType type; 626 NetEqOutputType type;
627 EXPECT_EQ(NetEq::kOK, 627 EXPECT_EQ(NetEq::kOK,
628 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 628 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
629 &num_channels, &type)); 629 &num_channels, &type));
630 ASSERT_LE(samples_per_channel, kMaxOutputSize); 630 ASSERT_LE(samples_per_channel, kMaxOutputSize);
631 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 631 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
632 EXPECT_EQ(1, num_channels); 632 EXPECT_EQ(1u, num_channels);
633 EXPECT_EQ(kOutputPLC, type); 633 EXPECT_EQ(kOutputPLC, type);
634 634
635 // Register the payload type. 635 // Register the payload type.
636 EXPECT_EQ(NetEq::kOK, neteq_->RegisterPayloadType( 636 EXPECT_EQ(NetEq::kOK, neteq_->RegisterPayloadType(
637 NetEqDecoder::kDecoderPCM16B, "", kPayloadType)); 637 NetEqDecoder::kDecoderPCM16B, "", kPayloadType));
638 638
639 // Insert 10 packets. 639 // Insert 10 packets.
640 for (size_t i = 0; i < 10; ++i) { 640 for (size_t i = 0; i < 10; ++i) {
641 rtp_header.header.sequenceNumber++; 641 rtp_header.header.sequenceNumber++;
642 rtp_header.header.timestamp += kPayloadLengthSamples; 642 rtp_header.header.timestamp += kPayloadLengthSamples;
643 EXPECT_EQ(NetEq::kOK, 643 EXPECT_EQ(NetEq::kOK,
644 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 644 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
645 EXPECT_EQ(i + 1, packet_buffer_->NumPacketsInBuffer()); 645 EXPECT_EQ(i + 1, packet_buffer_->NumPacketsInBuffer());
646 } 646 }
647 647
648 // Pull audio repeatedly and make sure we get normal output, that is not PLC. 648 // Pull audio repeatedly and make sure we get normal output, that is not PLC.
649 for (size_t i = 0; i < 3; ++i) { 649 for (size_t i = 0; i < 3; ++i) {
650 EXPECT_EQ(NetEq::kOK, 650 EXPECT_EQ(NetEq::kOK,
651 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 651 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
652 &num_channels, &type)); 652 &num_channels, &type));
653 ASSERT_LE(samples_per_channel, kMaxOutputSize); 653 ASSERT_LE(samples_per_channel, kMaxOutputSize);
654 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 654 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
655 EXPECT_EQ(1, num_channels); 655 EXPECT_EQ(1u, num_channels);
656 EXPECT_EQ(kOutputNormal, type) 656 EXPECT_EQ(kOutputNormal, type)
657 << "NetEq did not decode the packets as expected."; 657 << "NetEq did not decode the packets as expected.";
658 } 658 }
659 } 659 }
660 660
661 // This test verifies that NetEq can handle comfort noise and enters/quits codec 661 // This test verifies that NetEq can handle comfort noise and enters/quits codec
662 // internal CNG mode properly. 662 // internal CNG mode properly.
663 TEST_F(NetEqImplTest, CodecInternalCng) { 663 TEST_F(NetEqImplTest, CodecInternalCng) {
664 UseNoMocks(); 664 UseNoMocks();
665 CreateInstance(); 665 CreateInstance();
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 // Insert second packet (decoder will return CNG). 727 // Insert second packet (decoder will return CNG).
728 payload[0] = 1; 728 payload[0] = 1;
729 rtp_header.header.sequenceNumber++; 729 rtp_header.header.sequenceNumber++;
730 rtp_header.header.timestamp += kPayloadLengthSamples; 730 rtp_header.header.timestamp += kPayloadLengthSamples;
731 EXPECT_EQ(NetEq::kOK, 731 EXPECT_EQ(NetEq::kOK,
732 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 732 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
733 733
734 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateKhz); 734 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateKhz);
735 int16_t output[kMaxOutputSize]; 735 int16_t output[kMaxOutputSize];
736 size_t samples_per_channel; 736 size_t samples_per_channel;
737 int num_channels; 737 size_t num_channels;
738 uint32_t timestamp; 738 uint32_t timestamp;
739 uint32_t last_timestamp; 739 uint32_t last_timestamp;
740 NetEqOutputType type; 740 NetEqOutputType type;
741 NetEqOutputType expected_type[8] = { 741 NetEqOutputType expected_type[8] = {
742 kOutputNormal, kOutputNormal, 742 kOutputNormal, kOutputNormal,
743 kOutputCNG, kOutputCNG, 743 kOutputCNG, kOutputCNG,
744 kOutputCNG, kOutputCNG, 744 kOutputCNG, kOutputCNG,
745 kOutputNormal, kOutputNormal 745 kOutputNormal, kOutputNormal
746 }; 746 };
747 int expected_timestamp_increment[8] = { 747 int expected_timestamp_increment[8] = {
748 -1, // will not be used. 748 -1, // will not be used.
749 10 * kSampleRateKhz, 749 10 * kSampleRateKhz,
750 0, 0, // timestamp does not increase during CNG mode. 750 0, 0, // timestamp does not increase during CNG mode.
751 0, 0, 751 0, 0,
752 50 * kSampleRateKhz, 10 * kSampleRateKhz 752 50 * kSampleRateKhz, 10 * kSampleRateKhz
753 }; 753 };
754 754
755 EXPECT_EQ(NetEq::kOK, 755 EXPECT_EQ(NetEq::kOK,
756 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 756 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
757 &num_channels, &type)); 757 &num_channels, &type));
758 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&last_timestamp)); 758 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&last_timestamp));
759 759
760 for (size_t i = 1; i < 6; ++i) { 760 for (size_t i = 1; i < 6; ++i) {
761 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 761 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
762 EXPECT_EQ(1, num_channels); 762 EXPECT_EQ(1u, num_channels);
763 EXPECT_EQ(expected_type[i - 1], type); 763 EXPECT_EQ(expected_type[i - 1], type);
764 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&timestamp)); 764 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&timestamp));
765 EXPECT_EQ(NetEq::kOK, 765 EXPECT_EQ(NetEq::kOK,
766 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 766 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
767 &num_channels, &type)); 767 &num_channels, &type));
768 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&timestamp)); 768 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&timestamp));
769 EXPECT_EQ(timestamp, last_timestamp + expected_timestamp_increment[i]); 769 EXPECT_EQ(timestamp, last_timestamp + expected_timestamp_increment[i]);
770 last_timestamp = timestamp; 770 last_timestamp = timestamp;
771 } 771 }
772 772
773 // Insert third packet, which leaves a gap from last packet. 773 // Insert third packet, which leaves a gap from last packet.
774 payload[0] = 2; 774 payload[0] = 2;
775 rtp_header.header.sequenceNumber += 2; 775 rtp_header.header.sequenceNumber += 2;
776 rtp_header.header.timestamp += 2 * kPayloadLengthSamples; 776 rtp_header.header.timestamp += 2 * kPayloadLengthSamples;
777 EXPECT_EQ(NetEq::kOK, 777 EXPECT_EQ(NetEq::kOK,
778 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 778 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
779 779
780 for (size_t i = 6; i < 8; ++i) { 780 for (size_t i = 6; i < 8; ++i) {
781 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 781 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
782 EXPECT_EQ(1, num_channels); 782 EXPECT_EQ(1u, num_channels);
783 EXPECT_EQ(expected_type[i - 1], type); 783 EXPECT_EQ(expected_type[i - 1], type);
784 EXPECT_EQ(NetEq::kOK, 784 EXPECT_EQ(NetEq::kOK,
785 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 785 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
786 &num_channels, &type)); 786 &num_channels, &type));
787 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&timestamp)); 787 EXPECT_TRUE(neteq_->GetPlayoutTimestamp(&timestamp));
788 EXPECT_EQ(timestamp, last_timestamp + expected_timestamp_increment[i]); 788 EXPECT_EQ(timestamp, last_timestamp + expected_timestamp_increment[i]);
789 last_timestamp = timestamp; 789 last_timestamp = timestamp;
790 } 790 }
791 791
792 // Now check the packet buffer, and make sure it is empty. 792 // Now check the packet buffer, and make sure it is empty.
793 EXPECT_TRUE(packet_buffer_->Empty()); 793 EXPECT_TRUE(packet_buffer_->Empty());
794 794
795 EXPECT_CALL(mock_decoder, Die()); 795 EXPECT_CALL(mock_decoder, Die());
796 } 796 }
797 797
798 TEST_F(NetEqImplTest, UnsupportedDecoder) { 798 TEST_F(NetEqImplTest, UnsupportedDecoder) {
799 UseNoMocks(); 799 UseNoMocks();
800 CreateInstance(); 800 CreateInstance();
801 static const size_t kNetEqMaxFrameSize = 2880; // 60 ms @ 48 kHz. 801 static const size_t kNetEqMaxFrameSize = 2880; // 60 ms @ 48 kHz.
802 static const int kChannels = 2; 802 static const size_t kChannels = 2;
803 803
804 const uint8_t kPayloadType = 17; // Just an arbitrary number. 804 const uint8_t kPayloadType = 17; // Just an arbitrary number.
805 const uint32_t kReceiveTime = 17; // Value doesn't matter for this test. 805 const uint32_t kReceiveTime = 17; // Value doesn't matter for this test.
806 const int kSampleRateHz = 8000; 806 const int kSampleRateHz = 8000;
807 807
808 const size_t kPayloadLengthSamples = 808 const size_t kPayloadLengthSamples =
809 static_cast<size_t>(10 * kSampleRateHz / 1000); // 10 ms. 809 static_cast<size_t>(10 * kSampleRateHz / 1000); // 10 ms.
810 const size_t kPayloadLengthBytes = 1; 810 const size_t kPayloadLengthBytes = 1;
811 uint8_t payload[kPayloadLengthBytes]= {0}; 811 uint8_t payload[kPayloadLengthBytes]= {0};
812 int16_t dummy_output[kPayloadLengthSamples * kChannels] = {0}; 812 int16_t dummy_output[kPayloadLengthSamples * kChannels] = {0};
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 864
865 // Insert another packet. 865 // Insert another packet.
866 payload[0] = kSecondPayloadValue; // This will make Decode() successful. 866 payload[0] = kSecondPayloadValue; // This will make Decode() successful.
867 rtp_header.header.sequenceNumber++; 867 rtp_header.header.sequenceNumber++;
868 // The second timestamp needs to be at least 30 ms after the first to make 868 // The second timestamp needs to be at least 30 ms after the first to make
869 // the second packet get decoded. 869 // the second packet get decoded.
870 rtp_header.header.timestamp += 3 * kPayloadLengthSamples; 870 rtp_header.header.timestamp += 3 * kPayloadLengthSamples;
871 EXPECT_EQ(NetEq::kOK, 871 EXPECT_EQ(NetEq::kOK,
872 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 872 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
873 873
874 const size_t kMaxOutputSize = 874 const size_t kMaxOutputSize = 10 * kSampleRateHz / 1000 * kChannels;
875 static_cast<size_t>(10 * kSampleRateHz / 1000 * kChannels);
876 int16_t output[kMaxOutputSize]; 875 int16_t output[kMaxOutputSize];
877 size_t samples_per_channel; 876 size_t samples_per_channel;
878 int num_channels; 877 size_t num_channels;
879 NetEqOutputType type; 878 NetEqOutputType type;
880 879
881 EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(kMaxOutputSize, output, 880 EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(kMaxOutputSize, output,
882 &samples_per_channel, &num_channels, 881 &samples_per_channel, &num_channels,
883 &type)); 882 &type));
884 EXPECT_EQ(NetEq::kOtherDecoderError, neteq_->LastError()); 883 EXPECT_EQ(NetEq::kOtherDecoderError, neteq_->LastError());
885 EXPECT_EQ(kMaxOutputSize, samples_per_channel * kChannels); 884 EXPECT_EQ(kMaxOutputSize, samples_per_channel * kChannels);
886 EXPECT_EQ(kChannels, num_channels); 885 EXPECT_EQ(kChannels, num_channels);
887 886
888 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(kMaxOutputSize, output, 887 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(kMaxOutputSize, output,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 // Insert one packet. 973 // Insert one packet.
975 EXPECT_EQ(NetEq::kOK, 974 EXPECT_EQ(NetEq::kOK,
976 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 975 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
977 976
978 EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength()); 977 EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength());
979 978
980 // Pull audio once. 979 // Pull audio once.
981 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 980 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
982 int16_t output[kMaxOutputSize]; 981 int16_t output[kMaxOutputSize];
983 size_t samples_per_channel; 982 size_t samples_per_channel;
984 int num_channels; 983 size_t num_channels;
985 NetEqOutputType type; 984 NetEqOutputType type;
986 EXPECT_EQ(NetEq::kOK, 985 EXPECT_EQ(NetEq::kOK,
987 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 986 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
988 &num_channels, &type)); 987 &num_channels, &type));
989 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 988 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
990 EXPECT_EQ(1, num_channels); 989 EXPECT_EQ(1u, num_channels);
991 EXPECT_EQ(kOutputNormal, type); 990 EXPECT_EQ(kOutputNormal, type);
992 991
993 EXPECT_CALL(mock_decoder, Die()); 992 EXPECT_CALL(mock_decoder, Die());
994 } 993 }
995 994
996 // This test checks the behavior of NetEq when audio decoder fails. 995 // This test checks the behavior of NetEq when audio decoder fails.
997 TEST_F(NetEqImplTest, DecodingError) { 996 TEST_F(NetEqImplTest, DecodingError) {
998 UseNoMocks(); 997 UseNoMocks();
999 CreateInstance(); 998 CreateInstance();
1000 999
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 rtp_header.header.sequenceNumber += 1; 1070 rtp_header.header.sequenceNumber += 1;
1072 rtp_header.header.timestamp += kFrameLengthSamples; 1071 rtp_header.header.timestamp += kFrameLengthSamples;
1073 EXPECT_EQ(NetEq::kOK, 1072 EXPECT_EQ(NetEq::kOK,
1074 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 1073 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
1075 } 1074 }
1076 1075
1077 // Pull audio. 1076 // Pull audio.
1078 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 1077 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
1079 int16_t output[kMaxOutputSize]; 1078 int16_t output[kMaxOutputSize];
1080 size_t samples_per_channel; 1079 size_t samples_per_channel;
1081 int num_channels; 1080 size_t num_channels;
1082 NetEqOutputType type; 1081 NetEqOutputType type;
1083 EXPECT_EQ(NetEq::kOK, 1082 EXPECT_EQ(NetEq::kOK,
1084 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1083 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1085 &num_channels, &type)); 1084 &num_channels, &type));
1086 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1085 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1087 EXPECT_EQ(1, num_channels); 1086 EXPECT_EQ(1u, num_channels);
1088 EXPECT_EQ(kOutputNormal, type); 1087 EXPECT_EQ(kOutputNormal, type);
1089 1088
1090 // Pull audio again. Decoder fails. 1089 // Pull audio again. Decoder fails.
1091 EXPECT_EQ(NetEq::kFail, 1090 EXPECT_EQ(NetEq::kFail,
1092 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1091 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1093 &num_channels, &type)); 1092 &num_channels, &type));
1094 EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); 1093 EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError());
1095 EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError()); 1094 EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError());
1096 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1095 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1097 EXPECT_EQ(1, num_channels); 1096 EXPECT_EQ(1u, num_channels);
1098 // TODO(minyue): should NetEq better give kOutputPLC, since it is actually an 1097 // TODO(minyue): should NetEq better give kOutputPLC, since it is actually an
1099 // expansion. 1098 // expansion.
1100 EXPECT_EQ(kOutputNormal, type); 1099 EXPECT_EQ(kOutputNormal, type);
1101 1100
1102 // Pull audio again, should continue an expansion. 1101 // Pull audio again, should continue an expansion.
1103 EXPECT_EQ(NetEq::kOK, 1102 EXPECT_EQ(NetEq::kOK,
1104 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1103 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1105 &num_channels, &type)); 1104 &num_channels, &type));
1106 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1105 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1107 EXPECT_EQ(1, num_channels); 1106 EXPECT_EQ(1u, num_channels);
1108 EXPECT_EQ(kOutputPLC, type); 1107 EXPECT_EQ(kOutputPLC, type);
1109 1108
1110 // Pull audio again, should behave normal. 1109 // Pull audio again, should behave normal.
1111 EXPECT_EQ(NetEq::kOK, 1110 EXPECT_EQ(NetEq::kOK,
1112 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1111 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1113 &num_channels, &type)); 1112 &num_channels, &type));
1114 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1113 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1115 EXPECT_EQ(1, num_channels); 1114 EXPECT_EQ(1u, num_channels);
1116 EXPECT_EQ(kOutputNormal, type); 1115 EXPECT_EQ(kOutputNormal, type);
1117 1116
1118 EXPECT_CALL(mock_decoder, Die()); 1117 EXPECT_CALL(mock_decoder, Die());
1119 } 1118 }
1120 1119
1121 // This test checks the behavior of NetEq when audio decoder fails during CNG. 1120 // This test checks the behavior of NetEq when audio decoder fails during CNG.
1122 TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { 1121 TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) {
1123 UseNoMocks(); 1122 UseNoMocks();
1124 CreateInstance(); 1123 CreateInstance();
1125 1124
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 rtp_header.header.sequenceNumber += 1; 1191 rtp_header.header.sequenceNumber += 1;
1193 rtp_header.header.timestamp += kFrameLengthSamples; 1192 rtp_header.header.timestamp += kFrameLengthSamples;
1194 EXPECT_EQ(NetEq::kOK, 1193 EXPECT_EQ(NetEq::kOK,
1195 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 1194 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
1196 } 1195 }
1197 1196
1198 // Pull audio. 1197 // Pull audio.
1199 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 1198 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
1200 int16_t output[kMaxOutputSize]; 1199 int16_t output[kMaxOutputSize];
1201 size_t samples_per_channel; 1200 size_t samples_per_channel;
1202 int num_channels; 1201 size_t num_channels;
1203 NetEqOutputType type; 1202 NetEqOutputType type;
1204 EXPECT_EQ(NetEq::kOK, 1203 EXPECT_EQ(NetEq::kOK,
1205 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1204 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1206 &num_channels, &type)); 1205 &num_channels, &type));
1207 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1206 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1208 EXPECT_EQ(1, num_channels); 1207 EXPECT_EQ(1u, num_channels);
1209 EXPECT_EQ(kOutputCNG, type); 1208 EXPECT_EQ(kOutputCNG, type);
1210 1209
1211 // Pull audio again. Decoder fails. 1210 // Pull audio again. Decoder fails.
1212 EXPECT_EQ(NetEq::kFail, 1211 EXPECT_EQ(NetEq::kFail,
1213 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1212 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1214 &num_channels, &type)); 1213 &num_channels, &type));
1215 EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); 1214 EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError());
1216 EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError()); 1215 EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError());
1217 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1216 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1218 EXPECT_EQ(1, num_channels); 1217 EXPECT_EQ(1u, num_channels);
1219 // TODO(minyue): should NetEq better give kOutputPLC, since it is actually an 1218 // TODO(minyue): should NetEq better give kOutputPLC, since it is actually an
1220 // expansion. 1219 // expansion.
1221 EXPECT_EQ(kOutputCNG, type); 1220 EXPECT_EQ(kOutputCNG, type);
1222 1221
1223 // Pull audio again, should resume codec CNG. 1222 // Pull audio again, should resume codec CNG.
1224 EXPECT_EQ(NetEq::kOK, 1223 EXPECT_EQ(NetEq::kOK,
1225 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel, 1224 neteq_->GetAudio(kMaxOutputSize, output, &samples_per_channel,
1226 &num_channels, &type)); 1225 &num_channels, &type));
1227 EXPECT_EQ(kMaxOutputSize, samples_per_channel); 1226 EXPECT_EQ(kMaxOutputSize, samples_per_channel);
1228 EXPECT_EQ(1, num_channels); 1227 EXPECT_EQ(1u, num_channels);
1229 EXPECT_EQ(kOutputCNG, type); 1228 EXPECT_EQ(kOutputCNG, type);
1230 1229
1231 EXPECT_CALL(mock_decoder, Die()); 1230 EXPECT_CALL(mock_decoder, Die());
1232 } 1231 }
1233 1232
1234 // Tests that the return value from last_output_sample_rate_hz() is equal to the 1233 // Tests that the return value from last_output_sample_rate_hz() is equal to the
1235 // configured inital sample rate. 1234 // configured inital sample rate.
1236 TEST_F(NetEqImplTest, InitialLastOutputSampleRate) { 1235 TEST_F(NetEqImplTest, InitialLastOutputSampleRate) {
1237 UseNoMocks(); 1236 UseNoMocks();
1238 config_.sample_rate_hz = 48000; 1237 config_.sample_rate_hz = 48000;
1239 CreateInstance(); 1238 CreateInstance();
1240 EXPECT_EQ(48000, neteq_->last_output_sample_rate_hz()); 1239 EXPECT_EQ(48000, neteq_->last_output_sample_rate_hz());
1241 } 1240 }
1242 1241
1243 }// namespace webrtc 1242 }// namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq_impl.cc ('k') | webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698