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

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

Issue 2027993002: NetEq: Ask AudioDecoder for sample rate instead of passing it as an argument (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@samprate1
Patch Set: Created 4 years, 6 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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 size_t Channels() const override { return 1; } 439 size_t Channels() const override { return 1; }
440 440
441 uint16_t next_value() const { return next_value_; } 441 uint16_t next_value() const { return next_value_; }
442 442
443 private: 443 private:
444 int16_t next_value_; 444 int16_t next_value_;
445 } decoder_; 445 } decoder_;
446 446
447 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 447 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
448 &decoder_, NetEqDecoder::kDecoderPCM16B, 448 &decoder_, NetEqDecoder::kDecoderPCM16B,
449 "dummy name", kPayloadType, kSampleRateHz)); 449 "dummy name", kPayloadType));
450 450
451 // Insert one packet. 451 // Insert one packet.
452 EXPECT_EQ(NetEq::kOK, 452 EXPECT_EQ(NetEq::kOK,
453 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 453 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
454 454
455 // Pull audio once. 455 // Pull audio once.
456 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 456 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
457 AudioFrame output; 457 AudioFrame output;
458 bool muted; 458 bool muted;
459 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); 459 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 uint8_t payload[kPayloadLengthBytes] = {0}; 502 uint8_t payload[kPayloadLengthBytes] = {0};
503 WebRtcRTPHeader rtp_header; 503 WebRtcRTPHeader rtp_header;
504 rtp_header.header.payloadType = kPayloadType; 504 rtp_header.header.payloadType = kPayloadType;
505 rtp_header.header.sequenceNumber = 0x1234; 505 rtp_header.header.sequenceNumber = 0x1234;
506 rtp_header.header.timestamp = 0x12345678; 506 rtp_header.header.timestamp = 0x12345678;
507 rtp_header.header.ssrc = 0x87654321; 507 rtp_header.header.ssrc = 0x87654321;
508 508
509 // Create a mock decoder object. 509 // Create a mock decoder object.
510 MockAudioDecoder mock_decoder; 510 MockAudioDecoder mock_decoder;
511 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 511 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
512 EXPECT_CALL(mock_decoder, SampleRateHz())
513 .WillRepeatedly(Return(kSampleRateHz));
512 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 514 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
513 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 515 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
514 .WillRepeatedly(Return(0)); 516 .WillRepeatedly(Return(0));
515 EXPECT_CALL(mock_decoder, PacketDuration(_, kPayloadLengthBytes)) 517 EXPECT_CALL(mock_decoder, PacketDuration(_, kPayloadLengthBytes))
516 .WillRepeatedly(Return(kPayloadLengthSamples)); 518 .WillRepeatedly(Return(kPayloadLengthSamples));
517 int16_t dummy_output[kPayloadLengthSamples] = {0}; 519 int16_t dummy_output[kPayloadLengthSamples] = {0};
518 // The below expectation will make the mock decoder write 520 // The below expectation will make the mock decoder write
519 // |kPayloadLengthSamples| zeros to the output array, and mark it as speech. 521 // |kPayloadLengthSamples| zeros to the output array, and mark it as speech.
520 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(0), kPayloadLengthBytes, 522 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(0), kPayloadLengthBytes,
521 kSampleRateHz, _, _)) 523 kSampleRateHz, _, _))
522 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output, 524 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
523 dummy_output + kPayloadLengthSamples), 525 dummy_output + kPayloadLengthSamples),
524 SetArgPointee<4>(AudioDecoder::kSpeech), 526 SetArgPointee<4>(AudioDecoder::kSpeech),
525 Return(kPayloadLengthSamples))); 527 Return(kPayloadLengthSamples)));
526 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 528 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
527 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 529 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
528 "dummy name", kPayloadType, kSampleRateHz)); 530 "dummy name", kPayloadType));
529 531
530 // Insert one packet. 532 // Insert one packet.
531 EXPECT_EQ(NetEq::kOK, 533 EXPECT_EQ(NetEq::kOK,
532 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 534 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
533 535
534 // Pull audio once. 536 // Pull audio once.
535 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 537 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
536 AudioFrame output; 538 AudioFrame output;
537 bool muted; 539 bool muted;
538 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); 540 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted));
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 653
652 WebRtcRTPHeader rtp_header; 654 WebRtcRTPHeader rtp_header;
653 rtp_header.header.payloadType = kPayloadType; 655 rtp_header.header.payloadType = kPayloadType;
654 rtp_header.header.sequenceNumber = 0x1234; 656 rtp_header.header.sequenceNumber = 0x1234;
655 rtp_header.header.timestamp = 0x12345678; 657 rtp_header.header.timestamp = 0x12345678;
656 rtp_header.header.ssrc = 0x87654321; 658 rtp_header.header.ssrc = 0x87654321;
657 659
658 // Create a mock decoder object. 660 // Create a mock decoder object.
659 MockAudioDecoder mock_decoder; 661 MockAudioDecoder mock_decoder;
660 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 662 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
663 EXPECT_CALL(mock_decoder, SampleRateHz())
664 .WillRepeatedly(Return(kSampleRateKhz * 1000));
661 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 665 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
662 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 666 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
663 .WillRepeatedly(Return(0)); 667 .WillRepeatedly(Return(0));
664 EXPECT_CALL(mock_decoder, PacketDuration(_, kPayloadLengthBytes)) 668 EXPECT_CALL(mock_decoder, PacketDuration(_, kPayloadLengthBytes))
665 .WillRepeatedly(Return(kPayloadLengthSamples)); 669 .WillRepeatedly(Return(kPayloadLengthSamples));
666 // Packed duration when asking the decoder for more CNG data (without a new 670 // Packed duration when asking the decoder for more CNG data (without a new
667 // packet). 671 // packet).
668 EXPECT_CALL(mock_decoder, PacketDuration(nullptr, 0)) 672 EXPECT_CALL(mock_decoder, PacketDuration(nullptr, 0))
669 .WillRepeatedly(Return(kPayloadLengthSamples)); 673 .WillRepeatedly(Return(kPayloadLengthSamples));
670 674
(...skipping 22 matching lines...) Expand all
693 697
694 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(2), kPayloadLengthBytes, 698 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(2), kPayloadLengthBytes,
695 kSampleRateKhz * 1000, _, _)) 699 kSampleRateKhz * 1000, _, _))
696 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output, 700 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
697 dummy_output + kPayloadLengthSamples), 701 dummy_output + kPayloadLengthSamples),
698 SetArgPointee<4>(AudioDecoder::kSpeech), 702 SetArgPointee<4>(AudioDecoder::kSpeech),
699 Return(kPayloadLengthSamples))); 703 Return(kPayloadLengthSamples)));
700 704
701 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 705 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
702 &mock_decoder, NetEqDecoder::kDecoderOpus, 706 &mock_decoder, NetEqDecoder::kDecoderOpus,
703 "dummy name", kPayloadType, kSampleRateKhz * 1000)); 707 "dummy name", kPayloadType));
704 708
705 // Insert one packet (decoder will return speech). 709 // Insert one packet (decoder will return speech).
706 EXPECT_EQ(NetEq::kOK, 710 EXPECT_EQ(NetEq::kOK,
707 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 711 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
708 712
709 // Insert second packet (decoder will return CNG). 713 // Insert second packet (decoder will return CNG).
710 payload[0] = 1; 714 payload[0] = 1;
711 rtp_header.header.sequenceNumber++; 715 rtp_header.header.sequenceNumber++;
712 rtp_header.header.timestamp += kPayloadLengthSamples; 716 rtp_header.header.timestamp += kPayloadLengthSamples;
713 EXPECT_EQ(NetEq::kOK, 717 EXPECT_EQ(NetEq::kOK,
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 Return(static_cast<int>( 841 Return(static_cast<int>(
838 kPayloadLengthSamples * kChannels)))); 842 kPayloadLengthSamples * kChannels))));
839 843
840 EXPECT_CALL(decoder_, PacketDuration(Pointee(kSecondPayloadValue), 844 EXPECT_CALL(decoder_, PacketDuration(Pointee(kSecondPayloadValue),
841 kPayloadLengthBytes)) 845 kPayloadLengthBytes))
842 .Times(AtLeast(1)) 846 .Times(AtLeast(1))
843 .WillRepeatedly(Return(kNetEqMaxFrameSize)); 847 .WillRepeatedly(Return(kNetEqMaxFrameSize));
844 848
845 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 849 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
846 &decoder_, NetEqDecoder::kDecoderPCM16B, 850 &decoder_, NetEqDecoder::kDecoderPCM16B,
847 "dummy name", kPayloadType, kSampleRateHz)); 851 "dummy name", kPayloadType));
848 852
849 // Insert one packet. 853 // Insert one packet.
850 payload[0] = kFirstPayloadValue; // This will make Decode() fail. 854 payload[0] = kFirstPayloadValue; // This will make Decode() fail.
851 EXPECT_EQ(NetEq::kOK, 855 EXPECT_EQ(NetEq::kOK,
852 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 856 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
853 857
854 // Insert another packet. 858 // Insert another packet.
855 payload[0] = kSecondPayloadValue; // This will make Decode() successful. 859 payload[0] = kSecondPayloadValue; // This will make Decode() successful.
856 rtp_header.header.sequenceNumber++; 860 rtp_header.header.sequenceNumber++;
857 // The second timestamp needs to be at least 30 ms after the first to make 861 // The second timestamp needs to be at least 30 ms after the first to make
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 uint8_t payload[kPayloadLengthBytes] = {0}; 935 uint8_t payload[kPayloadLengthBytes] = {0};
932 WebRtcRTPHeader rtp_header; 936 WebRtcRTPHeader rtp_header;
933 rtp_header.header.payloadType = kPayloadType; 937 rtp_header.header.payloadType = kPayloadType;
934 rtp_header.header.sequenceNumber = 0x1234; 938 rtp_header.header.sequenceNumber = 0x1234;
935 rtp_header.header.timestamp = 0x12345678; 939 rtp_header.header.timestamp = 0x12345678;
936 rtp_header.header.ssrc = 0x87654321; 940 rtp_header.header.ssrc = 0x87654321;
937 941
938 // Create a mock decoder object. 942 // Create a mock decoder object.
939 MockAudioDecoder mock_decoder; 943 MockAudioDecoder mock_decoder;
940 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 944 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
945 EXPECT_CALL(mock_decoder, SampleRateHz())
946 .WillRepeatedly(Return(kSampleRateHz));
941 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 947 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
942 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 948 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
943 .WillRepeatedly(Return(0)); 949 .WillRepeatedly(Return(0));
944 EXPECT_CALL(mock_decoder, PacketDuration(_, _)) 950 EXPECT_CALL(mock_decoder, PacketDuration(_, _))
945 .WillRepeatedly(Return(kPayloadLengthSamples)); 951 .WillRepeatedly(Return(kPayloadLengthSamples));
946 int16_t dummy_output[kPayloadLengthSamples] = {0}; 952 int16_t dummy_output[kPayloadLengthSamples] = {0};
947 // The below expectation will make the mock decoder write 953 // The below expectation will make the mock decoder write
948 // |kPayloadLengthSamples| - 5 zeros to the output array, and mark it as 954 // |kPayloadLengthSamples| - 5 zeros to the output array, and mark it as
949 // speech. That is, the decoded length is 5 samples shorter than the expected. 955 // speech. That is, the decoded length is 5 samples shorter than the expected.
950 EXPECT_CALL(mock_decoder, 956 EXPECT_CALL(mock_decoder,
951 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _)) 957 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _))
952 .WillOnce( 958 .WillOnce(
953 DoAll(SetArrayArgument<3>(dummy_output, 959 DoAll(SetArrayArgument<3>(dummy_output,
954 dummy_output + kPayloadLengthSamples - 5), 960 dummy_output + kPayloadLengthSamples - 5),
955 SetArgPointee<4>(AudioDecoder::kSpeech), 961 SetArgPointee<4>(AudioDecoder::kSpeech),
956 Return(kPayloadLengthSamples - 5))); 962 Return(kPayloadLengthSamples - 5)));
957 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 963 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
958 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 964 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
959 "dummy name", kPayloadType, kSampleRateHz)); 965 "dummy name", kPayloadType));
960 966
961 // Insert one packet. 967 // Insert one packet.
962 EXPECT_EQ(NetEq::kOK, 968 EXPECT_EQ(NetEq::kOK,
963 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 969 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
964 970
965 EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength()); 971 EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength());
966 972
967 // Pull audio once. 973 // Pull audio once.
968 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); 974 const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
969 AudioFrame output; 975 AudioFrame output;
(...skipping 26 matching lines...) Expand all
996 1002
997 WebRtcRTPHeader rtp_header; 1003 WebRtcRTPHeader rtp_header;
998 rtp_header.header.payloadType = kPayloadType; 1004 rtp_header.header.payloadType = kPayloadType;
999 rtp_header.header.sequenceNumber = 0x1234; 1005 rtp_header.header.sequenceNumber = 0x1234;
1000 rtp_header.header.timestamp = 0x12345678; 1006 rtp_header.header.timestamp = 0x12345678;
1001 rtp_header.header.ssrc = 0x87654321; 1007 rtp_header.header.ssrc = 0x87654321;
1002 1008
1003 // Create a mock decoder object. 1009 // Create a mock decoder object.
1004 MockAudioDecoder mock_decoder; 1010 MockAudioDecoder mock_decoder;
1005 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 1011 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
1012 EXPECT_CALL(mock_decoder, SampleRateHz())
1013 .WillRepeatedly(Return(kSampleRateHz));
1006 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 1014 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
1007 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 1015 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
1008 .WillRepeatedly(Return(0)); 1016 .WillRepeatedly(Return(0));
1009 EXPECT_CALL(mock_decoder, PacketDuration(_, _)) 1017 EXPECT_CALL(mock_decoder, PacketDuration(_, _))
1010 .WillRepeatedly(Return(kFrameLengthSamples)); 1018 .WillRepeatedly(Return(kFrameLengthSamples));
1011 EXPECT_CALL(mock_decoder, ErrorCode()) 1019 EXPECT_CALL(mock_decoder, ErrorCode())
1012 .WillOnce(Return(kDecoderErrorCode)); 1020 .WillOnce(Return(kDecoderErrorCode));
1013 EXPECT_CALL(mock_decoder, HasDecodePlc()) 1021 EXPECT_CALL(mock_decoder, HasDecodePlc())
1014 .WillOnce(Return(false)); 1022 .WillOnce(Return(false));
1015 int16_t dummy_output[kFrameLengthSamples] = {0}; 1023 int16_t dummy_output[kFrameLengthSamples] = {0};
(...skipping 24 matching lines...) Expand all
1040 .Times(2) 1048 .Times(2)
1041 .WillRepeatedly( 1049 .WillRepeatedly(
1042 DoAll(SetArrayArgument<3>(dummy_output, 1050 DoAll(SetArrayArgument<3>(dummy_output,
1043 dummy_output + kFrameLengthSamples), 1051 dummy_output + kFrameLengthSamples),
1044 SetArgPointee<4>(AudioDecoder::kSpeech), 1052 SetArgPointee<4>(AudioDecoder::kSpeech),
1045 Return(kFrameLengthSamples))); 1053 Return(kFrameLengthSamples)));
1046 } 1054 }
1047 1055
1048 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 1056 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
1049 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 1057 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
1050 "dummy name", kPayloadType, kSampleRateHz)); 1058 "dummy name", kPayloadType));
1051 1059
1052 // Insert packets. 1060 // Insert packets.
1053 for (int i = 0; i < 6; ++i) { 1061 for (int i = 0; i < 6; ++i) {
1054 rtp_header.header.sequenceNumber += 1; 1062 rtp_header.header.sequenceNumber += 1;
1055 rtp_header.header.timestamp += kFrameLengthSamples; 1063 rtp_header.header.timestamp += kFrameLengthSamples;
1056 EXPECT_EQ(NetEq::kOK, 1064 EXPECT_EQ(NetEq::kOK,
1057 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 1065 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
1058 } 1066 }
1059 1067
1060 // Pull audio. 1068 // Pull audio.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 1118
1111 WebRtcRTPHeader rtp_header; 1119 WebRtcRTPHeader rtp_header;
1112 rtp_header.header.payloadType = kPayloadType; 1120 rtp_header.header.payloadType = kPayloadType;
1113 rtp_header.header.sequenceNumber = 0x1234; 1121 rtp_header.header.sequenceNumber = 0x1234;
1114 rtp_header.header.timestamp = 0x12345678; 1122 rtp_header.header.timestamp = 0x12345678;
1115 rtp_header.header.ssrc = 0x87654321; 1123 rtp_header.header.ssrc = 0x87654321;
1116 1124
1117 // Create a mock decoder object. 1125 // Create a mock decoder object.
1118 MockAudioDecoder mock_decoder; 1126 MockAudioDecoder mock_decoder;
1119 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 1127 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
1128 EXPECT_CALL(mock_decoder, SampleRateHz())
1129 .WillRepeatedly(Return(kSampleRateHz));
1120 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 1130 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
1121 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 1131 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
1122 .WillRepeatedly(Return(0)); 1132 .WillRepeatedly(Return(0));
1123 EXPECT_CALL(mock_decoder, PacketDuration(_, _)) 1133 EXPECT_CALL(mock_decoder, PacketDuration(_, _))
1124 .WillRepeatedly(Return(kFrameLengthSamples)); 1134 .WillRepeatedly(Return(kFrameLengthSamples));
1125 EXPECT_CALL(mock_decoder, ErrorCode()) 1135 EXPECT_CALL(mock_decoder, ErrorCode())
1126 .WillOnce(Return(kDecoderErrorCode)); 1136 .WillOnce(Return(kDecoderErrorCode));
1127 int16_t dummy_output[kFrameLengthSamples] = {0}; 1137 int16_t dummy_output[kFrameLengthSamples] = {0};
1128 1138
1129 { 1139 {
(...skipping 20 matching lines...) Expand all
1150 .Times(2) 1160 .Times(2)
1151 .WillRepeatedly( 1161 .WillRepeatedly(
1152 DoAll(SetArrayArgument<3>(dummy_output, 1162 DoAll(SetArrayArgument<3>(dummy_output,
1153 dummy_output + kFrameLengthSamples), 1163 dummy_output + kFrameLengthSamples),
1154 SetArgPointee<4>(AudioDecoder::kComfortNoise), 1164 SetArgPointee<4>(AudioDecoder::kComfortNoise),
1155 Return(kFrameLengthSamples))); 1165 Return(kFrameLengthSamples)));
1156 } 1166 }
1157 1167
1158 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 1168 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
1159 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 1169 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
1160 "dummy name", kPayloadType, kSampleRateHz)); 1170 "dummy name", kPayloadType));
1161 1171
1162 // Insert 2 packets. This will make netEq into codec internal CNG mode. 1172 // Insert 2 packets. This will make netEq into codec internal CNG mode.
1163 for (int i = 0; i < 2; ++i) { 1173 for (int i = 0; i < 2; ++i) {
1164 rtp_header.header.sequenceNumber += 1; 1174 rtp_header.header.sequenceNumber += 1;
1165 rtp_header.header.timestamp += kFrameLengthSamples; 1175 rtp_header.header.timestamp += kFrameLengthSamples;
1166 EXPECT_EQ(NetEq::kOK, 1176 EXPECT_EQ(NetEq::kOK,
1167 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 1177 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
1168 } 1178 }
1169 1179
1170 // Pull audio. 1180 // Pull audio.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1286 uint8_t payload[kPayloadLengthBytes] = {0}; 1296 uint8_t payload[kPayloadLengthBytes] = {0};
1287 EXPECT_EQ(NetEq::kOK, neteq_->InsertPacket(rtp_header, payload, 10)); 1297 EXPECT_EQ(NetEq::kOK, neteq_->InsertPacket(rtp_header, payload, 10));
1288 sequence_number_++; 1298 sequence_number_++;
1289 } 1299 }
1290 1300
1291 void Register120msCodec(AudioDecoder::SpeechType speech_type) { 1301 void Register120msCodec(AudioDecoder::SpeechType speech_type) {
1292 decoder_.reset(new Decoder120ms(kSamplingFreq_, speech_type)); 1302 decoder_.reset(new Decoder120ms(kSamplingFreq_, speech_type));
1293 ASSERT_EQ(2u, decoder_->Channels()); 1303 ASSERT_EQ(2u, decoder_->Channels());
1294 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 1304 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
1295 decoder_.get(), NetEqDecoder::kDecoderOpus_2ch, 1305 decoder_.get(), NetEqDecoder::kDecoderOpus_2ch,
1296 "120ms codec", kPayloadType, kSamplingFreq_)); 1306 "120ms codec", kPayloadType));
1297 } 1307 }
1298 1308
1299 std::unique_ptr<Decoder120ms> decoder_; 1309 std::unique_ptr<Decoder120ms> decoder_;
1300 AudioFrame output_; 1310 AudioFrame output_;
1301 const uint32_t kPayloadType = 17; 1311 const uint32_t kPayloadType = 17;
1302 const uint32_t kSamplingFreq_ = 48000; 1312 const uint32_t kSamplingFreq_ = 48000;
1303 uint16_t sequence_number_ = 1; 1313 uint16_t sequence_number_ = 1;
1304 }; 1314 };
1305 1315
1306 TEST_F(NetEqImplTest120ms, AudioRepetition) { 1316 TEST_F(NetEqImplTest120ms, AudioRepetition) {
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1432 EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) 1442 EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _))
1433 .Times(1) 1443 .Times(1)
1434 .WillOnce(DoAll(SetArgPointee<0>(1), SetArgPointee<1>(2))); 1444 .WillOnce(DoAll(SetArgPointee<0>(1), SetArgPointee<1>(2)));
1435 1445
1436 bool muted; 1446 bool muted;
1437 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); 1447 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted));
1438 EXPECT_EQ(kAccelerate, neteq_->last_operation_for_test()); 1448 EXPECT_EQ(kAccelerate, neteq_->last_operation_for_test());
1439 } 1449 }
1440 1450
1441 }// namespace webrtc 1451 }// namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698