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

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

Issue 1512483003: Add encode/decode time tracing to audio_coding. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: add comment Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 rtp_header.header.ssrc = 0x87654321; 424 rtp_header.header.ssrc = 0x87654321;
425 425
426 // This is a dummy decoder that produces as many output samples as the input 426 // This is a dummy decoder that produces as many output samples as the input
427 // has bytes. The output is an increasing series, starting at 1 for the first 427 // has bytes. The output is an increasing series, starting at 1 for the first
428 // sample, and then increasing by 1 for each sample. 428 // sample, and then increasing by 1 for each sample.
429 class CountingSamplesDecoder : public AudioDecoder { 429 class CountingSamplesDecoder : public AudioDecoder {
430 public: 430 public:
431 CountingSamplesDecoder() : next_value_(1) {} 431 CountingSamplesDecoder() : next_value_(1) {}
432 432
433 // Produce as many samples as input bytes (|encoded_len|). 433 // Produce as many samples as input bytes (|encoded_len|).
434 int Decode(const uint8_t* encoded, 434 int DecodeInternal(const uint8_t* encoded,
435 size_t encoded_len, 435 size_t encoded_len,
436 int /* sample_rate_hz */, 436 int /* sample_rate_hz */,
437 size_t /* max_decoded_bytes */, 437 int16_t* decoded,
438 int16_t* decoded, 438 SpeechType* speech_type) override {
439 SpeechType* speech_type) override {
440 for (size_t i = 0; i < encoded_len; ++i) { 439 for (size_t i = 0; i < encoded_len; ++i) {
441 decoded[i] = next_value_++; 440 decoded[i] = next_value_++;
442 } 441 }
443 *speech_type = kSpeech; 442 *speech_type = kSpeech;
444 return encoded_len; 443 return encoded_len;
445 } 444 }
446 445
447 void Reset() override { next_value_ = 1; } 446 void Reset() override { next_value_ = 1; }
448 447
449 size_t Channels() const override { return 1; } 448 size_t Channels() const override { return 1; }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 519
521 // Create a mock decoder object. 520 // Create a mock decoder object.
522 MockAudioDecoder mock_decoder; 521 MockAudioDecoder mock_decoder;
523 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 522 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
524 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 523 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
525 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 524 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
526 .WillRepeatedly(Return(0)); 525 .WillRepeatedly(Return(0));
527 int16_t dummy_output[kPayloadLengthSamples] = {0}; 526 int16_t dummy_output[kPayloadLengthSamples] = {0};
528 // The below expectation will make the mock decoder write 527 // The below expectation will make the mock decoder write
529 // |kPayloadLengthSamples| zeros to the output array, and mark it as speech. 528 // |kPayloadLengthSamples| zeros to the output array, and mark it as speech.
530 EXPECT_CALL(mock_decoder, 529 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(0), kPayloadLengthBytes,
531 Decode(Pointee(0), kPayloadLengthBytes, kSampleRateHz, _, _, _)) 530 kSampleRateHz, _, _))
532 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, 531 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
533 dummy_output + kPayloadLengthSamples), 532 dummy_output + kPayloadLengthSamples),
534 SetArgPointee<5>(AudioDecoder::kSpeech), 533 SetArgPointee<4>(AudioDecoder::kSpeech),
535 Return(kPayloadLengthSamples))); 534 Return(kPayloadLengthSamples)));
536 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 535 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
537 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 536 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
538 kPayloadType, kSampleRateHz)); 537 kPayloadType, kSampleRateHz));
539 538
540 // Insert one packet. 539 // Insert one packet.
541 EXPECT_EQ(NetEq::kOK, 540 EXPECT_EQ(NetEq::kOK,
542 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 541 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
543 542
544 // Pull audio once. 543 // Pull audio once.
(...skipping 18 matching lines...) Expand all
563 EXPECT_EQ(NetEq::kOK, 562 EXPECT_EQ(NetEq::kOK,
564 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 563 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
565 rtp_header.header.sequenceNumber += 2; 564 rtp_header.header.sequenceNumber += 2;
566 rtp_header.header.timestamp += 2 * kPayloadLengthSamples; 565 rtp_header.header.timestamp += 2 * kPayloadLengthSamples;
567 payload[0] = 2; 566 payload[0] = 2;
568 EXPECT_EQ(NetEq::kOK, 567 EXPECT_EQ(NetEq::kOK,
569 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 568 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
570 569
571 // Expect only the second packet to be decoded (the one with "2" as the first 570 // Expect only the second packet to be decoded (the one with "2" as the first
572 // payload byte). 571 // payload byte).
573 EXPECT_CALL(mock_decoder, 572 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(2), kPayloadLengthBytes,
574 Decode(Pointee(2), kPayloadLengthBytes, kSampleRateHz, _, _, _)) 573 kSampleRateHz, _, _))
575 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, 574 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
576 dummy_output + kPayloadLengthSamples), 575 dummy_output + kPayloadLengthSamples),
577 SetArgPointee<5>(AudioDecoder::kSpeech), 576 SetArgPointee<4>(AudioDecoder::kSpeech),
578 Return(kPayloadLengthSamples))); 577 Return(kPayloadLengthSamples)));
579 578
580 // Pull audio once. 579 // Pull audio once.
581 EXPECT_EQ( 580 EXPECT_EQ(
582 NetEq::kOK, 581 NetEq::kOK,
583 neteq_->GetAudio( 582 neteq_->GetAudio(
584 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type)); 583 kMaxOutputSize, output, &samples_per_channel, &num_channels, &type));
585 ASSERT_EQ(kMaxOutputSize, samples_per_channel); 584 ASSERT_EQ(kMaxOutputSize, samples_per_channel);
586 EXPECT_EQ(1, num_channels); 585 EXPECT_EQ(1, num_channels);
587 EXPECT_EQ(kOutputNormal, type); 586 EXPECT_EQ(kOutputNormal, type);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 680
682 // Create a mock decoder object. 681 // Create a mock decoder object.
683 MockAudioDecoder mock_decoder; 682 MockAudioDecoder mock_decoder;
684 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); 683 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
685 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 684 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
686 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 685 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
687 .WillRepeatedly(Return(0)); 686 .WillRepeatedly(Return(0));
688 687
689 // Pointee(x) verifies that first byte of the payload equals x, this makes it 688 // Pointee(x) verifies that first byte of the payload equals x, this makes it
690 // possible to verify that the correct payload is fed to Decode(). 689 // possible to verify that the correct payload is fed to Decode().
691 EXPECT_CALL(mock_decoder, Decode(Pointee(0), kPayloadLengthBytes, 690 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(0), kPayloadLengthBytes,
692 kSampleRateKhz * 1000, _, _, _)) 691 kSampleRateKhz * 1000, _, _))
693 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, 692 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
694 dummy_output + kPayloadLengthSamples), 693 dummy_output + kPayloadLengthSamples),
695 SetArgPointee<5>(AudioDecoder::kSpeech), 694 SetArgPointee<4>(AudioDecoder::kSpeech),
696 Return(kPayloadLengthSamples))); 695 Return(kPayloadLengthSamples)));
697 696
698 EXPECT_CALL(mock_decoder, Decode(Pointee(1), kPayloadLengthBytes, 697 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(1), kPayloadLengthBytes,
699 kSampleRateKhz * 1000, _, _, _)) 698 kSampleRateKhz * 1000, _, _))
700 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, 699 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
701 dummy_output + kPayloadLengthSamples), 700 dummy_output + kPayloadLengthSamples),
702 SetArgPointee<5>(AudioDecoder::kComfortNoise), 701 SetArgPointee<4>(AudioDecoder::kComfortNoise),
703 Return(kPayloadLengthSamples))); 702 Return(kPayloadLengthSamples)));
704 703
705 EXPECT_CALL(mock_decoder, Decode(IsNull(), 0, kSampleRateKhz * 1000, _, _, _)) 704 EXPECT_CALL(mock_decoder,
706 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, 705 DecodeInternal(IsNull(), 0, kSampleRateKhz * 1000, _, _))
706 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
707 dummy_output + kPayloadLengthSamples), 707 dummy_output + kPayloadLengthSamples),
708 SetArgPointee<5>(AudioDecoder::kComfortNoise), 708 SetArgPointee<4>(AudioDecoder::kComfortNoise),
709 Return(kPayloadLengthSamples))); 709 Return(kPayloadLengthSamples)));
710 710
711 EXPECT_CALL(mock_decoder, Decode(Pointee(2), kPayloadLengthBytes, 711 EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(2), kPayloadLengthBytes,
712 kSampleRateKhz * 1000, _, _, _)) 712 kSampleRateKhz * 1000, _, _))
713 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, 713 .WillOnce(DoAll(SetArrayArgument<3>(dummy_output,
714 dummy_output + kPayloadLengthSamples), 714 dummy_output + kPayloadLengthSamples),
715 SetArgPointee<5>(AudioDecoder::kSpeech), 715 SetArgPointee<4>(AudioDecoder::kSpeech),
716 Return(kPayloadLengthSamples))); 716 Return(kPayloadLengthSamples)));
717 717
718 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 718 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
719 &mock_decoder, NetEqDecoder::kDecoderOpus, 719 &mock_decoder, NetEqDecoder::kDecoderOpus,
720 kPayloadType, kSampleRateKhz * 1000)); 720 kPayloadType, kSampleRateKhz * 1000));
721 721
722 // Insert one packet (decoder will return speech). 722 // Insert one packet (decoder will return speech).
723 EXPECT_EQ(NetEq::kOK, 723 EXPECT_EQ(NetEq::kOK,
724 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 724 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
725 725
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); 953 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
954 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) 954 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
955 .WillRepeatedly(Return(0)); 955 .WillRepeatedly(Return(0));
956 EXPECT_CALL(mock_decoder, PacketDuration(_, _)) 956 EXPECT_CALL(mock_decoder, PacketDuration(_, _))
957 .WillRepeatedly(Return(kPayloadLengthSamples)); 957 .WillRepeatedly(Return(kPayloadLengthSamples));
958 int16_t dummy_output[kPayloadLengthSamples] = {0}; 958 int16_t dummy_output[kPayloadLengthSamples] = {0};
959 // The below expectation will make the mock decoder write 959 // The below expectation will make the mock decoder write
960 // |kPayloadLengthSamples| - 5 zeros to the output array, and mark it as 960 // |kPayloadLengthSamples| - 5 zeros to the output array, and mark it as
961 // speech. That is, the decoded length is 5 samples shorter than the expected. 961 // speech. That is, the decoded length is 5 samples shorter than the expected.
962 EXPECT_CALL(mock_decoder, 962 EXPECT_CALL(mock_decoder,
963 Decode(_, kPayloadLengthBytes, kSampleRateHz, _, _, _)) 963 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _))
964 .WillOnce( 964 .WillOnce(
965 DoAll(SetArrayArgument<4>(dummy_output, 965 DoAll(SetArrayArgument<3>(dummy_output,
966 dummy_output + kPayloadLengthSamples - 5), 966 dummy_output + kPayloadLengthSamples - 5),
967 SetArgPointee<5>(AudioDecoder::kSpeech), 967 SetArgPointee<4>(AudioDecoder::kSpeech),
968 Return(kPayloadLengthSamples - 5))); 968 Return(kPayloadLengthSamples - 5)));
969 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 969 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
970 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 970 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
971 kPayloadType, kSampleRateHz)); 971 kPayloadType, kSampleRateHz));
972 972
973 // Insert one packet. 973 // Insert one packet.
974 EXPECT_EQ(NetEq::kOK, 974 EXPECT_EQ(NetEq::kOK,
975 neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); 975 neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
976 976
977 EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength()); 977 EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 EXPECT_CALL(mock_decoder, ErrorCode()) 1027 EXPECT_CALL(mock_decoder, ErrorCode())
1028 .WillOnce(Return(kDecoderErrorCode)); 1028 .WillOnce(Return(kDecoderErrorCode));
1029 EXPECT_CALL(mock_decoder, HasDecodePlc()) 1029 EXPECT_CALL(mock_decoder, HasDecodePlc())
1030 .WillOnce(Return(false)); 1030 .WillOnce(Return(false));
1031 int16_t dummy_output[kFrameLengthSamples] = {0}; 1031 int16_t dummy_output[kFrameLengthSamples] = {0};
1032 1032
1033 { 1033 {
1034 InSequence sequence; // Dummy variable. 1034 InSequence sequence; // Dummy variable.
1035 // Mock decoder works normally the first time. 1035 // Mock decoder works normally the first time.
1036 EXPECT_CALL(mock_decoder, 1036 EXPECT_CALL(mock_decoder,
1037 Decode(_, kPayloadLengthBytes, kSampleRateHz, _, _, _)) 1037 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _))
1038 .Times(3) 1038 .Times(3)
1039 .WillRepeatedly( 1039 .WillRepeatedly(
1040 DoAll(SetArrayArgument<4>(dummy_output, 1040 DoAll(SetArrayArgument<3>(dummy_output,
1041 dummy_output + kFrameLengthSamples), 1041 dummy_output + kFrameLengthSamples),
1042 SetArgPointee<5>(AudioDecoder::kSpeech), 1042 SetArgPointee<4>(AudioDecoder::kSpeech),
1043 Return(kFrameLengthSamples))) 1043 Return(kFrameLengthSamples)))
1044 .RetiresOnSaturation(); 1044 .RetiresOnSaturation();
1045 1045
1046 // Then mock decoder fails. A common reason for failure can be buffer being 1046 // Then mock decoder fails. A common reason for failure can be buffer being
1047 // too short 1047 // too short
1048 EXPECT_CALL(mock_decoder, 1048 EXPECT_CALL(mock_decoder,
1049 Decode(_, kPayloadLengthBytes, kSampleRateHz, _, _, _)) 1049 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _))
1050 .WillOnce(Return(-1)) 1050 .WillOnce(Return(-1))
1051 .RetiresOnSaturation(); 1051 .RetiresOnSaturation();
1052 1052
1053 // Mock decoder finally returns to normal. 1053 // Mock decoder finally returns to normal.
1054 EXPECT_CALL(mock_decoder, 1054 EXPECT_CALL(mock_decoder,
1055 Decode(_, kPayloadLengthBytes, kSampleRateHz, _, _, _)) 1055 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _))
1056 .Times(2) 1056 .Times(2)
1057 .WillRepeatedly( 1057 .WillRepeatedly(
1058 DoAll(SetArrayArgument<4>(dummy_output, 1058 DoAll(SetArrayArgument<3>(dummy_output,
1059 dummy_output + kFrameLengthSamples), 1059 dummy_output + kFrameLengthSamples),
1060 SetArgPointee<5>(AudioDecoder::kSpeech), 1060 SetArgPointee<4>(AudioDecoder::kSpeech),
1061 Return(kFrameLengthSamples))); 1061 Return(kFrameLengthSamples)));
1062 } 1062 }
1063 1063
1064 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 1064 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
1065 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 1065 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
1066 kPayloadType, kSampleRateHz)); 1066 kPayloadType, kSampleRateHz));
1067 1067
1068 // Insert packets. 1068 // Insert packets.
1069 for (int i = 0; i < 6; ++i) { 1069 for (int i = 0; i < 6; ++i) {
1070 rtp_header.header.sequenceNumber += 1; 1070 rtp_header.header.sequenceNumber += 1;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 EXPECT_CALL(mock_decoder, PacketDuration(_, _)) 1150 EXPECT_CALL(mock_decoder, PacketDuration(_, _))
1151 .WillRepeatedly(Return(kFrameLengthSamples)); 1151 .WillRepeatedly(Return(kFrameLengthSamples));
1152 EXPECT_CALL(mock_decoder, ErrorCode()) 1152 EXPECT_CALL(mock_decoder, ErrorCode())
1153 .WillOnce(Return(kDecoderErrorCode)); 1153 .WillOnce(Return(kDecoderErrorCode));
1154 int16_t dummy_output[kFrameLengthSamples] = {0}; 1154 int16_t dummy_output[kFrameLengthSamples] = {0};
1155 1155
1156 { 1156 {
1157 InSequence sequence; // Dummy variable. 1157 InSequence sequence; // Dummy variable.
1158 // Mock decoder works normally the first 2 times. 1158 // Mock decoder works normally the first 2 times.
1159 EXPECT_CALL(mock_decoder, 1159 EXPECT_CALL(mock_decoder,
1160 Decode(_, kPayloadLengthBytes, kSampleRateHz, _, _, _)) 1160 DecodeInternal(_, kPayloadLengthBytes, kSampleRateHz, _, _))
1161 .Times(2) 1161 .Times(2)
1162 .WillRepeatedly( 1162 .WillRepeatedly(
1163 DoAll(SetArrayArgument<4>(dummy_output, 1163 DoAll(SetArrayArgument<3>(dummy_output,
1164 dummy_output + kFrameLengthSamples), 1164 dummy_output + kFrameLengthSamples),
1165 SetArgPointee<5>(AudioDecoder::kComfortNoise), 1165 SetArgPointee<4>(AudioDecoder::kComfortNoise),
1166 Return(kFrameLengthSamples))) 1166 Return(kFrameLengthSamples)))
1167 .RetiresOnSaturation(); 1167 .RetiresOnSaturation();
1168 1168
1169 // Then mock decoder fails. A common reason for failure can be buffer being 1169 // Then mock decoder fails. A common reason for failure can be buffer being
1170 // too short 1170 // too short
1171 EXPECT_CALL(mock_decoder, Decode(nullptr, 0, kSampleRateHz, _, _, _)) 1171 EXPECT_CALL(mock_decoder, DecodeInternal(nullptr, 0, kSampleRateHz, _, _))
1172 .WillOnce(Return(-1)) 1172 .WillOnce(Return(-1))
1173 .RetiresOnSaturation(); 1173 .RetiresOnSaturation();
1174 1174
1175 // Mock decoder finally returns to normal. 1175 // Mock decoder finally returns to normal.
1176 EXPECT_CALL(mock_decoder, Decode(nullptr, 0, kSampleRateHz, _, _, _)) 1176 EXPECT_CALL(mock_decoder, DecodeInternal(nullptr, 0, kSampleRateHz, _, _))
1177 .Times(2) 1177 .Times(2)
1178 .WillRepeatedly( 1178 .WillRepeatedly(
1179 DoAll(SetArrayArgument<4>(dummy_output, 1179 DoAll(SetArrayArgument<3>(dummy_output,
1180 dummy_output + kFrameLengthSamples), 1180 dummy_output + kFrameLengthSamples),
1181 SetArgPointee<5>(AudioDecoder::kComfortNoise), 1181 SetArgPointee<4>(AudioDecoder::kComfortNoise),
1182 Return(kFrameLengthSamples))); 1182 Return(kFrameLengthSamples)));
1183 } 1183 }
1184 1184
1185 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( 1185 EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder(
1186 &mock_decoder, NetEqDecoder::kDecoderPCM16B, 1186 &mock_decoder, NetEqDecoder::kDecoderPCM16B,
1187 kPayloadType, kSampleRateHz)); 1187 kPayloadType, kSampleRateHz));
1188 1188
1189 // Insert 2 packets. This will make netEq into codec internal CNG mode. 1189 // Insert 2 packets. This will make netEq into codec internal CNG mode.
1190 for (int i = 0; i < 2; ++i) { 1190 for (int i = 0; i < 2; ++i) {
1191 rtp_header.header.sequenceNumber += 1; 1191 rtp_header.header.sequenceNumber += 1;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 // 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
1234 // configured inital sample rate. 1234 // configured inital sample rate.
1235 TEST_F(NetEqImplTest, InitialLastOutputSampleRate) { 1235 TEST_F(NetEqImplTest, InitialLastOutputSampleRate) {
1236 UseNoMocks(); 1236 UseNoMocks();
1237 config_.sample_rate_hz = 48000; 1237 config_.sample_rate_hz = 48000;
1238 CreateInstance(); 1238 CreateInstance();
1239 EXPECT_EQ(48000, neteq_->last_output_sample_rate_hz()); 1239 EXPECT_EQ(48000, neteq_->last_output_sample_rate_hz());
1240 } 1240 }
1241 1241
1242 }// namespace webrtc 1242 }// namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698