| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 new MockSmoothingFilter()); | 80 new MockSmoothingFilter()); |
| 81 states.mock_bitrate_smoother = bitrate_smoother.get(); | 81 states.mock_bitrate_smoother = bitrate_smoother.get(); |
| 82 states.simulated_clock.reset(new SimulatedClock(kInitialTimeUs)); | 82 states.simulated_clock.reset(new SimulatedClock(kInitialTimeUs)); |
| 83 states.config.clock = states.simulated_clock.get(); | 83 states.config.clock = states.simulated_clock.get(); |
| 84 | 84 |
| 85 states.encoder.reset(new AudioEncoderOpus(states.config, std::move(creator), | 85 states.encoder.reset(new AudioEncoderOpus(states.config, std::move(creator), |
| 86 std::move(bitrate_smoother))); | 86 std::move(bitrate_smoother))); |
| 87 return states; | 87 return states; |
| 88 } | 88 } |
| 89 | 89 |
| 90 AudioNetworkAdaptor::EncoderRuntimeConfig CreateEncoderRuntimeConfig() { | 90 AudioEncoderRuntimeConfig CreateEncoderRuntimeConfig() { |
| 91 constexpr int kBitrate = 40000; | 91 constexpr int kBitrate = 40000; |
| 92 constexpr int kFrameLength = 60; | 92 constexpr int kFrameLength = 60; |
| 93 constexpr bool kEnableFec = true; | 93 constexpr bool kEnableFec = true; |
| 94 constexpr bool kEnableDtx = false; | 94 constexpr bool kEnableDtx = false; |
| 95 constexpr size_t kNumChannels = 1; | 95 constexpr size_t kNumChannels = 1; |
| 96 constexpr float kPacketLossFraction = 0.1f; | 96 constexpr float kPacketLossFraction = 0.1f; |
| 97 AudioNetworkAdaptor::EncoderRuntimeConfig config; | 97 AudioEncoderRuntimeConfig config; |
| 98 config.bitrate_bps = rtc::Optional<int>(kBitrate); | 98 config.bitrate_bps = rtc::Optional<int>(kBitrate); |
| 99 config.frame_length_ms = rtc::Optional<int>(kFrameLength); | 99 config.frame_length_ms = rtc::Optional<int>(kFrameLength); |
| 100 config.enable_fec = rtc::Optional<bool>(kEnableFec); | 100 config.enable_fec = rtc::Optional<bool>(kEnableFec); |
| 101 config.enable_dtx = rtc::Optional<bool>(kEnableDtx); | 101 config.enable_dtx = rtc::Optional<bool>(kEnableDtx); |
| 102 config.num_channels = rtc::Optional<size_t>(kNumChannels); | 102 config.num_channels = rtc::Optional<size_t>(kNumChannels); |
| 103 config.uplink_packet_loss_fraction = | 103 config.uplink_packet_loss_fraction = |
| 104 rtc::Optional<float>(kPacketLossFraction); | 104 rtc::Optional<float>(kPacketLossFraction); |
| 105 return config; | 105 return config; |
| 106 } | 106 } |
| 107 | 107 |
| 108 void CheckEncoderRuntimeConfig( | 108 void CheckEncoderRuntimeConfig(const AudioEncoderOpus* encoder, |
| 109 const AudioEncoderOpus* encoder, | 109 const AudioEncoderRuntimeConfig& config) { |
| 110 const AudioNetworkAdaptor::EncoderRuntimeConfig& config) { | |
| 111 EXPECT_EQ(*config.bitrate_bps, encoder->GetTargetBitrate()); | 110 EXPECT_EQ(*config.bitrate_bps, encoder->GetTargetBitrate()); |
| 112 EXPECT_EQ(*config.frame_length_ms, encoder->next_frame_length_ms()); | 111 EXPECT_EQ(*config.frame_length_ms, encoder->next_frame_length_ms()); |
| 113 EXPECT_EQ(*config.enable_fec, encoder->fec_enabled()); | 112 EXPECT_EQ(*config.enable_fec, encoder->fec_enabled()); |
| 114 EXPECT_EQ(*config.enable_dtx, encoder->GetDtx()); | 113 EXPECT_EQ(*config.enable_dtx, encoder->GetDtx()); |
| 115 EXPECT_EQ(*config.num_channels, encoder->num_channels_to_encode()); | 114 EXPECT_EQ(*config.num_channels, encoder->num_channels_to_encode()); |
| 116 } | 115 } |
| 117 | 116 |
| 118 // Create 10ms audio data blocks for a total packet size of "packet_size_ms". | 117 // Create 10ms audio data blocks for a total packet size of "packet_size_ms". |
| 119 std::unique_ptr<test::AudioLoop> Create10msAudioBlocks( | 118 std::unique_ptr<test::AudioLoop> Create10msAudioBlocks( |
| 120 const std::unique_ptr<AudioEncoderOpus>& encoder, | 119 const std::unique_ptr<AudioEncoderOpus>& encoder, |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 // Bitrate above hysteresis window. Expect lower complexity. | 464 // Bitrate above hysteresis window. Expect lower complexity. |
| 466 config.bitrate_bps = rtc::Optional<int>(14001); | 465 config.bitrate_bps = rtc::Optional<int>(14001); |
| 467 EXPECT_EQ(rtc::Optional<int>(6), config.GetNewComplexity()); | 466 EXPECT_EQ(rtc::Optional<int>(6), config.GetNewComplexity()); |
| 468 } | 467 } |
| 469 | 468 |
| 470 TEST(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) { | 469 TEST(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) { |
| 471 auto states = CreateCodec(2); | 470 auto states = CreateCodec(2); |
| 472 states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); | 471 states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); |
| 473 | 472 |
| 474 auto config = CreateEncoderRuntimeConfig(); | 473 auto config = CreateEncoderRuntimeConfig(); |
| 475 AudioNetworkAdaptor::EncoderRuntimeConfig empty_config; | 474 AudioEncoderRuntimeConfig empty_config; |
| 476 | 475 |
| 477 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) | 476 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) |
| 478 .WillOnce(Return(config)) | 477 .WillOnce(Return(config)) |
| 479 .WillOnce(Return(empty_config)); | 478 .WillOnce(Return(empty_config)); |
| 480 | 479 |
| 481 constexpr size_t kOverhead = 64; | 480 constexpr size_t kOverhead = 64; |
| 482 EXPECT_CALL(**states.mock_audio_network_adaptor, SetOverhead(kOverhead)) | 481 EXPECT_CALL(**states.mock_audio_network_adaptor, SetOverhead(kOverhead)) |
| 483 .Times(2); | 482 .Times(2); |
| 484 states.encoder->OnReceivedOverhead(kOverhead); | 483 states.encoder->OnReceivedOverhead(kOverhead); |
| 485 states.encoder->OnReceivedOverhead(kOverhead); | 484 states.encoder->OnReceivedOverhead(kOverhead); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 | 539 |
| 541 // Should encode now. | 540 // Should encode now. |
| 542 states.encoder->Encode(rtp_timestamp, audio_frames->GetNextBlock(), | 541 states.encoder->Encode(rtp_timestamp, audio_frames->GetNextBlock(), |
| 543 &encoded); | 542 &encoded); |
| 544 EXPECT_GT(encoded.size(), 0u); | 543 EXPECT_GT(encoded.size(), 0u); |
| 545 encoded.Clear(); | 544 encoded.Clear(); |
| 546 } | 545 } |
| 547 } | 546 } |
| 548 | 547 |
| 549 } // namespace webrtc | 548 } // namespace webrtc |
| OLD | NEW |