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

Side by Side Diff: webrtc/modules/video_coding/utility/quality_scaler_unittest.cc

Issue 2078943002: Rewrite CreateBlackFrame in webrtcvideoengine. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 24 matching lines...) Expand all
35 class QualityScalerTest : public ::testing::Test { 35 class QualityScalerTest : public ::testing::Test {
36 protected: 36 protected:
37 enum ScaleDirection { 37 enum ScaleDirection {
38 kKeepScaleAtHighQp, 38 kKeepScaleAtHighQp,
39 kScaleDown, 39 kScaleDown,
40 kScaleDownAboveHighQp, 40 kScaleDownAboveHighQp,
41 kScaleUp 41 kScaleUp
42 }; 42 };
43 43
44 QualityScalerTest() { 44 QualityScalerTest() {
45 input_frame_ = rtc::scoped_refptr<VideoFrameBuffer>( 45 input_frame_ = I420Buffer::Create(kWidth, kHeight);
46 new rtc::RefCountedObject<I420Buffer>(kWidth, kHeight));
47 qs_.Init(kLowQpThreshold, kHighQp, 0, 0, 0, kFramerate); 46 qs_.Init(kLowQpThreshold, kHighQp, 0, 0, 0, kFramerate);
48 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height()); 47 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height());
49 } 48 }
50 49
51 bool TriggerScale(ScaleDirection scale_direction) { 50 bool TriggerScale(ScaleDirection scale_direction) {
52 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height()); 51 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height());
53 int initial_width = qs_.GetScaledResolution().width; 52 int initial_width = qs_.GetScaledResolution().width;
54 for (int i = 0; i < kFramerate * kNumSeconds; ++i) { 53 for (int i = 0; i < kFramerate * kNumSeconds; ++i) {
55 switch (scale_direction) { 54 switch (scale_direction) {
56 case kScaleUp: 55 case kScaleUp:
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 } 211 }
213 212
214 TEST_F(QualityScalerTest, ContinuouslyDownscalesByHalfDimensionsAndBackUp) { 213 TEST_F(QualityScalerTest, ContinuouslyDownscalesByHalfDimensionsAndBackUp) {
215 ContinuouslyDownscalesByHalfDimensionsAndBackUp(); 214 ContinuouslyDownscalesByHalfDimensionsAndBackUp();
216 } 215 }
217 216
218 TEST_F(QualityScalerTest, 217 TEST_F(QualityScalerTest,
219 ContinuouslyDownscalesOddResolutionsByHalfDimensionsAndBackUp) { 218 ContinuouslyDownscalesOddResolutionsByHalfDimensionsAndBackUp) {
220 const int kOddWidth = 517; 219 const int kOddWidth = 517;
221 const int kOddHeight = 1239; 220 const int kOddHeight = 1239;
222 input_frame_ = rtc::scoped_refptr<VideoFrameBuffer>( 221 input_frame_ = I420Buffer::Create(kOddWidth, kOddHeight);
223 new rtc::RefCountedObject<I420Buffer>(kOddWidth, kOddHeight));
224 ContinuouslyDownscalesByHalfDimensionsAndBackUp(); 222 ContinuouslyDownscalesByHalfDimensionsAndBackUp();
225 } 223 }
226 224
227 void QualityScalerTest::DoesNotDownscaleFrameDimensions(int width, int height) { 225 void QualityScalerTest::DoesNotDownscaleFrameDimensions(int width, int height) {
228 input_frame_ = rtc::scoped_refptr<VideoFrameBuffer>( 226 input_frame_ = I420Buffer::Create(width, height);
229 new rtc::RefCountedObject<I420Buffer>(width, height));
230 227
231 for (int i = 0; i < kFramerate * kNumSeconds; ++i) { 228 for (int i = 0; i < kFramerate * kNumSeconds; ++i) {
232 qs_.ReportDroppedFrame(); 229 qs_.ReportDroppedFrame();
233 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height()); 230 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height());
234 ASSERT_EQ(input_frame_->width(), qs_.GetScaledResolution().width) 231 ASSERT_EQ(input_frame_->width(), qs_.GetScaledResolution().width)
235 << "Unexpected scale of minimal-size frame."; 232 << "Unexpected scale of minimal-size frame.";
236 } 233 }
237 } 234 }
238 235
239 TEST_F(QualityScalerTest, DoesNotDownscaleFrom1PxWidth) { 236 TEST_F(QualityScalerTest, DoesNotDownscaleFrom1PxWidth) {
(...skipping 15 matching lines...) Expand all
255 252
256 TEST_F(QualityScalerTest, DoesNotDownscaleBelow2xDefaultMinDimensionsHeight) { 253 TEST_F(QualityScalerTest, DoesNotDownscaleBelow2xDefaultMinDimensionsHeight) {
257 DoesNotDownscaleFrameDimensions( 254 DoesNotDownscaleFrameDimensions(
258 1000, 2 * kMinDownscaleDimension - 1); 255 1000, 2 * kMinDownscaleDimension - 1);
259 } 256 }
260 257
261 TEST_F(QualityScalerTest, DownscaleToVgaOnLowInitialBitrate) { 258 TEST_F(QualityScalerTest, DownscaleToVgaOnLowInitialBitrate) {
262 static const int kWidth720p = 1280; 259 static const int kWidth720p = 1280;
263 static const int kHeight720p = 720; 260 static const int kHeight720p = 720;
264 static const int kInitialBitrateKbps = 300; 261 static const int kInitialBitrateKbps = 300;
265 input_frame_ = rtc::scoped_refptr<VideoFrameBuffer>( 262 input_frame_ = I420Buffer::Create(kWidth720p, kHeight720p);
266 new rtc::RefCountedObject<I420Buffer>(kWidth720p, kHeight720p));
267 qs_.Init(kLowQpThreshold, kDisabledBadQpThreshold, kInitialBitrateKbps, 263 qs_.Init(kLowQpThreshold, kDisabledBadQpThreshold, kInitialBitrateKbps,
268 kWidth720p, kHeight720p, kFramerate); 264 kWidth720p, kHeight720p, kFramerate);
269 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height()); 265 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height());
270 int init_width = qs_.GetScaledResolution().width; 266 int init_width = qs_.GetScaledResolution().width;
271 int init_height = qs_.GetScaledResolution().height; 267 int init_height = qs_.GetScaledResolution().height;
272 EXPECT_EQ(640, init_width); 268 EXPECT_EQ(640, init_width);
273 EXPECT_EQ(360, init_height); 269 EXPECT_EQ(360, init_height);
274 } 270 }
275 271
276 TEST_F(QualityScalerTest, DownscaleToQvgaOnLowerInitialBitrate) { 272 TEST_F(QualityScalerTest, DownscaleToQvgaOnLowerInitialBitrate) {
277 static const int kWidth720p = 1280; 273 static const int kWidth720p = 1280;
278 static const int kHeight720p = 720; 274 static const int kHeight720p = 720;
279 static const int kInitialBitrateKbps = 200; 275 static const int kInitialBitrateKbps = 200;
280 input_frame_ = rtc::scoped_refptr<VideoFrameBuffer>( 276 input_frame_ = I420Buffer::Create(kWidth720p, kHeight720p);
281 new rtc::RefCountedObject<I420Buffer>(kWidth720p, kHeight720p));
282 qs_.Init(kLowQpThreshold, kDisabledBadQpThreshold, kInitialBitrateKbps, 277 qs_.Init(kLowQpThreshold, kDisabledBadQpThreshold, kInitialBitrateKbps,
283 kWidth720p, kHeight720p, kFramerate); 278 kWidth720p, kHeight720p, kFramerate);
284 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height()); 279 qs_.OnEncodeFrame(input_frame_->width(), input_frame_->height());
285 int init_width = qs_.GetScaledResolution().width; 280 int init_width = qs_.GetScaledResolution().width;
286 int init_height = qs_.GetScaledResolution().height; 281 int init_height = qs_.GetScaledResolution().height;
287 EXPECT_EQ(320, init_width); 282 EXPECT_EQ(320, init_width);
288 EXPECT_EQ(180, init_height); 283 EXPECT_EQ(180, init_height);
289 } 284 }
290 285
291 TEST_F(QualityScalerTest, DownscaleAfterMeasuredSecondsThenSlowerBackUp) { 286 TEST_F(QualityScalerTest, DownscaleAfterMeasuredSecondsThenSlowerBackUp) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 EXPECT_LT(initial_res.width, qs_.GetScaledResolution().width); 341 EXPECT_LT(initial_res.width, qs_.GetScaledResolution().width);
347 EXPECT_LT(initial_res.height, qs_.GetScaledResolution().height); 342 EXPECT_LT(initial_res.height, qs_.GetScaledResolution().height);
348 } 343 }
349 344
350 void QualityScalerTest::DownscaleEndsAt(int input_width, 345 void QualityScalerTest::DownscaleEndsAt(int input_width,
351 int input_height, 346 int input_height,
352 int end_width, 347 int end_width,
353 int end_height) { 348 int end_height) {
354 // Create a frame with 2x expected end width/height to verify that we can 349 // Create a frame with 2x expected end width/height to verify that we can
355 // scale down to expected end width/height. 350 // scale down to expected end width/height.
356 input_frame_ = rtc::scoped_refptr<VideoFrameBuffer>( 351 input_frame_ = I420Buffer::Create(input_width, input_height);
357 new rtc::RefCountedObject<I420Buffer>(input_width, input_height));
358 352
359 int last_width = input_width; 353 int last_width = input_width;
360 int last_height = input_height; 354 int last_height = input_height;
361 // Drop all frames to force-trigger downscaling. 355 // Drop all frames to force-trigger downscaling.
362 while (true) { 356 while (true) {
363 TriggerScale(kScaleDown); 357 TriggerScale(kScaleDown);
364 QualityScaler::Resolution res = qs_.GetScaledResolution(); 358 QualityScaler::Resolution res = qs_.GetScaledResolution();
365 if (last_width == res.width) { 359 if (last_width == res.width) {
366 EXPECT_EQ(last_height, res.height); 360 EXPECT_EQ(last_height, res.height);
367 EXPECT_EQ(end_width, res.width); 361 EXPECT_EQ(end_width, res.width);
(...skipping 15 matching lines...) Expand all
383 377
384 TEST_F(QualityScalerTest, DownscalesFrom1280x720To320x180) { 378 TEST_F(QualityScalerTest, DownscalesFrom1280x720To320x180) {
385 DownscaleEndsAt(1280, 720, 320, 180); 379 DownscaleEndsAt(1280, 720, 320, 180);
386 } 380 }
387 381
388 TEST_F(QualityScalerTest, DoesntDownscaleInitialQvga) { 382 TEST_F(QualityScalerTest, DoesntDownscaleInitialQvga) {
389 DownscaleEndsAt(320, 180, 320, 180); 383 DownscaleEndsAt(320, 180, 320, 180);
390 } 384 }
391 385
392 } // namespace webrtc 386 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698