Allow to change base minimum delay on NetEq.
This is first step to allow to set latency from client code in Chromium. Existing minimum latency hasn't been used because it can clash with video syncronization code. Bug: webrtc:10287 Change-Id: Ia38906506069a1abfa01698dc62df283fc15cfbc Reviewed-on: https://webrtc-review.googlesource.com/c/121423 Reviewed-by: Ivo Creusen <ivoc@webrtc.org> Commit-Queue: Ruslan Burakov <kuddai@google.com> Cr-Commit-Position: refs/heads/master@{#26536}
This commit is contained in:

committed by
Commit Bot

parent
d8b980464c
commit
edbea46295
@ -267,6 +267,50 @@ TEST_F(DelayManagerTest, MinDelay) {
|
||||
EXPECT_EQ(kMinDelayPackets << 8, dm_->TargetLevel());
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, BaseMinDelay) {
|
||||
const int kExpectedTarget = 5;
|
||||
const int kTimeIncrement = kExpectedTarget * kFrameSizeMs;
|
||||
SetPacketAudioLength(kFrameSizeMs);
|
||||
// First packet arrival.
|
||||
InsertNextPacket();
|
||||
// Second packet arrival.
|
||||
// Expect detector update method to be called once with inter-arrival time
|
||||
// equal to |kExpectedTarget| packet. Return true to indicate peaks found.
|
||||
EXPECT_CALL(detector_, Update(kExpectedTarget, false, _))
|
||||
.WillRepeatedly(Return(true));
|
||||
EXPECT_CALL(detector_, MaxPeakHeight())
|
||||
.WillRepeatedly(Return(kExpectedTarget));
|
||||
IncreaseTime(kTimeIncrement);
|
||||
InsertNextPacket();
|
||||
|
||||
// No limit is applied.
|
||||
EXPECT_EQ(kExpectedTarget << 8, dm_->TargetLevel());
|
||||
|
||||
int kBaseMinDelayPackets = kExpectedTarget + 2;
|
||||
int kBaseMinDelayMs = kBaseMinDelayPackets * kFrameSizeMs;
|
||||
EXPECT_TRUE(dm_->SetBaseMinimumDelay(kBaseMinDelayMs));
|
||||
EXPECT_EQ(dm_->GetBaseMinimumDelay(), kBaseMinDelayMs);
|
||||
|
||||
IncreaseTime(kTimeIncrement);
|
||||
InsertNextPacket();
|
||||
EXPECT_EQ(dm_->GetBaseMinimumDelay(), kBaseMinDelayMs);
|
||||
EXPECT_EQ(kBaseMinDelayPackets << 8, dm_->TargetLevel());
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, BaseMinDelayGreaterThanMaxDelayIsInvalid) {
|
||||
int kMaxDelayMs = 2 * kFrameSizeMs;
|
||||
int kBaseMinDelayMs = 4 * kFrameSizeMs;
|
||||
EXPECT_TRUE(dm_->SetMaximumDelay(kMaxDelayMs));
|
||||
EXPECT_FALSE(dm_->SetBaseMinimumDelay(kBaseMinDelayMs));
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, BaseMinDelayGreaterThanQ75MaxPacketsIsInvalid) {
|
||||
// .75 of |max_packets_in_buffer|, + 1 to ensure that |kBaseMinDelayMs| is
|
||||
// greater.
|
||||
int kBaseMinDelayMs = (3 * kMaxNumberOfPackets * kFrameSizeMs / 4) + 1;
|
||||
EXPECT_FALSE(dm_->SetBaseMinimumDelay(kBaseMinDelayMs));
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, UpdateReorderedPacket) {
|
||||
SetPacketAudioLength(kFrameSizeMs);
|
||||
InsertNextPacket();
|
||||
|
Reference in New Issue
Block a user