Introduce injectable NetEqController interface.
This interface is implemented by the DecisionLogic class, which now contains the DelayManager and DelayPeakDetector. Bug: webrtc:11005 Change-Id: I4fb69fa359e60831cf153e41f101d5b623749380 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/155176 Reviewed-by: Minyue Li <minyue@webrtc.org> Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org> Commit-Queue: Ivo Creusen <ivoc@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29613}
This commit is contained in:
@ -50,7 +50,7 @@ class DelayManagerTest : public ::testing::Test {
|
||||
virtual void TearDown();
|
||||
void RecreateDelayManager();
|
||||
void SetPacketAudioLength(int lengt_ms);
|
||||
void InsertNextPacket();
|
||||
absl::optional<int> InsertNextPacket();
|
||||
void IncreaseTime(int inc_ms);
|
||||
|
||||
std::unique_ptr<DelayManager> dm_;
|
||||
@ -84,11 +84,10 @@ void DelayManagerTest::RecreateDelayManager() {
|
||||
dm_ = std::make_unique<DelayManager>(
|
||||
kMaxNumberOfPackets, kMinDelayMs, kDefaultHistogramQuantile,
|
||||
histogram_mode_, enable_rtx_handling_, &detector_, &tick_timer_,
|
||||
&stats_, std::move(histogram));
|
||||
std::move(histogram));
|
||||
} else {
|
||||
dm_ = DelayManager::Create(kMaxNumberOfPackets, kMinDelayMs,
|
||||
enable_rtx_handling_, &detector_, &tick_timer_,
|
||||
&stats_);
|
||||
enable_rtx_handling_, &detector_, &tick_timer_);
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,10 +96,11 @@ void DelayManagerTest::SetPacketAudioLength(int lengt_ms) {
|
||||
dm_->SetPacketAudioLength(lengt_ms);
|
||||
}
|
||||
|
||||
void DelayManagerTest::InsertNextPacket() {
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
|
||||
absl::optional<int> DelayManagerTest::InsertNextPacket() {
|
||||
auto relative_delay = dm_->Update(seq_no_, ts_, kFs);
|
||||
seq_no_ += 1;
|
||||
ts_ += kTsIncrement;
|
||||
return relative_delay;
|
||||
}
|
||||
|
||||
void DelayManagerTest::IncreaseTime(int inc_ms) {
|
||||
@ -416,11 +416,11 @@ TEST_F(DelayManagerTest, EnableRtxHandling) {
|
||||
|
||||
// Insert reordered packet.
|
||||
EXPECT_CALL(*mock_histogram_, Add(2));
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_ - 3, ts_ - 3 * kFrameSizeMs, kFs));
|
||||
dm_->Update(seq_no_ - 3, ts_ - 3 * kFrameSizeMs, kFs);
|
||||
|
||||
// Insert another reordered packet.
|
||||
EXPECT_CALL(*mock_histogram_, Add(1));
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_ - 2, ts_ - 2 * kFrameSizeMs, kFs));
|
||||
dm_->Update(seq_no_ - 2, ts_ - 2 * kFrameSizeMs, kFs);
|
||||
|
||||
// Insert the next packet in order and verify that the inter-arrival time is
|
||||
// estimated correctly.
|
||||
@ -475,7 +475,7 @@ TEST_F(DelayManagerTest, EmptyPacketsNotReported) {
|
||||
|
||||
TEST_F(DelayManagerTest, Failures) {
|
||||
// Wrong sample rate.
|
||||
EXPECT_EQ(-1, dm_->Update(0, 0, -1));
|
||||
EXPECT_EQ(absl::nullopt, dm_->Update(0, 0, -1));
|
||||
// Wrong packet size.
|
||||
EXPECT_EQ(-1, dm_->SetPacketAudioLength(0));
|
||||
EXPECT_EQ(-1, dm_->SetPacketAudioLength(-1));
|
||||
@ -550,14 +550,14 @@ TEST_F(DelayManagerTest, RelativeArrivalDelayMode) {
|
||||
|
||||
IncreaseTime(2 * kFrameSizeMs);
|
||||
EXPECT_CALL(*mock_histogram_, Add(1)); // 20ms delayed.
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
|
||||
dm_->Update(seq_no_, ts_, kFs);
|
||||
|
||||
IncreaseTime(2 * kFrameSizeMs);
|
||||
EXPECT_CALL(*mock_histogram_, Add(2)); // 40ms delayed.
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_ + 1, ts_ + kTsIncrement, kFs));
|
||||
dm_->Update(seq_no_ + 1, ts_ + kTsIncrement, kFs);
|
||||
|
||||
EXPECT_CALL(*mock_histogram_, Add(1)); // Reordered, 20ms delayed.
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
|
||||
dm_->Update(seq_no_, ts_, kFs);
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, MaxDelayHistory) {
|
||||
@ -579,20 +579,17 @@ TEST_F(DelayManagerTest, MaxDelayHistory) {
|
||||
IncreaseTime(kMaxHistoryMs + kFrameSizeMs);
|
||||
ts_ += kFs * kMaxHistoryMs / 1000;
|
||||
EXPECT_CALL(*mock_histogram_, Add(0)); // Not delayed.
|
||||
EXPECT_EQ(0, dm_->Update(seq_no_, ts_, kFs));
|
||||
dm_->Update(seq_no_, ts_, kFs);
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, RelativeArrivalDelayStatistic) {
|
||||
SetPacketAudioLength(kFrameSizeMs);
|
||||
InsertNextPacket();
|
||||
|
||||
EXPECT_EQ(absl::nullopt, InsertNextPacket());
|
||||
IncreaseTime(kFrameSizeMs);
|
||||
EXPECT_CALL(stats_, RelativePacketArrivalDelay(0));
|
||||
InsertNextPacket();
|
||||
|
||||
EXPECT_EQ(0, InsertNextPacket());
|
||||
IncreaseTime(2 * kFrameSizeMs);
|
||||
EXPECT_CALL(stats_, RelativePacketArrivalDelay(20));
|
||||
InsertNextPacket();
|
||||
|
||||
EXPECT_EQ(20, InsertNextPacket());
|
||||
}
|
||||
|
||||
TEST_F(DelayManagerTest, DecelerationTargetLevelOffset) {
|
||||
|
Reference in New Issue
Block a user