From: Yunqing Wang Date: Thu, 27 Jan 2011 16:10:53 +0000 (-0800) Subject: Merge "Refine motion vector prediction for NEWMV mode" X-Git-Tag: v0.9.6~81 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3ee4e1e79ff535751cd0bf9be7502480a69f7a0d;p=libvpx Merge "Refine motion vector prediction for NEWMV mode" --- 3ee4e1e79ff535751cd0bf9be7502480a69f7a0d diff --cc vp8/encoder/onyx_if.c index 7029cdea5,5aa22248f..93d2501fe --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@@ -4390,30 -4386,31 +4390,31 @@@ 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);