summaryrefslogtreecommitdiff
path: root/vp9/encoder
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2013-11-05 09:01:05 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-11-05 09:01:05 -0800
commit4fc8320f4cd5ab61631416fe98894d8fc1a3c8df (patch)
tree31a2bd5dffffa18380ae6ced213d2cffdeae5c7b /vp9/encoder
parenta8260a38e034e306bb718702e31b5e8defaa077e (diff)
parentc2217f22381fa869d1aed2d3543edff70cce88c3 (diff)
downloadlibvpx-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.c15
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;