ref: 64348d9f8d82050f799058c3f2fc75a7a1599c5b
parent: f7b46d8c5eff52a12a81b8b1f5eb2319278b3c76
author: Jingning Han <[email protected]>
date: Wed Oct 29 15:30:12 EDT 2014
Fix mode index use case in vp9_pick_inter_mode This improves coding performance of speed -5 and -6 by 0.6%, respectively. Change-Id: Ic5a7746a88c73285f0b14333d35dc16b02152c25
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -604,6 +604,7 @@
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 @@
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 @@
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;
}