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

Unified Diff: webrtc/media/base/videoadapter_unittest.cc

Issue 2555483005: Add ability to scale to arbitrary factors (Closed)
Patch Set: Created 4 years 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
« webrtc/media/base/videoadapter.cc ('K') | « webrtc/media/base/videoadapter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/base/videoadapter_unittest.cc
diff --git a/webrtc/media/base/videoadapter_unittest.cc b/webrtc/media/base/videoadapter_unittest.cc
index 7f660ef37f2f3086ff438b782e04ff4e9dcceec5..fedd26488966a7a63bbeeeaea7184a3599ba0cc2 100644
--- a/webrtc/media/base/videoadapter_unittest.cc
+++ b/webrtc/media/base/videoadapter_unittest.cc
@@ -577,9 +577,9 @@ TEST_F(VideoAdapterTest, TestOnOutputFormatRequest) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(640, cropped_width_);
- EXPECT_EQ(400, cropped_height_);
+ EXPECT_EQ(384, cropped_height_);
EXPECT_EQ(640 * 3 / 8, out_width_);
- EXPECT_EQ(400 * 3 / 8, out_height_);
+ EXPECT_EQ(384 * 3 / 8, out_height_);
// Switch back up. Expect adapt.
format.width = 320;
@@ -721,9 +721,9 @@ TEST_F(VideoAdapterTest, TestOnResolutionRequestInSmallSteps) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(1280, cropped_width_);
- EXPECT_EQ(720, cropped_height_);
+ EXPECT_EQ(704, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(264, out_height_);
// Adapt up one step.
adapter_.OnResolutionRequest(rtc::Optional<int>(),
@@ -781,9 +781,9 @@ TEST_F(VideoAdapterTest, TestOnResolutionRequestInLargeSteps) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(1280, cropped_width_);
- EXPECT_EQ(720, cropped_height_);
+ EXPECT_EQ(704, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(264, out_height_);
adapter_.OnResolutionRequest(rtc::Optional<int>(),
rtc::Optional<int>(960 * 720));
@@ -803,9 +803,9 @@ TEST_F(VideoAdapterTest, TestOnOutputFormatRequestCapsMaxResolution) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(1280, cropped_width_);
- EXPECT_EQ(720, cropped_height_);
+ EXPECT_EQ(704, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(264, out_height_);
VideoFormat new_format(640, 360, 0, FOURCC_I420);
adapter_.OnOutputFormatRequest(new_format);
@@ -813,9 +813,9 @@ TEST_F(VideoAdapterTest, TestOnOutputFormatRequestCapsMaxResolution) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(1280, cropped_width_);
- EXPECT_EQ(720, cropped_height_);
+ EXPECT_EQ(704, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(264, out_height_);
adapter_.OnResolutionRequest(rtc::Optional<int>(),
rtc::Optional<int>(960 * 720));
@@ -843,9 +843,9 @@ TEST_F(VideoAdapterTest, TestOnResolutionRequestReset) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(1280, cropped_width_);
- EXPECT_EQ(720, cropped_height_);
+ EXPECT_EQ(704, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(264, out_height_);
adapter_.OnResolutionRequest(rtc::Optional<int>(), rtc::Optional<int>());
EXPECT_TRUE(adapter_.AdaptFrameResolution(1280, 720, 0,
@@ -878,9 +878,9 @@ TEST_F(VideoAdapterTest, TestCroppingWithResolutionRequest) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(640, cropped_width_);
- EXPECT_EQ(360, cropped_height_);
+ EXPECT_EQ(368, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(276, out_height_);
// Adapt down one step more.
adapter_.OnResolutionRequest(rtc::Optional<int>(480 * 270 - 1),
@@ -902,9 +902,9 @@ TEST_F(VideoAdapterTest, TestCroppingWithResolutionRequest) {
&cropped_width_, &cropped_height_,
&out_width_, &out_height_));
EXPECT_EQ(640, cropped_width_);
- EXPECT_EQ(360, cropped_height_);
+ EXPECT_EQ(368, cropped_height_);
EXPECT_EQ(480, out_width_);
- EXPECT_EQ(270, out_height_);
+ EXPECT_EQ(276, out_height_);
// Adapt up one step more.
adapter_.OnResolutionRequest(rtc::Optional<int>(),
@@ -946,9 +946,45 @@ TEST_F(VideoAdapterTest, TestCroppingOddResolution) {
// Instead of getting the exact aspect ratio with cropped resolution 640x360,
// the resolution should be adjusted to get a perfect scale factor instead.
EXPECT_EQ(640, cropped_width_);
- EXPECT_EQ(368, cropped_height_);
+ EXPECT_EQ(384, cropped_height_);
EXPECT_EQ(120, out_width_);
- EXPECT_EQ(69, out_height_);
+ EXPECT_EQ(72, out_height_);
}
+TEST_F(VideoAdapterTest, TestScaleToReallySmall) {
+ // Ask for 960x720 (4:3 aspect) with 3/32 scaling.
+ const int w = 960;
+ const int h = 720;
+ adapter_.OnOutputFormatRequest(VideoFormat(w, h, 0, FOURCC_I420));
+ adapter_.OnResolutionRequest(rtc::Optional<int>(w * h * 3 / 32 * 3 / 32),
+ rtc::Optional<int>());
+
+ // Send 1280x720 (16:9 aspect).
+ EXPECT_TRUE(adapter_.AdaptFrameResolution(1280, 720, 0, &cropped_width_,
+ &cropped_height_, &out_width_,
+ &out_height_));
+
+ EXPECT_EQ(1024, cropped_width_);
+ EXPECT_EQ(640, cropped_height_);
+ EXPECT_EQ(96, out_width_);
+ EXPECT_EQ(60, out_height_);
+}
+
+TEST_F(VideoAdapterTest, TestScaleFromReallyBig) {
+ // Ask for 7680x4320 (16:9 aspect) with 1/16 scaling.
+ const int w = 7680;
+ const int h = 4320;
+ adapter_.OnOutputFormatRequest(VideoFormat(w, h, 0, FOURCC_I420));
+ adapter_.OnResolutionRequest(rtc::Optional<int>(w * h * 1 / 16 * 1 / 16),
+ rtc::Optional<int>());
+
+ // Send 8K (16:9 aspect).
+ EXPECT_TRUE(adapter_.AdaptFrameResolution(
+ w, h, 0, &cropped_width_, &cropped_height_, &out_width_, &out_height_));
+
+ EXPECT_EQ(7680, cropped_width_);
+ EXPECT_EQ(4288, cropped_height_);
+ EXPECT_EQ(480, out_width_);
+ EXPECT_EQ(268, out_height_);
+}
} // namespace cricket
« webrtc/media/base/videoadapter.cc ('K') | « webrtc/media/base/videoadapter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698