| Index: source/libvpx/test/vp9_lossless_test.cc
|
| ===================================================================
|
| --- source/libvpx/test/vp9_lossless_test.cc (revision 281795)
|
| +++ source/libvpx/test/vp9_lossless_test.cc (working copy)
|
| @@ -36,6 +36,17 @@
|
| SetMode(encoding_mode_);
|
| }
|
|
|
| + virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
|
| + ::libvpx_test::Encoder *encoder) {
|
| + if (video->frame() == 1) {
|
| + // Only call Control if quantizer > 0 to verify that using quantizer
|
| + // alone will activate lossless
|
| + if (cfg_.rc_max_quantizer > 0 || cfg_.rc_min_quantizer > 0) {
|
| + encoder->Control(VP9E_SET_LOSSLESS, 1);
|
| + }
|
| + }
|
| + }
|
| +
|
| virtual void BeginPassHook(unsigned int /*pass*/) {
|
| psnr_ = kMaxPsnr;
|
| nframes_ = 0;
|
| @@ -91,5 +102,24 @@
|
| EXPECT_GE(psnr_lossless, kMaxPsnr);
|
| }
|
|
|
| +TEST_P(LosslessTestLarge, TestLossLessEncodingCtrl) {
|
| + const vpx_rational timebase = { 33333333, 1000000000 };
|
| + cfg_.g_timebase = timebase;
|
| + cfg_.rc_target_bitrate = 2000;
|
| + cfg_.g_lag_in_frames = 25;
|
| + // Intentionally set Q > 0, to make sure control can be used to activate
|
| + // lossless
|
| + cfg_.rc_min_quantizer = 10;
|
| + cfg_.rc_max_quantizer = 20;
|
| +
|
| + init_flags_ = VPX_CODEC_USE_PSNR;
|
| +
|
| + libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
|
| + timebase.den, timebase.num, 0, 10);
|
| + ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
|
| + const double psnr_lossless = GetMinPsnr();
|
| + EXPECT_GE(psnr_lossless, kMaxPsnr);
|
| +}
|
| +
|
| VP9_INSTANTIATE_TEST_CASE(LosslessTestLarge, ALL_TEST_MODES);
|
| } // namespace
|
|
|