Update use_prev_frame_mvs flag in decoder.
Added check to see if last frame was all intra. This will eliminate two checks in find_mv_refs_idx(). Also, do not update the frame mvs if the current frame is all intra. This improved performance on material with frequent intra-only frames. Change-Id: I44a4042c3670ab0d38439d565062a0e2a1ba9d1e
This commit is contained in:
@@ -596,19 +596,20 @@ void vp9_read_mode_info(VP9Decoder *const pbi, MACROBLOCKD *xd,
|
||||
MV_REF* frame_mvs = cm->cur_frame->mvs + mi_row * cm->mi_cols + mi_col;
|
||||
int w, h;
|
||||
|
||||
if (frame_is_intra_only(cm))
|
||||
if (frame_is_intra_only(cm)) {
|
||||
read_intra_frame_mode_info(cm, xd, mi_row, mi_col, r);
|
||||
else
|
||||
} else {
|
||||
read_inter_frame_mode_info(pbi, xd, tile, mi_row, mi_col, r);
|
||||
|
||||
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->mbmi.ref_frame[0];
|
||||
mv->ref_frame[1] = mi->mbmi.ref_frame[1];
|
||||
mv->mv[0].as_int = mi->mbmi.mv[0].as_int;
|
||||
mv->mv[1].as_int = mi->mbmi.mv[1].as_int;
|
||||
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->mbmi.ref_frame[0];
|
||||
mv->ref_frame[1] = mi->mbmi.ref_frame[1];
|
||||
mv->mv[0].as_int = mi->mbmi.mv[0].as_int;
|
||||
mv->mv[1].as_int = mi->mbmi.mv[1].as_int;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user