From d3a780b4764c656eb34fcc828901f5972945b18e Mon Sep 17 00:00:00 2001 From: Jakob Ivarsson Date: Thu, 28 Feb 2019 14:30:21 +0100 Subject: [PATCH] Cleanup NetEqPostponeDecodingAfterExpand field trial. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie96e9b35ced4b6ca8daa78f1fa80816386a6643b Bug: webrtc:9289 Reviewed-on: https://webrtc-review.googlesource.com/c/124127 Commit-Queue: Jakob Ivarsson‎ Reviewed-by: Minyue Li Cr-Commit-Position: refs/heads/master@{#26899} --- .../acm2/audio_coding_module_unittest.cc | 40 ++++++------- modules/audio_coding/neteq/decision_logic.cc | 31 +--------- modules/audio_coding/neteq/decision_logic.h | 5 -- .../neteq/decision_logic_unittest.cc | 57 ------------------- modules/audio_coding/neteq/neteq_unittest.cc | 16 +++--- 5 files changed, 31 insertions(+), 118 deletions(-) diff --git a/modules/audio_coding/acm2/audio_coding_module_unittest.cc b/modules/audio_coding/acm2/audio_coding_module_unittest.cc index edaf798f2a..4ee9addc69 100644 --- a/modules/audio_coding/acm2/audio_coding_module_unittest.cc +++ b/modules/audio_coding/acm2/audio_coding_module_unittest.cc @@ -961,35 +961,35 @@ class AcmReceiverBitExactnessOldApi : public ::testing::Test { #if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) && \ defined(WEBRTC_CODEC_ILBC) TEST_F(AcmReceiverBitExactnessOldApi, 8kHzOutput) { - Run(8000, PlatformChecksum("7294941b62293e143d6d6c84955923fd", - "f26b8c9aa8257c7185925fa5b102f46a", - "65e5ef5c3de9c2abf3c8d0989772e9fc", + Run(8000, PlatformChecksum("bcfbe2e89b4317b22e29557168edf187", + "af15addb648cf7f032d6415672365fb3", + "54a0008eb79537dee1d8fdaa5bc29f4b", "4598140b5e4f7ee66c5adad609e65a3e", - "04a1d3e735730b6d7dbd5df10f717d27")); + "3155d7f2593a3276986f36221a61783c")); } TEST_F(AcmReceiverBitExactnessOldApi, 16kHzOutput) { - Run(16000, PlatformChecksum("de8143dd3cc23241f1e1d5cf14e04b8a", - "eada3f321120d8d5afffbe4170a55d2f", - "135d8c3c7b92aa13d45cad7c91068e3e", + Run(16000, PlatformChecksum("1737deef193e6c90e139ce82b7361ae4", + "9e2a9f7728c71d6559ce3a32d2b10a5d", + "114958862099142ac78b12100c21cb8d", "f2aad418af974a3b1694d5ae5cc2c3c7", - "728b69068332efade35b1a9c32029e1b")); + "af2889a5ca84fb40c9aa209b9318ee7a")); } TEST_F(AcmReceiverBitExactnessOldApi, 32kHzOutput) { - Run(32000, PlatformChecksum("521d336237bdcc9ab44050e9da8917fc", - "73d44a7bedb6dfa7c70cf997223d8c10", - "f3ee2f14b03fb8e98f526f82583f84d9", + Run(32000, PlatformChecksum("1bf40ff024c6aa5b832d1d242c29cb3b", + "3c9690cd136e9ecd1b26a22f70fe1d5c", + "a1a3a01d8e25fcd11f1cedcd02e968b8", "100869c8dcde51346c2073e52a272d98", - "5f338b4bc38707d0a14d75a357e1546e")); + "33695077e9ec6bca80819ce2ba263a78")); } TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutput) { - Run(48000, PlatformChecksum("5955e31373828969de7fb308fb58a84e", - "83c0eca235b1a806426ff6ca8655cdf7", - "1126a8c03d1ebc6aa7348b9c541e2082", + Run(48000, PlatformChecksum("bf92db1e502deff5adf6fd2e6ab9a2e5", + "c37b110ab50d87620972daee5d1eaf31", + "5d55b68be7bcf39b60fcc74519363fb4", "bd44bf97e7899186532f91235cef444d", - "9d092dbc96e7ef6870b78c1056e87315")); + "32eec738698ffe62b9777d6a349cd596")); } TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutputExternalDecoder) { @@ -1072,11 +1072,11 @@ TEST_F(AcmReceiverBitExactnessOldApi, 48kHzOutputExternalDecoder) { rtc::scoped_refptr> factory( new rtc::RefCountedObject); Run(48000, - PlatformChecksum("5955e31373828969de7fb308fb58a84e", - "83c0eca235b1a806426ff6ca8655cdf7", - "1126a8c03d1ebc6aa7348b9c541e2082", + PlatformChecksum("bf92db1e502deff5adf6fd2e6ab9a2e5", + "c37b110ab50d87620972daee5d1eaf31", + "5d55b68be7bcf39b60fcc74519363fb4", "bd44bf97e7899186532f91235cef444d", - "9d092dbc96e7ef6870b78c1056e87315"), + "32eec738698ffe62b9777d6a349cd596"), factory, [](AudioCodingModule* acm) { acm->SetReceiveCodecs({{0, {"MockPCMu", 8000, 1}}, {103, {"ISAC", 16000, 1}}, diff --git a/modules/audio_coding/neteq/decision_logic.cc b/modules/audio_coding/neteq/decision_logic.cc index 83c2b3b90c..5976410aac 100644 --- a/modules/audio_coding/neteq/decision_logic.cc +++ b/modules/audio_coding/neteq/decision_logic.cc @@ -26,31 +26,8 @@ #include "system_wrappers/include/field_trial.h" namespace { -constexpr char kPostponeDecodingFieldTrial[] = - "WebRTC-Audio-NetEqPostponeDecodingAfterExpand"; -int GetPostponeDecodingLevel() { - const bool enabled = - webrtc::field_trial::IsEnabled(kPostponeDecodingFieldTrial); - if (!enabled) - return 0; - - constexpr int kDefaultPostponeDecodingLevel = 50; - const std::string field_trial_string = - webrtc::field_trial::FindFullName(kPostponeDecodingFieldTrial); - int value = -1; - if (sscanf(field_trial_string.c_str(), "Enabled-%d", &value) == 1) { - if (value >= 0 && value <= 100) { - return value; - } else { - RTC_LOG(LS_WARNING) - << "Wrong value (" << value - << ") for postpone decoding after expand, using default (" - << kDefaultPostponeDecodingLevel << ")"; - } - } - return kDefaultPostponeDecodingLevel; -} +constexpr int kPostponeDecodingLevel = 50; } // namespace @@ -89,8 +66,7 @@ DecisionLogic::DecisionLogic(int fs_hz, disallow_time_stretching_(disallow_time_stretching), timescale_countdown_( tick_timer_->GetNewCountdown(kMinTimescaleInterval + 1)), - num_consecutive_expands_(0), - postpone_decoding_level_(GetPostponeDecodingLevel()) { + num_consecutive_expands_(0) { delay_manager_->set_streaming_mode(false); SetSampleRate(fs_hz, output_size_samples); } @@ -198,9 +174,8 @@ Operations DecisionLogic::GetDecision(const SyncBuffer& sync_buffer, expand.MuteFactor(0) < 16384 / 2 && cur_size_samples < static_cast( delay_manager_->TargetLevel() * packet_length_samples_ * - postpone_decoding_level_ / 100) >> 8 && + kPostponeDecodingLevel / 100) >> 8 && !packet_buffer_.ContainsDtxOrCngPacket(decoder_database_)) { - RTC_DCHECK(webrtc::field_trial::IsEnabled(kPostponeDecodingFieldTrial)); return kExpand; } diff --git a/modules/audio_coding/neteq/decision_logic.h b/modules/audio_coding/neteq/decision_logic.h index 75f8a88b73..ad8e2cd630 100644 --- a/modules/audio_coding/neteq/decision_logic.h +++ b/modules/audio_coding/neteq/decision_logic.h @@ -108,10 +108,6 @@ class DecisionLogic final { } void set_prev_time_scale(bool value) { prev_time_scale_ = value; } - int postpone_decoding_level_for_test() const { - return postpone_decoding_level_; - } - private: // The value 5 sets maximum time-stretch rate to about 100 ms/s. static const int kMinTimescaleInterval = 5; @@ -184,7 +180,6 @@ class DecisionLogic final { bool disallow_time_stretching_; std::unique_ptr timescale_countdown_; int num_consecutive_expands_; - const int postpone_decoding_level_; RTC_DISALLOW_COPY_AND_ASSIGN(DecisionLogic); }; diff --git a/modules/audio_coding/neteq/decision_logic_unittest.cc b/modules/audio_coding/neteq/decision_logic_unittest.cc index 2e9b9236c6..17840d1a28 100644 --- a/modules/audio_coding/neteq/decision_logic_unittest.cc +++ b/modules/audio_coding/neteq/decision_logic_unittest.cc @@ -40,63 +40,6 @@ TEST(DecisionLogic, CreateAndDestroy) { delete logic; } -TEST(DecisionLogic, PostponeDecodingAfterExpansionSettings) { - constexpr int kDefaultPostponeDecodingLevel = 50; - constexpr int kFsHz = 8000; - constexpr int kOutputSizeSamples = kFsHz / 100; // Samples per 10 ms. - DecoderDatabase decoder_database( - new rtc::RefCountedObject, absl::nullopt); - TickTimer tick_timer; - PacketBuffer packet_buffer(10, &tick_timer); - DelayPeakDetector delay_peak_detector(&tick_timer, false); - auto delay_manager = - DelayManager::Create(240, 0, false, &delay_peak_detector, &tick_timer); - BufferLevelFilter buffer_level_filter; - { - test::ScopedFieldTrials field_trial( - "WebRTC-Audio-NetEqPostponeDecodingAfterExpand/Enabled/"); - DecisionLogic logic(kFsHz, kOutputSizeSamples, false, &decoder_database, - packet_buffer, delay_manager.get(), - &buffer_level_filter, &tick_timer); - EXPECT_EQ(kDefaultPostponeDecodingLevel, - logic.postpone_decoding_level_for_test()); - } - { - test::ScopedFieldTrials field_trial( - "WebRTC-Audio-NetEqPostponeDecodingAfterExpand/Enabled-65/"); - DecisionLogic logic(kFsHz, kOutputSizeSamples, false, &decoder_database, - packet_buffer, delay_manager.get(), - &buffer_level_filter, &tick_timer); - EXPECT_EQ(65, logic.postpone_decoding_level_for_test()); - } - { - test::ScopedFieldTrials field_trial( - "WebRTC-Audio-NetEqPostponeDecodingAfterExpand/Disabled/"); - DecisionLogic logic(kFsHz, kOutputSizeSamples, false, &decoder_database, - packet_buffer, delay_manager.get(), - &buffer_level_filter, &tick_timer); - EXPECT_EQ(0, logic.postpone_decoding_level_for_test()); - } - { - test::ScopedFieldTrials field_trial( - "WebRTC-Audio-NetEqPostponeDecodingAfterExpand/Enabled--1/"); - DecisionLogic logic(kFsHz, kOutputSizeSamples, false, &decoder_database, - packet_buffer, delay_manager.get(), - &buffer_level_filter, &tick_timer); - EXPECT_EQ(kDefaultPostponeDecodingLevel, - logic.postpone_decoding_level_for_test()); - } - { - test::ScopedFieldTrials field_trial( - "WebRTC-Audio-NetEqPostponeDecodingAfterExpand/Enabled-101/"); - DecisionLogic logic(kFsHz, kOutputSizeSamples, false, &decoder_database, - packet_buffer, delay_manager.get(), - &buffer_level_filter, &tick_timer); - EXPECT_EQ(kDefaultPostponeDecodingLevel, - logic.postpone_decoding_level_for_test()); - } -} - // TODO(hlundin): Write more tests. } // namespace webrtc diff --git a/modules/audio_coding/neteq/neteq_unittest.cc b/modules/audio_coding/neteq/neteq_unittest.cc index b2aa578133..5568154967 100644 --- a/modules/audio_coding/neteq/neteq_unittest.cc +++ b/modules/audio_coding/neteq/neteq_unittest.cc @@ -458,16 +458,16 @@ TEST_F(NetEqDecodingTest, MAYBE_TestBitExactness) { webrtc::test::ResourcePath("audio_coding/neteq_universal_new", "rtp"); const std::string output_checksum = - PlatformChecksum("0c6dc227f781c81a229970f8fceda1a012498cba", - "15c4a2202877a414515e218bdb7992f0ad53e5af", "not used", - "0c6dc227f781c81a229970f8fceda1a012498cba", - "25fc4c863caa499aa447a5b8d059f5452cbcc500"); + PlatformChecksum("9652cee1d6771a9cbfda821ae1bbdb41b0dd4dee", + "54a7e32f163663c0af35bf70bf45cefc24ad62ef", "not used", + "9652cee1d6771a9cbfda821ae1bbdb41b0dd4dee", + "79496b0a1ef0a3824f3ee04789748a461bed643f"); const std::string network_stats_checksum = - PlatformChecksum("4b2370f5c794741d2a46be5c7935c66ef3fb53e9", - "e339cb2adf5ab3dfc21cb7205d670a34751e8336", "not used", - "4b2370f5c794741d2a46be5c7935c66ef3fb53e9", - "4b2370f5c794741d2a46be5c7935c66ef3fb53e9"); + PlatformChecksum("c59b1f9f282b6d8733cdff975e3c150ca4a47d51", + "bca95e565996a4ffd6e2ac15736e08843bdca93b", "not used", + "c59b1f9f282b6d8733cdff975e3c150ca4a47d51", + "c59b1f9f282b6d8733cdff975e3c150ca4a47d51"); DecodeAndCompare(input_rtp_file, output_checksum, network_stats_checksum, FLAG_gen_ref);