]> granicus.if.org Git - libvpx/commitdiff
Disable zeroblock forcing for lossless coding mode
authorYaowu Xu <yaowu@google.com>
Fri, 8 Nov 2013 17:49:08 +0000 (09:49 -0800)
committerYaowu Xu <yaowu@google.com>
Fri, 8 Nov 2013 18:32:44 +0000 (10:32 -0800)
This to make sure that prediction residue always get coded in lossless
mode.

This commit also fixed lossless unit test

Change-Id: I537726ee55328d4e4cf0a0196393a67e12bfcde1

test/vp9_lossless_test.cc
vp9/encoder/vp9_rdopt.c

index 441cc44da5b3b20e624588c089220bcc34307ed3..30a3118eb618fc575e3e8c9ca93be53038aa183d 100644 (file)
@@ -35,7 +35,7 @@ class LossLessTest : public ::libvpx_test::EncoderTest,
   }
 
   virtual void BeginPassHook(unsigned int /*pass*/) {
-    psnr_ = 0.0;
+    psnr_ = kMaxPsnr;
     nframes_ = 0;
   }
 
@@ -65,9 +65,9 @@ TEST_P(LossLessTest, TestLossLessEncoding) {
   init_flags_ = VPX_CODEC_USE_PSNR;
 
   // intentionally changed the dimension for better testing coverage
-  libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 356, 284,
+  libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                      timebase.den, timebase.num, 0, 30);
-
+  ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
   const double psnr_lossless = GetMinPsnr();
   EXPECT_GE(psnr_lossless, kMaxPsnr);
 }
index 993919e5bd905e6dbcddfe75165fdfb35befc1b2..e49789e0cbc89e793a9d6a6276449d05e54f2143 100644 (file)
@@ -609,7 +609,7 @@ static void block_yrd_txfm(int plane, int block, BLOCK_SIZE plane_bsize,
 
   // TODO(jingning): temporarily enabled only for luma component
   rd = MIN(rd1, rd2);
-  if (plane == 0)
+  if (!xd->lossless && plane == 0)
     x->zcoeff_blk[tx_size][block] = rd1 > rd2 || !xd->plane[plane].eobs[block];
 
   args->this_rate += args->rate;