From: Dmitry Kovalev Date: Fri, 20 Sep 2013 13:08:53 +0000 (+0400) Subject: Adding best_mv[2] array instead of two variables. X-Git-Tag: v1.3.0~410^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bb5e2bf86aeaa91bd075d88d478e2356422572c0;p=libvpx Adding best_mv[2] array instead of two variables. Change-Id: I584fe50f73879f6a72fada45714ef80893b6d549 --- diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index c8d677fb9..f7d5de1f4 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -137,7 +137,7 @@ typedef struct { TX_SIZE tx_size; int_mv mv[2]; // for each reference frame used int_mv ref_mvs[MAX_REF_FRAMES][MAX_MV_REF_CANDIDATES]; - int_mv best_mv, best_second_mv; + int_mv best_mv[2]; uint8_t mode_context[MAX_REF_FRAMES]; diff --git a/vp9/encoder/vp9_bitstream.c b/vp9/encoder/vp9_bitstream.c index 622f75fe6..20dd8e175 100644 --- a/vp9/encoder/vp9_bitstream.c +++ b/vp9/encoder/vp9_bitstream.c @@ -484,17 +484,13 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) { } if (bsize < BLOCK_8X8) { - int j; - MB_PREDICTION_MODE blockmode; - int_mv blockmv; const int num_4x4_blocks_wide = num_4x4_blocks_wide_lookup[bsize]; const int num_4x4_blocks_high = num_4x4_blocks_high_lookup[bsize]; int idx, idy; for (idy = 0; idy < 2; idy += num_4x4_blocks_high) { for (idx = 0; idx < 2; idx += num_4x4_blocks_wide) { - j = idy * 2 + idx; - blockmode = x->partition_info->bmi[j].mode; - blockmv = m->bmi[j].as_mv[0]; + const int j = idy * 2 + idx; + const MB_PREDICTION_MODE blockmode = x->partition_info->bmi[j].mode; write_sb_mv_ref(bc, blockmode, mv_ref_p); ++cm->counts.inter_mode[mi->mode_context[rf]] [inter_mode_offset(blockmode)]; @@ -503,14 +499,12 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) { #ifdef ENTROPY_STATS active_section = 11; #endif - vp9_encode_mv(cpi, bc, &blockmv.as_mv, &mi->best_mv.as_mv, - nmvc, allow_hp); - - if (mi->ref_frame[1] > INTRA_FRAME) - vp9_encode_mv(cpi, bc, - &m->bmi[j].as_mv[1].as_mv, - &mi->best_second_mv.as_mv, - nmvc, allow_hp); + vp9_encode_mv(cpi, bc, &m->bmi[j].as_mv[0].as_mv, + &mi->best_mv[0].as_mv, nmvc, allow_hp); + + if (has_second_ref(mi)) + vp9_encode_mv(cpi, bc, &m->bmi[j].as_mv[1].as_mv, + &mi->best_mv[1].as_mv, nmvc, allow_hp); } } } @@ -518,12 +512,12 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) { #ifdef ENTROPY_STATS active_section = 5; #endif - vp9_encode_mv(cpi, bc, &mi->mv[0].as_mv, &mi->best_mv.as_mv, - nmvc, allow_hp); + vp9_encode_mv(cpi, bc, &mi->mv[0].as_mv, + &mi->best_mv[0].as_mv, nmvc, allow_hp); - if (mi->ref_frame[1] > INTRA_FRAME) - vp9_encode_mv(cpi, bc, &mi->mv[1].as_mv, &mi->best_second_mv.as_mv, - nmvc, allow_hp); + if (has_second_ref(mi)) + vp9_encode_mv(cpi, bc, &mi->mv[1].as_mv, + &mi->best_mv[1].as_mv, nmvc, allow_hp); } } } diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index ee938bda9..c61b01130 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -438,8 +438,8 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, if (rf2 > 0) best_second_mv.as_int = mbmi->ref_mvs[rf2][0].as_int; } - mbmi->best_mv.as_int = best_mv.as_int; - mbmi->best_second_mv.as_int = best_second_mv.as_int; + mbmi->best_mv[0].as_int = best_mv.as_int; + mbmi->best_mv[1].as_int = best_second_mv.as_int; vp9_update_nmv_count(cpi, x, &best_mv, &best_second_mv); }