Merge "Refine motion vector prediction for NEWMV mode"
authorYunqing Wang <yunqingwang@google.com>
Thu, 27 Jan 2011 16:10:53 +0000 (08:10 -0800)
committerCode Review <code-review@webmproject.org>
Thu, 27 Jan 2011 16:10:53 +0000 (08:10 -0800)
1  2 
vp8/encoder/onyx_if.c
vp8/encoder/rdopt.c

@@@ -4390,31 -4386,32 +4390,32 @@@ static void encode_frame_to_data_rat
      }
  
      // This frame's MVs are saved and will be used in next frame's MV prediction.
+     // Last frame has one more line(add to bottom) and one more column(add to right) than cm->mip. The edge elements are initialized to 0.
      if(cm->show_frame)   //do not save for altref frame
      {
-       int mb_row;
-       int mb_col;
-       MODE_INFO *tmp = cm->mip; //point to beginning of allocated MODE_INFO arrays.
-       //static int last_video_frame = 0;
-       if(cm->frame_type != KEY_FRAME)
-       {
-         for (mb_row = 0; mb_row < cm->mb_rows+1; mb_row ++)
+         int mb_row;
+         int mb_col;
+         MODE_INFO *tmp = cm->mip; //point to beginning of allocated MODE_INFO arrays.
+         if(cm->frame_type != KEY_FRAME)
          {
-           for (mb_col = 0; mb_col < cm->mb_cols+1; mb_col ++)
-           {
-               if(tmp->mbmi.ref_frame != INTRA_FRAME)
-                 cpi->lfmv[mb_col + mb_row*(cm->mode_info_stride)].as_int = tmp->mbmi.mv.as_int;
-               cpi->lf_ref_frame_sign_bias[mb_col + mb_row*(cm->mode_info_stride)] = cm->ref_frame_sign_bias[tmp->mbmi.ref_frame];
-               cpi->lf_ref_frame[mb_col + mb_row*(cm->mode_info_stride)] = tmp->mbmi.ref_frame;
-               tmp++;
-           }
+             for (mb_row = 0; mb_row < cm->mb_rows+1; mb_row ++)
+             {
+                 for (mb_col = 0; mb_col < cm->mb_cols+1; mb_col ++)
+                 {
+                     if(tmp->mbmi.ref_frame != INTRA_FRAME)
+                         cpi->lfmv[mb_col + mb_row*(cm->mode_info_stride+1)].as_int = tmp->mbmi.mv.as_int;
+                     cpi->lf_ref_frame_sign_bias[mb_col + mb_row*(cm->mode_info_stride+1)] = cm->ref_frame_sign_bias[tmp->mbmi.ref_frame];
+                     cpi->lf_ref_frame[mb_col + mb_row*(cm->mode_info_stride+1)] = tmp->mbmi.ref_frame;
+                     tmp++;
+                 }
+             }
          }
-       }
      }
  
 -
 +    // Update the GF useage maps.
+     // Update the GF useage maps.
      // This is done after completing the compression of a frame when all modes etc. are finalized but before loop filter
      vp8_update_gf_useage_maps(cpi, cm, &cpi->mb);
  
Simple merge