Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Unified Diff: webrtc/modules/video_coding/utility/quality_scaler_unittest.cc

Issue 1880103002: Revert of Make QualityScaler more responsive to downgrades. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/video_coding/utility/quality_scaler.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/video_coding/utility/quality_scaler_unittest.cc
diff --git a/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc b/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc
index 72e9db405edf74ecc84b065db63d5fe7aade9993..a5e3219f7059e283fe429fe4ea445009502c5323 100644
--- a/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc
+++ b/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc
@@ -27,11 +27,6 @@
static const int kMaxQp = 56;
static const int kDisabledBadQpThreshold = kMaxQp + 1;
static const int kLowInitialBitrateKbps = 300;
-// These values need to be in sync with corresponding constants
-// in quality_scaler.cc
-static const int kMeasureSecondsDownscale = 3;
-static const int kMeasureSecondsFastUpscale = 2;
-static const int kMeasureSecondsUpscale = 5;
} // namespace
class QualityScalerTest : public ::testing::Test {
@@ -56,7 +51,8 @@
input_frame_.CreateEmptyFrame(kWidth, kHeight, kWidth, kHalfWidth,
kHalfWidth);
qs_.Init(kMaxQp / QualityScaler::kDefaultLowQpDenominator, kHighQp, false,
- 0, 0, 0, kFramerate);
+ 0, 0, 0);
+ qs_.ReportFramerate(kFramerate);
qs_.OnEncodeFrame(input_frame_);
}
@@ -108,8 +104,7 @@
int initial_framerate);
void VerifyQualityAdaptation(int initial_framerate,
- int seconds_downscale,
- int seconds_upscale,
+ int seconds,
bool expect_spatial_resize,
bool expect_framerate_reduction);
@@ -303,19 +298,18 @@
void QualityScalerTest::VerifyQualityAdaptation(
int initial_framerate,
- int seconds_downscale,
- int seconds_upscale,
+ int seconds,
bool expect_spatial_resize,
bool expect_framerate_reduction) {
qs_.Init(kMaxQp / QualityScaler::kDefaultLowQpDenominator,
- kDisabledBadQpThreshold, true, 0, 0, 0, initial_framerate);
+ kDisabledBadQpThreshold, true, 0, 0, 0);
qs_.OnEncodeFrame(input_frame_);
int init_width = qs_.GetScaledResolution().width;
int init_height = qs_.GetScaledResolution().height;
// Test reducing framerate by dropping frame continuously.
QualityScalerTest::Resolution res =
- TriggerResolutionChange(kDropFrame, seconds_downscale, initial_framerate);
+ TriggerResolutionChange(kDropFrame, seconds, initial_framerate);
if (expect_framerate_reduction) {
EXPECT_LT(res.framerate, initial_framerate);
@@ -333,40 +327,35 @@
}
// The "seconds * 1.5" is to ensure spatial resolution to recover.
- // For example, in 6 seconds test, framerate reduction happens in the first
- // 3 seconds from 30fps to 15fps and causes the buffer size to be half of the
- // original one. Then it will take only 45 samples to downscale (twice in 90
+ // For example, in 10 seconds test, framerate reduction happens in the first
+ // 5 seconds from 30fps to 15fps and causes the buffer size to be half of the
+ // original one. Then it will take only 75 samples to downscale (twice in 150
// samples). So to recover the resolution changes, we need more than 10
- // seconds (i.e, seconds_upscale * 1.5). This is because the framerate
- // increases before spatial size recovers, so it will take 150 samples to
- // recover spatial size (300 for twice).
- res = TriggerResolutionChange(kReportLowQP, seconds_upscale * 1.5,
- initial_framerate);
+ // seconds (i.e, seconds * 1.5). This is because the framerate increases
+ // before spatial size recovers, so it will take 150 samples to recover
+ // spatial size (300 for twice).
+ res = TriggerResolutionChange(kReportLowQP, seconds * 1.5, initial_framerate);
EXPECT_EQ(-1, res.framerate);
EXPECT_EQ(init_width, res.width);
EXPECT_EQ(init_height, res.height);
}
-// In 3 seconds test, only framerate adjusting should happen and 5 second
-// upscaling duration, only a framerate adjusting should happen.
+// In 5 seconds test, only framerate adjusting should happen.
TEST_F(QualityScalerTest, ChangeFramerateOnly) {
- VerifyQualityAdaptation(kFramerate, kMeasureSecondsDownscale,
- kMeasureSecondsUpscale, false, true);
-}
-
-// In 6 seconds test, framerate adjusting and scaling are both
+ VerifyQualityAdaptation(kFramerate, 5, false, true);
+}
+
+// In 10 seconds test, framerate adjusting and scaling are both
// triggered, it shows that scaling would happen after framerate
// adjusting.
TEST_F(QualityScalerTest, ChangeFramerateAndSpatialSize) {
- VerifyQualityAdaptation(kFramerate, kMeasureSecondsDownscale * 2,
- kMeasureSecondsUpscale * 2, true, true);
+ VerifyQualityAdaptation(kFramerate, 10, true, true);
}
// When starting from a low framerate, only spatial size will be changed.
TEST_F(QualityScalerTest, ChangeSpatialSizeOnly) {
qs_.ReportFramerate(kFramerate >> 1);
- VerifyQualityAdaptation(kFramerate >> 1, kMeasureSecondsDownscale * 2,
- kMeasureSecondsUpscale * 2, true, false);
+ VerifyQualityAdaptation(kFramerate >> 1, 10, true, false);
}
TEST_F(QualityScalerTest, DoesNotDownscaleBelow2xDefaultMinDimensionsWidth) {
@@ -382,76 +371,12 @@
TEST_F(QualityScalerTest, DownscaleToVgaOnLowInitialBitrate) {
qs_.Init(kMaxQp / QualityScaler::kDefaultLowQpDenominator,
kDisabledBadQpThreshold, true,
- kLowInitialBitrateKbps, kWidth, kHeight, kFramerate);
+ kLowInitialBitrateKbps, kWidth, kHeight);
qs_.OnEncodeFrame(input_frame_);
int init_width = qs_.GetScaledResolution().width;
int init_height = qs_.GetScaledResolution().height;
EXPECT_LE(init_width, kWidthVga);
EXPECT_LE(init_height, kHeightVga);
-}
-
-TEST_F(QualityScalerTest, DownscaleAfterMeasuredSecondsThenSlowerBackUp) {
- QualityScalerTest::Resolution initial_res;
- qs_.Init(kMaxQp / QualityScaler::kDefaultLowQpDenominator, kHighQp, false, 0,
- kWidth, kHeight, kFramerate);
- qs_.OnEncodeFrame(input_frame_);
- initial_res.width = qs_.GetScaledResolution().width;
- initial_res.height = qs_.GetScaledResolution().height;
-
- // Should not downscale if less than kMeasureSecondsDownscale seconds passed.
- for (int i = 0; i < kFramerate * kMeasureSecondsDownscale - 1; ++i) {
- qs_.ReportQP(kHighQp + 1);
- qs_.OnEncodeFrame(input_frame_);
- }
- EXPECT_EQ(initial_res.width, qs_.GetScaledResolution().width);
- EXPECT_EQ(initial_res.height, qs_.GetScaledResolution().height);
-
- // Should downscale if more than kMeasureSecondsDownscale seconds passed (add
- // last frame).
- qs_.ReportQP(kHighQp + 1);
- qs_.OnEncodeFrame(input_frame_);
- EXPECT_GT(initial_res.width, qs_.GetScaledResolution().width);
- EXPECT_GT(initial_res.height, qs_.GetScaledResolution().height);
-
- // Should not upscale if less than kMeasureSecondsUpscale seconds passed since
- // we saw issues initially (have already gone down).
- for (int i = 0; i < kFramerate * kMeasureSecondsUpscale - 1; ++i) {
- qs_.ReportQP(kLowQp);
- qs_.OnEncodeFrame(input_frame_);
- }
- EXPECT_GT(initial_res.width, qs_.GetScaledResolution().width);
- EXPECT_GT(initial_res.height, qs_.GetScaledResolution().height);
-
- // Should upscale (back to initial) if kMeasureSecondsUpscale seconds passed
- // (add last frame).
- qs_.ReportQP(kLowQp);
- qs_.OnEncodeFrame(input_frame_);
- EXPECT_EQ(initial_res.width, qs_.GetScaledResolution().width);
- EXPECT_EQ(initial_res.height, qs_.GetScaledResolution().height);
-}
-
-TEST_F(QualityScalerTest, UpscaleQuicklyInitiallyAfterMeasuredSeconds) {
- QualityScalerTest::Resolution initial_res;
- qs_.Init(kMaxQp / QualityScaler::kDefaultLowQpDenominator, kHighQp, false,
- kLowInitialBitrateKbps, kWidth, kHeight, kFramerate);
- qs_.OnEncodeFrame(input_frame_);
- initial_res.width = qs_.GetScaledResolution().width;
- initial_res.height = qs_.GetScaledResolution().height;
-
- // Should not upscale if less than kMeasureSecondsFastUpscale seconds passed.
- for (int i = 0; i < kFramerate * kMeasureSecondsFastUpscale - 1; ++i) {
- qs_.ReportQP(kLowQp);
- qs_.OnEncodeFrame(input_frame_);
- }
- EXPECT_EQ(initial_res.width, qs_.GetScaledResolution().width);
- EXPECT_EQ(initial_res.height, qs_.GetScaledResolution().height);
-
- // Should upscale if kMeasureSecondsFastUpscale seconds passed (add last
- // frame).
- qs_.ReportQP(kLowQp);
- qs_.OnEncodeFrame(input_frame_);
- EXPECT_LT(initial_res.width, qs_.GetScaledResolution().width);
- EXPECT_LT(initial_res.height, qs_.GetScaledResolution().height);
}
void QualityScalerTest::DownscaleEndsAt(int input_width,
« no previous file with comments | « webrtc/modules/video_coding/utility/quality_scaler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698