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:
committed by
Commit Bot
parent
6b7bf6ab0c
commit
d3a780b476
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
};
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user