| OLD | NEW |
| 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 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 size_t /* max_decoded_bytes */, | 437 size_t /* max_decoded_bytes */, |
| 438 int16_t* decoded, | 438 int16_t* decoded, |
| 439 SpeechType* speech_type) override { | 439 SpeechType* speech_type) override { |
| 440 for (size_t i = 0; i < encoded_len; ++i) { | 440 for (size_t i = 0; i < encoded_len; ++i) { |
| 441 decoded[i] = next_value_++; | 441 decoded[i] = next_value_++; |
| 442 } | 442 } |
| 443 *speech_type = kSpeech; | 443 *speech_type = kSpeech; |
| 444 return encoded_len; | 444 return encoded_len; |
| 445 } | 445 } |
| 446 | 446 |
| 447 virtual int Init() { | 447 void Reset() override { next_value_ = 1; } |
| 448 next_value_ = 1; | |
| 449 return 0; | |
| 450 } | |
| 451 | 448 |
| 452 size_t Channels() const override { return 1; } | 449 size_t Channels() const override { return 1; } |
| 453 | 450 |
| 454 uint16_t next_value() const { return next_value_; } | 451 uint16_t next_value() const { return next_value_; } |
| 455 | 452 |
| 456 private: | 453 private: |
| 457 int16_t next_value_; | 454 int16_t next_value_; |
| 458 } decoder_; | 455 } decoder_; |
| 459 | 456 |
| 460 EXPECT_EQ(NetEq::kOK, | 457 EXPECT_EQ(NetEq::kOK, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 const size_t kPayloadLengthBytes = kPayloadLengthSamples; | 514 const size_t kPayloadLengthBytes = kPayloadLengthSamples; |
| 518 uint8_t payload[kPayloadLengthBytes] = {0}; | 515 uint8_t payload[kPayloadLengthBytes] = {0}; |
| 519 WebRtcRTPHeader rtp_header; | 516 WebRtcRTPHeader rtp_header; |
| 520 rtp_header.header.payloadType = kPayloadType; | 517 rtp_header.header.payloadType = kPayloadType; |
| 521 rtp_header.header.sequenceNumber = 0x1234; | 518 rtp_header.header.sequenceNumber = 0x1234; |
| 522 rtp_header.header.timestamp = 0x12345678; | 519 rtp_header.header.timestamp = 0x12345678; |
| 523 rtp_header.header.ssrc = 0x87654321; | 520 rtp_header.header.ssrc = 0x87654321; |
| 524 | 521 |
| 525 // Create a mock decoder object. | 522 // Create a mock decoder object. |
| 526 MockAudioDecoder mock_decoder; | 523 MockAudioDecoder mock_decoder; |
| 527 EXPECT_CALL(mock_decoder, Init()).WillRepeatedly(Return(0)); | 524 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); |
| 528 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); | 525 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); |
| 529 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) | 526 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) |
| 530 .WillRepeatedly(Return(0)); | 527 .WillRepeatedly(Return(0)); |
| 531 int16_t dummy_output[kPayloadLengthSamples] = {0}; | 528 int16_t dummy_output[kPayloadLengthSamples] = {0}; |
| 532 // The below expectation will make the mock decoder write | 529 // The below expectation will make the mock decoder write |
| 533 // |kPayloadLengthSamples| zeros to the output array, and mark it as speech. | 530 // |kPayloadLengthSamples| zeros to the output array, and mark it as speech. |
| 534 EXPECT_CALL(mock_decoder, | 531 EXPECT_CALL(mock_decoder, |
| 535 Decode(Pointee(0), kPayloadLengthBytes, kSampleRateHz, _, _, _)) | 532 Decode(Pointee(0), kPayloadLengthBytes, kSampleRateHz, _, _, _)) |
| 536 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, | 533 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, |
| 537 dummy_output + kPayloadLengthSamples), | 534 dummy_output + kPayloadLengthSamples), |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 int16_t dummy_output[kPayloadLengthSamples] = {0}; | 680 int16_t dummy_output[kPayloadLengthSamples] = {0}; |
| 684 | 681 |
| 685 WebRtcRTPHeader rtp_header; | 682 WebRtcRTPHeader rtp_header; |
| 686 rtp_header.header.payloadType = kPayloadType; | 683 rtp_header.header.payloadType = kPayloadType; |
| 687 rtp_header.header.sequenceNumber = 0x1234; | 684 rtp_header.header.sequenceNumber = 0x1234; |
| 688 rtp_header.header.timestamp = 0x12345678; | 685 rtp_header.header.timestamp = 0x12345678; |
| 689 rtp_header.header.ssrc = 0x87654321; | 686 rtp_header.header.ssrc = 0x87654321; |
| 690 | 687 |
| 691 // Create a mock decoder object. | 688 // Create a mock decoder object. |
| 692 MockAudioDecoder mock_decoder; | 689 MockAudioDecoder mock_decoder; |
| 693 EXPECT_CALL(mock_decoder, Init()).WillRepeatedly(Return(0)); | 690 EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); |
| 694 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); | 691 EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1)); |
| 695 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) | 692 EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _)) |
| 696 .WillRepeatedly(Return(0)); | 693 .WillRepeatedly(Return(0)); |
| 697 | 694 |
| 698 // Pointee(x) verifies that first byte of the payload equals x, this makes it | 695 // Pointee(x) verifies that first byte of the payload equals x, this makes it |
| 699 // possible to verify that the correct payload is fed to Decode(). | 696 // possible to verify that the correct payload is fed to Decode(). |
| 700 EXPECT_CALL(mock_decoder, Decode(Pointee(0), kPayloadLengthBytes, | 697 EXPECT_CALL(mock_decoder, Decode(Pointee(0), kPayloadLengthBytes, |
| 701 kSampleRateKhz * 1000, _, _, _)) | 698 kSampleRateKhz * 1000, _, _, _)) |
| 702 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, | 699 .WillOnce(DoAll(SetArrayArgument<4>(dummy_output, |
| 703 dummy_output + kPayloadLengthSamples), | 700 dummy_output + kPayloadLengthSamples), |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 822 uint8_t payload[kPayloadLengthBytes]= {0}; | 819 uint8_t payload[kPayloadLengthBytes]= {0}; |
| 823 int16_t dummy_output[kPayloadLengthSamples * kChannels] = {0}; | 820 int16_t dummy_output[kPayloadLengthSamples * kChannels] = {0}; |
| 824 WebRtcRTPHeader rtp_header; | 821 WebRtcRTPHeader rtp_header; |
| 825 rtp_header.header.payloadType = kPayloadType; | 822 rtp_header.header.payloadType = kPayloadType; |
| 826 rtp_header.header.sequenceNumber = 0x1234; | 823 rtp_header.header.sequenceNumber = 0x1234; |
| 827 rtp_header.header.timestamp = 0x12345678; | 824 rtp_header.header.timestamp = 0x12345678; |
| 828 rtp_header.header.ssrc = 0x87654321; | 825 rtp_header.header.ssrc = 0x87654321; |
| 829 | 826 |
| 830 class MockAudioDecoder : public AudioDecoder { | 827 class MockAudioDecoder : public AudioDecoder { |
| 831 public: | 828 public: |
| 832 int Init() override { | 829 void Reset() override {} |
| 833 return 0; | |
| 834 } | |
| 835 MOCK_CONST_METHOD2(PacketDuration, int(const uint8_t*, size_t)); | 830 MOCK_CONST_METHOD2(PacketDuration, int(const uint8_t*, size_t)); |
| 836 MOCK_METHOD5(DecodeInternal, int(const uint8_t*, size_t, int, int16_t*, | 831 MOCK_METHOD5(DecodeInternal, int(const uint8_t*, size_t, int, int16_t*, |
| 837 SpeechType*)); | 832 SpeechType*)); |
| 838 size_t Channels() const override { return kChannels; } | 833 size_t Channels() const override { return kChannels; } |
| 839 } decoder_; | 834 } decoder_; |
| 840 | 835 |
| 841 const uint8_t kFirstPayloadValue = 1; | 836 const uint8_t kFirstPayloadValue = 1; |
| 842 const uint8_t kSecondPayloadValue = 2; | 837 const uint8_t kSecondPayloadValue = 2; |
| 843 | 838 |
| 844 EXPECT_CALL(decoder_, PacketDuration(Pointee(kFirstPayloadValue), | 839 EXPECT_CALL(decoder_, PacketDuration(Pointee(kFirstPayloadValue), |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 901 EXPECT_EQ(kChannels, num_channels); | 896 EXPECT_EQ(kChannels, num_channels); |
| 902 | 897 |
| 903 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(kMaxOutputSize, output, | 898 EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(kMaxOutputSize, output, |
| 904 &samples_per_channel, &num_channels, | 899 &samples_per_channel, &num_channels, |
| 905 &type)); | 900 &type)); |
| 906 EXPECT_EQ(kMaxOutputSize, samples_per_channel * kChannels); | 901 EXPECT_EQ(kMaxOutputSize, samples_per_channel * kChannels); |
| 907 EXPECT_EQ(kChannels, num_channels); | 902 EXPECT_EQ(kChannels, num_channels); |
| 908 } | 903 } |
| 909 | 904 |
| 910 } // namespace webrtc | 905 } // namespace webrtc |
| OLD | NEW |