shithub: libvpx

Download patch

ref: e728678c5061b01ab3484d676c42d562fe70c32b
parent: 225cdef665d14df1b1178f3e735bd5d939e8ab49
author: Jingning Han <jingning@google.com>
date: Tue Dec 9 07:09:36 EST 2014

Refactor update_state_rt

Update the frame motion vector only if previous frame motion vector
is needed for next frame reference motion vector.

Change-Id: Ica50f9d7b46ad4f815bba0d9e30f5546df29546f

--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -1356,11 +1356,8 @@
   const int bh = num_8x8_blocks_high_lookup[mi->mbmi.sb_type];
   const int x_mis = MIN(bw, cm->mi_cols - mi_col);
   const int y_mis = MIN(bh, cm->mi_rows - mi_row);
-  MV_REF *const frame_mvs =
-      cm->cur_frame->mvs + mi_row * cm->mi_cols + mi_col;
-  int w, h;
 
-  *(xd->mi[0].src_mi) = ctx->mic;
+  xd->mi[0] = ctx->mic;
   xd->mi[0].src_mi = &xd->mi[0];
 
   if (seg->enabled && cpi->oxcf.aq_mode) {
@@ -1381,7 +1378,6 @@
 
   if (is_inter_block(mbmi)) {
     vp9_update_mv_count(td);
-
     if (cm->interp_filter == SWITCHABLE) {
       const int pred_ctx = vp9_get_pred_context_switchable_interp(xd);
       ++td->counts->switchable_interp[pred_ctx][mbmi->interp_filter];
@@ -1388,14 +1384,20 @@
     }
   }
 
-  for (h = 0; h < y_mis; ++h) {
-    MV_REF *const frame_mv = frame_mvs + h * cm->mi_cols;
-    for (w = 0; w < x_mis; ++w) {
-      MV_REF *const mv = frame_mv + w;
-      mv->ref_frame[0] = mi->src_mi->mbmi.ref_frame[0];
-      mv->ref_frame[1] = mi->src_mi->mbmi.ref_frame[1];
-      mv->mv[0].as_int = mi->src_mi->mbmi.mv[0].as_int;
-      mv->mv[1].as_int = mi->src_mi->mbmi.mv[1].as_int;
+  if (cm->use_prev_frame_mvs) {
+    MV_REF *const frame_mvs =
+        cm->cur_frame->mvs + mi_row * cm->mi_cols + mi_col;
+    int w, h;
+
+    for (h = 0; h < y_mis; ++h) {
+      MV_REF *const frame_mv = frame_mvs + h * cm->mi_cols;
+      for (w = 0; w < x_mis; ++w) {
+        MV_REF *const mv = frame_mv + w;
+        mv->ref_frame[0] = mi->src_mi->mbmi.ref_frame[0];
+        mv->ref_frame[1] = mi->src_mi->mbmi.ref_frame[1];
+        mv->mv[0].as_int = mi->src_mi->mbmi.mv[0].as_int;
+        mv->mv[1].as_int = mi->src_mi->mbmi.mv[1].as_int;
+      }
     }
   }