diff options
author | Jingning Han <jingning@google.com> | 2013-11-05 09:01:05 -0800 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2013-11-05 09:01:05 -0800 |
commit | 4fc8320f4cd5ab61631416fe98894d8fc1a3c8df (patch) | |
tree | 31a2bd5dffffa18380ae6ced213d2cffdeae5c7b /vp9/encoder | |
parent | a8260a38e034e306bb718702e31b5e8defaa077e (diff) | |
parent | c2217f22381fa869d1aed2d3543edff70cce88c3 (diff) | |
download | libvpx-4fc8320f4cd5ab61631416fe98894d8fc1a3c8df.tar libvpx-4fc8320f4cd5ab61631416fe98894d8fc1a3c8df.tar.gz libvpx-4fc8320f4cd5ab61631416fe98894d8fc1a3c8df.tar.bz2 libvpx-4fc8320f4cd5ab61631416fe98894d8fc1a3c8df.zip |
Merge "Avoid mv cost check for invalid mv values"
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_rdopt.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 05928e040..d03295590 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -1871,12 +1871,14 @@ static void rd_check_segment_txsize(VP9_COMP *cpi, MACROBLOCK *x, mi_buf_restore(x, orig_src, orig_pre); } - if (has_second_rf && this_mode == NEWMV && - mbmi->interp_filter == EIGHTTAP) { + if (has_second_rf) { if (seg_mvs[i][mbmi->ref_frame[1]].as_int == INVALID_MV || seg_mvs[i][mbmi->ref_frame[0]].as_int == INVALID_MV) continue; + } + if (has_second_rf && this_mode == NEWMV && + mbmi->interp_filter == EIGHTTAP) { // adjust src pointers mi_buf_shift(x, i); if (cpi->sf.comp_inter_joint_search_thresh <= bsize) { @@ -2660,6 +2662,12 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, int orig_dst_stride[MAX_MB_PLANE]; int rs = 0; + if (is_comp_pred) { + if (frame_mv[refs[0]].as_int == INVALID_MV || + frame_mv[refs[1]].as_int == INVALID_MV) + return INT64_MAX; + } + if (this_mode == NEWMV) { int rate_mv; if (is_comp_pred) { @@ -2678,9 +2686,6 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, &mbmi->ref_mvs[refs[1]][0].as_mv, x->nmvjointcost, x->mvcost, MV_COST_WEIGHT); } - if (frame_mv[refs[0]].as_int == INVALID_MV || - frame_mv[refs[1]].as_int == INVALID_MV) - return INT64_MAX; *rate2 += rate_mv; } else { int_mv tmp_mv; |