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

Side by Side Diff: source/libvpx/test/error_resilience_test.cc

Issue 1339513003: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « source/libvpx/test/dct16x16_test.cc ('k') | source/libvpx/test/frame_size_tests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebM 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
11 #include "third_party/googletest/src/include/gtest/gtest.h" 11 #include "third_party/googletest/src/include/gtest/gtest.h"
12 #include "test/codec_factory.h" 12 #include "test/codec_factory.h"
13 #include "test/encode_test_driver.h" 13 #include "test/encode_test_driver.h"
14 #include "test/i420_video_source.h" 14 #include "test/i420_video_source.h"
15 #include "test/util.h" 15 #include "test/util.h"
16 16
17 namespace { 17 namespace {
18 18
19 const int kMaxErrorFrames = 12; 19 const int kMaxErrorFrames = 12;
20 const int kMaxDroppableFrames = 12; 20 const int kMaxDroppableFrames = 12;
21 21
22 class ErrorResilienceTestLarge : public ::libvpx_test::EncoderTest, 22 class ErrorResilienceTestLarge : public ::libvpx_test::EncoderTest,
23 public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> { 23 public ::libvpx_test::CodecTestWith2Params<libvpx_test::TestMode, bool> {
24 protected: 24 protected:
25 ErrorResilienceTestLarge() 25 ErrorResilienceTestLarge()
26 : EncoderTest(GET_PARAM(0)), 26 : EncoderTest(GET_PARAM(0)),
27 svc_support_(GET_PARAM(2)),
27 psnr_(0.0), 28 psnr_(0.0),
28 nframes_(0), 29 nframes_(0),
29 mismatch_psnr_(0.0), 30 mismatch_psnr_(0.0),
30 mismatch_nframes_(0), 31 mismatch_nframes_(0),
31 encoding_mode_(GET_PARAM(1)) { 32 encoding_mode_(GET_PARAM(1)) {
32 Reset(); 33 Reset();
33 } 34 }
34 35
35 virtual ~ErrorResilienceTestLarge() {} 36 virtual ~ErrorResilienceTestLarge() {}
36 37
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 } 187 }
187 188
188 unsigned int GetMismatchFrames() { 189 unsigned int GetMismatchFrames() {
189 return mismatch_nframes_; 190 return mismatch_nframes_;
190 } 191 }
191 192
192 void SetPatternSwitch(int frame_switch) { 193 void SetPatternSwitch(int frame_switch) {
193 pattern_switch_ = frame_switch; 194 pattern_switch_ = frame_switch;
194 } 195 }
195 196
197 bool svc_support_;
198
196 private: 199 private:
197 double psnr_; 200 double psnr_;
198 unsigned int nframes_; 201 unsigned int nframes_;
199 unsigned int error_nframes_; 202 unsigned int error_nframes_;
200 unsigned int droppable_nframes_; 203 unsigned int droppable_nframes_;
201 unsigned int pattern_switch_; 204 unsigned int pattern_switch_;
202 double mismatch_psnr_; 205 double mismatch_psnr_;
203 unsigned int mismatch_nframes_; 206 unsigned int mismatch_nframes_;
204 unsigned int error_frames_[kMaxErrorFrames]; 207 unsigned int error_frames_[kMaxErrorFrames];
205 unsigned int droppable_frames_[kMaxDroppableFrames]; 208 unsigned int droppable_frames_[kMaxDroppableFrames];
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 << psnr_resilience_mismatch << "\n"; 298 << psnr_resilience_mismatch << "\n";
296 EXPECT_GT(psnr_resilience_mismatch, 20.0); 299 EXPECT_GT(psnr_resilience_mismatch, 20.0);
297 #endif 300 #endif
298 } 301 }
299 302
300 // Check for successful decoding and no encoder/decoder mismatch 303 // Check for successful decoding and no encoder/decoder mismatch
301 // if we lose (i.e., drop before decoding) the enhancement layer frames for a 304 // if we lose (i.e., drop before decoding) the enhancement layer frames for a
302 // two layer temporal pattern. The base layer does not predict from the top 305 // two layer temporal pattern. The base layer does not predict from the top
303 // layer, so successful decoding is expected. 306 // layer, so successful decoding is expected.
304 TEST_P(ErrorResilienceTestLarge, 2LayersDropEnhancement) { 307 TEST_P(ErrorResilienceTestLarge, 2LayersDropEnhancement) {
308 // This test doesn't run if SVC is not supported.
309 if (!svc_support_)
310 return;
311
305 const vpx_rational timebase = { 33333333, 1000000000 }; 312 const vpx_rational timebase = { 33333333, 1000000000 };
306 cfg_.g_timebase = timebase; 313 cfg_.g_timebase = timebase;
307 cfg_.rc_target_bitrate = 500; 314 cfg_.rc_target_bitrate = 500;
308 cfg_.g_lag_in_frames = 0; 315 cfg_.g_lag_in_frames = 0;
309 316
310 cfg_.rc_end_usage = VPX_CBR; 317 cfg_.rc_end_usage = VPX_CBR;
311 // 2 Temporal layers, no spatial layers, CBR mode. 318 // 2 Temporal layers, no spatial layers, CBR mode.
312 cfg_.ss_number_layers = 1; 319 cfg_.ss_number_layers = 1;
313 cfg_.ts_number_layers = 2; 320 cfg_.ts_number_layers = 2;
314 cfg_.ts_rate_decimator[0] = 2; 321 cfg_.ts_rate_decimator[0] = 2;
(...skipping 25 matching lines...) Expand all
340 EXPECT_EQ(GetMismatchFrames(), (unsigned int) 0); 347 EXPECT_EQ(GetMismatchFrames(), (unsigned int) 0);
341 348
342 // Reset previously set of error/droppable frames. 349 // Reset previously set of error/droppable frames.
343 Reset(); 350 Reset();
344 } 351 }
345 352
346 // Check for successful decoding and no encoder/decoder mismatch 353 // Check for successful decoding and no encoder/decoder mismatch
347 // for a two layer temporal pattern, where at some point in the 354 // for a two layer temporal pattern, where at some point in the
348 // sequence, the LAST ref is not used anymore. 355 // sequence, the LAST ref is not used anymore.
349 TEST_P(ErrorResilienceTestLarge, 2LayersNoRefLast) { 356 TEST_P(ErrorResilienceTestLarge, 2LayersNoRefLast) {
357 // This test doesn't run if SVC is not supported.
358 if (!svc_support_)
359 return;
360
350 const vpx_rational timebase = { 33333333, 1000000000 }; 361 const vpx_rational timebase = { 33333333, 1000000000 };
351 cfg_.g_timebase = timebase; 362 cfg_.g_timebase = timebase;
352 cfg_.rc_target_bitrate = 500; 363 cfg_.rc_target_bitrate = 500;
353 cfg_.g_lag_in_frames = 0; 364 cfg_.g_lag_in_frames = 0;
354 365
355 cfg_.rc_end_usage = VPX_CBR; 366 cfg_.rc_end_usage = VPX_CBR;
356 // 2 Temporal layers, no spatial layers, CBR mode. 367 // 2 Temporal layers, no spatial layers, CBR mode.
357 cfg_.ss_number_layers = 1; 368 cfg_.ss_number_layers = 1;
358 cfg_.ts_number_layers = 2; 369 cfg_.ts_number_layers = 2;
359 cfg_.ts_rate_decimator[0] = 2; 370 cfg_.ts_rate_decimator[0] = 2;
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 ASSERT_GE(effective_datarate_[j], cfg_.ts_target_bitrate[j] * 0.75) 583 ASSERT_GE(effective_datarate_[j], cfg_.ts_target_bitrate[j] * 0.75)
573 << " The datarate for the file is lower than target by too much, " 584 << " The datarate for the file is lower than target by too much, "
574 "for layer: " << j; 585 "for layer: " << j;
575 ASSERT_LE(effective_datarate_[j], cfg_.ts_target_bitrate[j] * 1.25) 586 ASSERT_LE(effective_datarate_[j], cfg_.ts_target_bitrate[j] * 1.25)
576 << " The datarate for the file is greater than target by too much, " 587 << " The datarate for the file is greater than target by too much, "
577 "for layer: " << j; 588 "for layer: " << j;
578 } 589 }
579 } 590 }
580 } 591 }
581 592
582 VP8_INSTANTIATE_TEST_CASE(ErrorResilienceTestLarge, ONE_PASS_TEST_MODES); 593 VP8_INSTANTIATE_TEST_CASE(ErrorResilienceTestLarge, ONE_PASS_TEST_MODES,
594 ::testing::Values(true));
583 VP8_INSTANTIATE_TEST_CASE(ErrorResilienceTestLargeCodecControls, 595 VP8_INSTANTIATE_TEST_CASE(ErrorResilienceTestLargeCodecControls,
584 ONE_PASS_TEST_MODES); 596 ONE_PASS_TEST_MODES);
585 VP9_INSTANTIATE_TEST_CASE(ErrorResilienceTestLarge, ONE_PASS_TEST_MODES); 597 VP9_INSTANTIATE_TEST_CASE(ErrorResilienceTestLarge, ONE_PASS_TEST_MODES,
586 VP10_INSTANTIATE_TEST_CASE(ErrorResilienceTestLarge, ONE_PASS_TEST_MODES); 598 ::testing::Values(true));
599 // SVC-related tests don't run for VP10 since SVC is not supported.
600 VP10_INSTANTIATE_TEST_CASE(ErrorResilienceTestLarge, ONE_PASS_TEST_MODES,
601 ::testing::Values(false));
587 } // namespace 602 } // namespace
OLDNEW
« no previous file with comments | « source/libvpx/test/dct16x16_test.cc ('k') | source/libvpx/test/frame_size_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698