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

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