Embed Deceleration Target Level Offset Field Trial.

Bug: webrtc:10619
Change-Id: I4ef75ae03d6071bf84d2c1b6e50290ea26e83496
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/152663
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29169}
This commit is contained in:
Ruslan Burakov
2019-09-12 15:44:18 +02:00
committed by Commit Bot
parent ef85f2bdb8
commit aa5a75d5e3
3 changed files with 18 additions and 108 deletions

View File

@ -594,54 +594,17 @@ TEST_F(DelayManagerTest, RelativeArrivalDelayStatistic) {
InsertNextPacket();
}
TEST_F(DelayManagerTest, DecelerationTargetLevelOffsetFieldTrial) {
{
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Enabled-105/");
RecreateDelayManager();
EXPECT_EQ(dm_->deceleration_target_level_offset_ms().value(), 105 << 8);
}
{
// Negative number.
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Enabled--105/");
RecreateDelayManager();
EXPECT_FALSE(dm_->deceleration_target_level_offset_ms().has_value());
}
{
// Disabled.
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Disabled/");
RecreateDelayManager();
EXPECT_FALSE(dm_->deceleration_target_level_offset_ms().has_value());
}
{
// Float number.
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Enabled-105.5/");
RecreateDelayManager();
EXPECT_EQ(dm_->deceleration_target_level_offset_ms().value(), 105 << 8);
}
{
// Several numbers.
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Enabled-20-40/");
RecreateDelayManager();
EXPECT_EQ(dm_->deceleration_target_level_offset_ms().value(), 20 << 8);
}
}
TEST_F(DelayManagerTest, DecelerationTargetLevelOffset) {
// Border value where 1/4 target buffer level meets
// WebRTC-Audio-NetEqDecelerationTargetLevelOffset.
constexpr int kBoarderTargetLevel = 100 * 4;
SetPacketAudioLength(kFrameSizeMs);
// Deceleration target level offset follows the value hardcoded in
// delay_manager.cc.
constexpr int kDecelerationTargetLevelOffsetMs = 85 << 8; // In Q8.
// Border value where |x * 3/4 = target_level - x|.
constexpr int kBoarderTargetLevel = kDecelerationTargetLevelOffsetMs * 4;
{
// Test that for a low target level, default behaviour is intact.
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Enabled-100/");
const int target_level_ms = ((kBoarderTargetLevel - 1) << 8) / kFrameSizeMs;
RecreateDelayManager();
SetPacketAudioLength(kFrameSizeMs);
const int target_level_ms = kBoarderTargetLevel / kFrameSizeMs - 1;
int lower, higher; // In Q8.
dm_->BufferLimits(target_level_ms, &lower, &higher);
@ -653,32 +616,14 @@ TEST_F(DelayManagerTest, DecelerationTargetLevelOffset) {
{
// Test that for the high target level, |lower| is below target level by
// fixed constant (100 ms in this Field Trial setup).
test::ScopedFieldTrials field_trial(
"WebRTC-Audio-NetEqDecelerationTargetLevelOffset/Enabled-100/");
const int target_level_ms = ((kBoarderTargetLevel + 1) << 8) / kFrameSizeMs;
RecreateDelayManager();
SetPacketAudioLength(kFrameSizeMs);
// fixed |kOffset|.
const int target_level_ms = kBoarderTargetLevel / kFrameSizeMs + 1;
int lower, higher; // In Q8.
dm_->BufferLimits(target_level_ms, &lower, &higher);
EXPECT_EQ(target_level_ms - ((100 << 8) / kFrameSizeMs), lower);
EXPECT_EQ(target_level_ms, higher);
}
{
// Test that for the high target level, without Field Trial the behaviour
// will remain the same.
const int target_level_ms = ((kBoarderTargetLevel + 1) << 8) / kFrameSizeMs;
RecreateDelayManager();
SetPacketAudioLength(kFrameSizeMs);
int lower, higher; // In Q8.
dm_->BufferLimits(target_level_ms, &lower, &higher);
// Default behaviour of taking 75% of target level.
EXPECT_EQ(target_level_ms * 3 / 4, lower);
EXPECT_EQ(target_level_ms - kDecelerationTargetLevelOffsetMs / kFrameSizeMs,
lower);
EXPECT_EQ(target_level_ms, higher);
}
}