Cleanup NetEqPostponeDecodingAfterExpand field trial.

Change-Id: Ie96e9b35ced4b6ca8daa78f1fa80816386a6643b
Bug: webrtc:9289
Reviewed-on: https://webrtc-review.googlesource.com/c/124127
Commit-Queue: Jakob Ivarsson‎ <jakobi@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26899}
This commit is contained in:
Jakob Ivarsson 2019-02-28 14:30:21 +01:00 committed by Commit Bot
parent 6b7bf6ab0c
commit d3a780b476
5 changed files with 31 additions and 118 deletions

View File

@ -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<rtc::RefCountedObject<ADFactory>> factory(
new rtc::RefCountedObject<ADFactory>);
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}},

View File

@ -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<size_t>(
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;
}

View File

@ -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<TickTimer::Countdown> timescale_countdown_;
int num_consecutive_expands_;
const int postpone_decoding_level_;
RTC_DISALLOW_COPY_AND_ASSIGN(DecisionLogic);
};

View File

@ -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<MockAudioDecoderFactory>, 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

View File

@ -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);