Using send time instead of system clock in quality scaler.

Bug: webrtc:10365
Change-Id: Ia0c0df462ecec5bd94c3eda8039831b70d088790
Reviewed-on: https://webrtc-review.googlesource.com/c/125185
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26947}
This commit is contained in:
Sebastian Jansson
2019-03-01 15:40:49 +01:00
committed by Commit Bot
parent e64a688167
commit b678940d3a
4 changed files with 24 additions and 21 deletions

View File

@ -93,19 +93,19 @@ class QualityScalerTest : public ::testing::Test,
for (int i = 0; i < kFramerate * 5; ++i) {
switch (scale_direction) {
case kKeepScaleAboveLowQp:
qs_->ReportQp(kLowQp + 1);
qs_->ReportQp(kLowQp + 1, 0);
break;
case kScaleUp:
qs_->ReportQp(kLowQp);
qs_->ReportQp(kLowQp, 0);
break;
case kScaleDown:
qs_->ReportDroppedFrameByMediaOpt();
break;
case kKeepScaleAtHighQp:
qs_->ReportQp(kHighQp);
qs_->ReportQp(kHighQp, 0);
break;
case kScaleDownAboveHighQp:
qs_->ReportQp(kHighQp + 1);
qs_->ReportQp(kHighQp + 1, 0);
break;
}
}
@ -150,7 +150,7 @@ TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsFramedrop) {
for (int i = 0; i < kFramerate * 5; ++i) {
qs_->ReportDroppedFrameByMediaOpt();
qs_->ReportDroppedFrameByMediaOpt();
qs_->ReportQp(kHighQp);
qs_->ReportQp(kHighQp, 0);
}
});
EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
@ -162,7 +162,7 @@ TEST_P(QualityScalerTest, DoesNotDownscaleAfterHalfFramedrop) {
DO_SYNC(q_, {
for (int i = 0; i < kFramerate * 5; ++i) {
qs_->ReportDroppedFrameByMediaOpt();
qs_->ReportQp(kHighQp);
qs_->ReportQp(kHighQp, 0);
}
});
EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
@ -176,7 +176,7 @@ TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsIfFieldTrialEnabled) {
for (int i = 0; i < kFramerate * 5; ++i) {
qs_->ReportDroppedFrameByMediaOpt();
qs_->ReportDroppedFrameByEncoder();
qs_->ReportQp(kHighQp);
qs_->ReportQp(kHighQp, 0);
}
});
EXPECT_EQ(kDownScaleExpected, observer_->event.Wait(kDefaultTimeoutMs));
@ -213,13 +213,13 @@ TEST_P(QualityScalerTest, DoesNotScaleUntilEnoughFramesObserved) {
DO_SYNC(q_, {
// Not enough frames to make a decision.
for (int i = 0; i < kMinFramesNeededToScale - 1; ++i) {
qs_->ReportQp(kLowQp);
qs_->ReportQp(kLowQp, 0);
}
});
EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
DO_SYNC(q_, {
// Send 1 more. Enough frames observed, should result in an adapt request.
qs_->ReportQp(kLowQp);
qs_->ReportQp(kLowQp, 0);
});
EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
EXPECT_EQ(0, observer_->adapt_down_events_);
@ -228,7 +228,7 @@ TEST_P(QualityScalerTest, DoesNotScaleUntilEnoughFramesObserved) {
// Samples should be cleared after an adapt request.
DO_SYNC(q_, {
// Not enough frames to make a decision.
qs_->ReportQp(kLowQp);
qs_->ReportQp(kLowQp, 0);
});
EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs));
EXPECT_EQ(0, observer_->adapt_down_events_);
@ -238,7 +238,7 @@ TEST_P(QualityScalerTest, DoesNotScaleUntilEnoughFramesObserved) {
TEST_P(QualityScalerTest, ScalesDownAndBackUpWithMinFramesNeeded) {
DO_SYNC(q_, {
for (int i = 0; i < kMinFramesNeededToScale; ++i) {
qs_->ReportQp(kHighQp + 1);
qs_->ReportQp(kHighQp + 1, 0);
}
});
EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));
@ -247,7 +247,7 @@ TEST_P(QualityScalerTest, ScalesDownAndBackUpWithMinFramesNeeded) {
// Samples cleared.
DO_SYNC(q_, {
for (int i = 0; i < kMinFramesNeededToScale; ++i) {
qs_->ReportQp(kLowQp);
qs_->ReportQp(kLowQp, 0);
}
});
EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs));