| Index: source/libvpx/vp9/decoder/vp9_decodemv.c
|
| ===================================================================
|
| --- source/libvpx/vp9/decoder/vp9_decodemv.c (revision 292608)
|
| +++ source/libvpx/vp9/decoder/vp9_decodemv.c (working copy)
|
| @@ -223,7 +223,6 @@
|
| fr = vp9_read_tree(r, vp9_mv_fp_tree, class0 ? mvcomp->class0_fp[d]
|
| : mvcomp->fp);
|
|
|
| -
|
| // High precision part (if hp is not used, the default value of the hp is 1)
|
| hp = usehp ? vp9_read(r, class0 ? mvcomp->class0_hp : mvcomp->hp)
|
| : 1;
|
| @@ -435,11 +434,16 @@
|
|
|
| for (ref = 0; ref < 1 + is_compound; ++ref) {
|
| const MV_REFERENCE_FRAME frame = mbmi->ref_frame[ref];
|
| - const int ref_idx = frame - LAST_FRAME;
|
| - if (cm->frame_refs[ref_idx].sf.x_scale_fp == REF_INVALID_SCALE ||
|
| - cm->frame_refs[ref_idx].sf.y_scale_fp == REF_INVALID_SCALE )
|
| + RefBuffer *ref_buf = &cm->frame_refs[frame - LAST_FRAME];
|
| + xd->block_refs[ref] = ref_buf;
|
| + if ((!vp9_is_valid_scale(&ref_buf->sf)))
|
| vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
|
| "Reference frame has invalid dimensions");
|
| + if (ref_buf->buf->corrupted)
|
| + vpx_internal_error(&cm->error, VPX_CODEC_CORRUPT_FRAME,
|
| + "Block reference is corrupt");
|
| + vp9_setup_pre_planes(xd, ref, ref_buf->buf, mi_row, mi_col,
|
| + &ref_buf->sf);
|
| vp9_find_mv_refs(cm, xd, tile, mi, frame, mbmi->ref_mvs[frame],
|
| mi_row, mi_col);
|
| }
|
|
|