Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 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 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 767 return test_complete_->Wait(10 * 60 * 1000); // 10 minutes' timeout. | 767 return test_complete_->Wait(10 * 60 * 1000); // 10 minutes' timeout. |
| 768 } | 768 } |
| 769 | 769 |
| 770 static bool CbReceiveThread(void* context) { | 770 static bool CbReceiveThread(void* context) { |
| 771 return reinterpret_cast<AcmReRegisterIsacMtTestOldApi*>(context) | 771 return reinterpret_cast<AcmReRegisterIsacMtTestOldApi*>(context) |
| 772 ->CbReceiveImpl(); | 772 ->CbReceiveImpl(); |
| 773 } | 773 } |
| 774 | 774 |
| 775 bool CbReceiveImpl() { | 775 bool CbReceiveImpl() { |
| 776 SleepMs(1); | 776 SleepMs(1); |
| 777 const size_t max_encoded_bytes = isac_encoder_->MaxEncodedBytes(); | 777 rtc::Buffer encoded; |
| 778 std::unique_ptr<uint8_t[]> encoded(new uint8_t[max_encoded_bytes]); | |
| 779 AudioEncoder::EncodedInfo info; | 778 AudioEncoder::EncodedInfo info; |
| 780 { | 779 { |
| 781 rtc::CritScope lock(&crit_sect_); | 780 rtc::CritScope lock(&crit_sect_); |
| 782 if (clock_->TimeInMilliseconds() < next_insert_packet_time_ms_) { | 781 if (clock_->TimeInMilliseconds() < next_insert_packet_time_ms_) { |
| 783 return true; | 782 return true; |
| 784 } | 783 } |
| 785 next_insert_packet_time_ms_ += kPacketSizeMs; | 784 next_insert_packet_time_ms_ += kPacketSizeMs; |
| 786 ++receive_packet_count_; | 785 ++receive_packet_count_; |
| 787 | 786 |
| 788 // Encode new frame. | 787 // Encode new frame. |
| 789 uint32_t input_timestamp = rtp_header_.header.timestamp; | 788 uint32_t input_timestamp = rtp_header_.header.timestamp; |
| 790 while (info.encoded_bytes == 0) { | 789 while (info.encoded_bytes == 0) { |
| 791 info = | 790 info = |
| 792 isac_encoder_->Encode(input_timestamp, audio_loop_.GetNextBlock(), | 791 isac_encoder_->Encode(input_timestamp, audio_loop_.GetNextBlock(), |
| 793 max_encoded_bytes, encoded.get()); | 792 &encoded); |
| 794 input_timestamp += 160; // 10 ms at 16 kHz. | 793 input_timestamp += 160; // 10 ms at 16 kHz. |
| 795 } | 794 } |
| 796 EXPECT_EQ(rtp_header_.header.timestamp + kPacketSizeSamples, | 795 EXPECT_EQ(rtp_header_.header.timestamp + kPacketSizeSamples, |
| 797 input_timestamp); | 796 input_timestamp); |
| 798 EXPECT_EQ(rtp_header_.header.timestamp, info.encoded_timestamp); | 797 EXPECT_EQ(rtp_header_.header.timestamp, info.encoded_timestamp); |
| 799 EXPECT_EQ(rtp_header_.header.payloadType, info.payload_type); | 798 EXPECT_EQ(rtp_header_.header.payloadType, info.payload_type); |
| 800 } | 799 } |
| 801 // Now we're not holding the crit sect when calling ACM. | 800 // Now we're not holding the crit sect when calling ACM. |
| 802 | 801 |
| 803 // Insert into ACM. | 802 // Insert into ACM. |
| 804 EXPECT_EQ(0, acm_->IncomingPacket(encoded.get(), info.encoded_bytes, | 803 EXPECT_EQ(0, acm_->IncomingPacket(encoded.data(), info.encoded_bytes, |
| 805 rtp_header_)); | 804 rtp_header_)); |
| 806 | 805 |
| 807 // Pull audio. | 806 // Pull audio. |
| 808 for (int i = 0; i < rtc::CheckedDivExact(kPacketSizeMs, 10); ++i) { | 807 for (int i = 0; i < rtc::CheckedDivExact(kPacketSizeMs, 10); ++i) { |
| 809 AudioFrame audio_frame; | 808 AudioFrame audio_frame; |
| 810 EXPECT_EQ(0, acm_->PlayoutData10Ms(-1 /* default output frequency */, | 809 EXPECT_EQ(0, acm_->PlayoutData10Ms(-1 /* default output frequency */, |
| 811 &audio_frame)); | 810 &audio_frame)); |
| 812 fake_clock_->AdvanceTimeMilliseconds(10); | 811 fake_clock_->AdvanceTimeMilliseconds(10); |
| 813 } | 812 } |
| 814 rtp_utility_->Forward(&rtp_header_); | 813 rtp_utility_->Forward(&rtp_header_); |
| (...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1627 TEST_F(AcmSenderBitExactnessOldApi, External_Pcmu_20ms) { | 1626 TEST_F(AcmSenderBitExactnessOldApi, External_Pcmu_20ms) { |
| 1628 CodecInst codec_inst; | 1627 CodecInst codec_inst; |
| 1629 codec_inst.channels = 1; | 1628 codec_inst.channels = 1; |
| 1630 codec_inst.pacsize = 160; | 1629 codec_inst.pacsize = 160; |
| 1631 codec_inst.pltype = 0; | 1630 codec_inst.pltype = 0; |
| 1632 AudioEncoderPcmU encoder(codec_inst); | 1631 AudioEncoderPcmU encoder(codec_inst); |
| 1633 MockAudioEncoder mock_encoder; | 1632 MockAudioEncoder mock_encoder; |
| 1634 // Set expectations on the mock encoder and also delegate the calls to the | 1633 // Set expectations on the mock encoder and also delegate the calls to the |
| 1635 // real encoder. | 1634 // real encoder. |
| 1636 EXPECT_CALL(mock_encoder, MaxEncodedBytes()) | 1635 EXPECT_CALL(mock_encoder, MaxEncodedBytes()) |
| 1637 .Times(AtLeast(1)) | |
| 1638 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::MaxEncodedBytes)); | 1636 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::MaxEncodedBytes)); |
|
kwiberg-webrtc
2016/02/25 00:29:04
Do you still need this one?
ossu
2016/02/25 10:39:51
Hmm... Come to think of it, probably not. I'll try
| |
| 1639 EXPECT_CALL(mock_encoder, SampleRateHz()) | 1637 EXPECT_CALL(mock_encoder, SampleRateHz()) |
| 1640 .Times(AtLeast(1)) | 1638 .Times(AtLeast(1)) |
| 1641 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::SampleRateHz)); | 1639 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::SampleRateHz)); |
| 1642 EXPECT_CALL(mock_encoder, NumChannels()) | 1640 EXPECT_CALL(mock_encoder, NumChannels()) |
| 1643 .Times(AtLeast(1)) | 1641 .Times(AtLeast(1)) |
| 1644 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::NumChannels)); | 1642 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::NumChannels)); |
| 1645 EXPECT_CALL(mock_encoder, RtpTimestampRateHz()) | 1643 EXPECT_CALL(mock_encoder, RtpTimestampRateHz()) |
| 1646 .Times(AtLeast(1)) | 1644 .Times(AtLeast(1)) |
| 1647 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::RtpTimestampRateHz)); | 1645 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::RtpTimestampRateHz)); |
| 1648 EXPECT_CALL(mock_encoder, Num10MsFramesInNextPacket()) | 1646 EXPECT_CALL(mock_encoder, Num10MsFramesInNextPacket()) |
| 1649 .Times(AtLeast(1)) | 1647 .Times(AtLeast(1)) |
| 1650 .WillRepeatedly( | 1648 .WillRepeatedly( |
| 1651 Invoke(&encoder, &AudioEncoderPcmU::Num10MsFramesInNextPacket)); | 1649 Invoke(&encoder, &AudioEncoderPcmU::Num10MsFramesInNextPacket)); |
| 1652 EXPECT_CALL(mock_encoder, GetTargetBitrate()) | 1650 EXPECT_CALL(mock_encoder, GetTargetBitrate()) |
| 1653 .Times(AtLeast(1)) | 1651 .Times(AtLeast(1)) |
| 1654 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::GetTargetBitrate)); | 1652 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::GetTargetBitrate)); |
| 1655 EXPECT_CALL(mock_encoder, EncodeInternal(_, _, _, _)) | 1653 EXPECT_CALL(mock_encoder, EncodeInternal(_, _, _)) |
| 1656 .Times(AtLeast(1)) | 1654 .Times(AtLeast(1)) |
| 1657 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::EncodeInternal)); | 1655 .WillRepeatedly(Invoke(&encoder, |
| 1656 static_cast< | |
| 1657 AudioEncoder::EncodedInfo(AudioEncoder::*)( | |
| 1658 uint32_t, | |
| 1659 rtc::ArrayView<const int16_t>, | |
| 1660 rtc::Buffer*)>(&AudioEncoderPcmU::Encode))); | |
| 1658 EXPECT_CALL(mock_encoder, SetFec(_)) | 1661 EXPECT_CALL(mock_encoder, SetFec(_)) |
| 1659 .Times(AtLeast(1)) | 1662 .Times(AtLeast(1)) |
| 1660 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::SetFec)); | 1663 .WillRepeatedly(Invoke(&encoder, &AudioEncoderPcmU::SetFec)); |
| 1661 ASSERT_NO_FATAL_FAILURE( | 1664 ASSERT_NO_FATAL_FAILURE( |
| 1662 SetUpTestExternalEncoder(&mock_encoder, codec_inst.pltype)); | 1665 SetUpTestExternalEncoder(&mock_encoder, codec_inst.pltype)); |
| 1663 Run("81a9d4c0bb72e9becc43aef124c981e9", "8f9b8750bd80fe26b6cbf6659b89f0f9", | 1666 Run("81a9d4c0bb72e9becc43aef124c981e9", "8f9b8750bd80fe26b6cbf6659b89f0f9", |
| 1664 50, test::AcmReceiveTestOldApi::kMonoOutput); | 1667 50, test::AcmReceiveTestOldApi::kMonoOutput); |
| 1665 } | 1668 } |
| 1666 | 1669 |
| 1667 // This test fixture is implemented to run ACM and change the desired output | 1670 // This test fixture is implemented to run ACM and change the desired output |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1777 Run(16000, 8000, 1000); | 1780 Run(16000, 8000, 1000); |
| 1778 } | 1781 } |
| 1779 | 1782 |
| 1780 TEST_F(AcmSwitchingOutputFrequencyOldApi, Toggle8KhzTo16Khz) { | 1783 TEST_F(AcmSwitchingOutputFrequencyOldApi, Toggle8KhzTo16Khz) { |
| 1781 Run(8000, 16000, 1000); | 1784 Run(8000, 16000, 1000); |
| 1782 } | 1785 } |
| 1783 | 1786 |
| 1784 #endif | 1787 #endif |
| 1785 | 1788 |
| 1786 } // namespace webrtc | 1789 } // namespace webrtc |
| OLD | NEW |