From: Zoe Liu Date: Wed, 24 Aug 2016 23:14:00 +0000 (-0700) Subject: Fix a bug in calculating the compound ref frame cost X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=03a11f6ceb8f3874e9bfe4333d0228cdb2b32dd2;p=libvpx Fix a bug in calculating the compound ref frame cost The previous ext-refs experiment did not consider the cost of the 2nd reference frame on mode decision in the compound mode. With the fix, using Overall PSNR, compared to the previous ext-refs RD performance before the bug fix, all against the baseline, the improvements are: "ext-refs" before fix: lowres -5.665% midres: -4.833% "ext-refs" after fix: lowres -5.776% midres: -5.000% Improvement by the fix: lowres -0.111% midres: -0.167% Change-Id: I2eceedf2d4046b169514e049fd01baaf0bbb50c6 --- diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c index 4e0fa2c5c..ed1aba79f 100644 --- a/vp10/encoder/rdopt.c +++ b/vp10/encoder/rdopt.c @@ -9029,6 +9029,9 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi, TileDataEnc *tile_data, // to the rolling cost variable. if (comp_pred) { rate2 += ref_costs_comp[ref_frame]; +#if CONFIG_EXT_REFS + rate2 += ref_costs_comp[second_ref_frame]; +#endif // CONFIG_EXT_REFS } else { rate2 += ref_costs_single[ref_frame]; } @@ -10382,6 +10385,9 @@ void vp10_rd_pick_inter_mode_sub8x8(struct VP10_COMP *cpi, // to the rolling cost variable. if (second_ref_frame > INTRA_FRAME) { rate2 += ref_costs_comp[ref_frame]; +#if CONFIG_EXT_REFS + rate2 += ref_costs_comp[second_ref_frame]; +#endif // CONFIG_EXT_REFS } else { rate2 += ref_costs_single[ref_frame]; }