]> granicus.if.org Git - libvpx/commitdiff
Fix mode index use case in vp9_pick_inter_mode
authorJingning Han <jingning@google.com>
Thu, 30 Oct 2014 02:30:12 +0000 (19:30 -0700)
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>
Thu, 30 Oct 2014 18:10:06 +0000 (11:10 -0700)
This improves coding performance of speed -5 and -6 by 0.6%,
respectively.

Change-Id: Ic5a7746a88c73285f0b14333d35dc16b02152c25

vp9/encoder/vp9_pickmode.c

index 9b7663fdeaf1f7b540c6d59b3a15edf2525dfc93..4309b41cf38289d6747cad70bc3463dee2efde89 100644 (file)
@@ -604,6 +604,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
     for (this_mode = NEARESTMV; this_mode <= NEWMV; ++this_mode) {
       int rate_mv = 0;
       int mode_rd_thresh;
+      int mode_index = mode_idx[ref_frame][INTER_OFFSET(this_mode)];
 
       if (const_motion[ref_frame] && this_mode == NEARMV)
         continue;
@@ -611,10 +612,9 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
       if (!(cpi->sf.inter_mode_mask[bsize] & (1 << this_mode)))
         continue;
 
-      mode_rd_thresh =
-          rd_threshes[mode_idx[ref_frame][INTER_OFFSET(this_mode)]];
+      mode_rd_thresh = rd_threshes[mode_index];
       if (rd_less_than_thresh(best_rdc.rdcost, mode_rd_thresh,
-                              rd_thresh_freq_fact[this_mode]))
+                              rd_thresh_freq_fact[mode_index]))
         continue;
 
       if (this_mode == NEWMV) {
@@ -837,12 +837,12 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
 
   if (is_inter_block(mbmi))
     vp9_update_rd_thresh_fact(tile_data->thresh_freq_fact,
-                              cpi->sf.adaptive_rd_thresh, bsize,
-                              mode_idx[ref_frame][INTER_OFFSET(mbmi->mode)]);
+                            cpi->sf.adaptive_rd_thresh, bsize,
+                            mode_idx[best_ref_frame][INTER_OFFSET(mbmi->mode)]);
   else
     vp9_update_rd_thresh_fact(tile_data->thresh_freq_fact,
                               cpi->sf.adaptive_rd_thresh, bsize,
-                              mode_idx[ref_frame][mbmi->mode]);
+                              mode_idx[INTRA_FRAME][mbmi->mode]);
 
   *rd_cost = best_rdc;
 }