diff options
author | Scott LaVarnway <slavarnway@google.com> | 2015-06-16 12:28:45 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-06-16 12:28:46 +0000 |
commit | a41fe749a87a7359b054eae37eb441263e15c794 (patch) | |
tree | 95f7cc564b89dd8166cb435c213c47d09b4bc455 /vp9/decoder | |
parent | e820ca6973f53815608d44854eebf380cc17f2f6 (diff) | |
parent | c9976b32b4397360192caef74a1bfee026d52b9c (diff) | |
download | libvpx-a41fe749a87a7359b054eae37eb441263e15c794.tar libvpx-a41fe749a87a7359b054eae37eb441263e15c794.tar.gz libvpx-a41fe749a87a7359b054eae37eb441263e15c794.tar.bz2 libvpx-a41fe749a87a7359b054eae37eb441263e15c794.zip |
Merge "Update use_prev_frame_mvs flag in decoder."
Diffstat (limited to 'vp9/decoder')
-rw-r--r-- | vp9/decoder/vp9_decodeframe.c | 6 | ||||
-rw-r--r-- | vp9/decoder/vp9_decodemv.c | 21 |
2 files changed, 15 insertions, 12 deletions
diff --git a/vp9/decoder/vp9_decodeframe.c b/vp9/decoder/vp9_decodeframe.c index 6954721d2..d309b800f 100644 --- a/vp9/decoder/vp9_decodeframe.c +++ b/vp9/decoder/vp9_decodeframe.c @@ -1648,6 +1648,7 @@ static size_t read_uncompressed_header(VP9Decoder *pbi, size_t sz; cm->last_frame_type = cm->frame_type; + cm->last_intra_only = cm->intra_only; if (vp9_rb_read_literal(rb, 2) != VP9_FRAME_MARKER) vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM, @@ -1996,8 +1997,9 @@ void vp9_decode_frame(VP9Decoder *pbi, cm->use_prev_frame_mvs = !cm->error_resilient_mode && cm->width == cm->last_width && cm->height == cm->last_height && - !cm->intra_only && - cm->last_show_frame; + !cm->last_intra_only && + cm->last_show_frame && + (cm->last_frame_type != KEY_FRAME); vp9_setup_block_planes(xd, cm->subsampling_x, cm->subsampling_y); diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c index d34926dc6..8a8d8ddd8 100644 --- a/vp9/decoder/vp9_decodemv.c +++ b/vp9/decoder/vp9_decodemv.c @@ -599,19 +599,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; + } } } } |