OLD | NEW |
1 /* | 1 /* |
2 Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 const int allow_hp = cm->allow_high_precision_mv; | 428 const int allow_hp = cm->allow_high_precision_mv; |
429 | 429 |
430 int_mv nearestmv[2], nearmv[2]; | 430 int_mv nearestmv[2], nearmv[2]; |
431 int inter_mode_ctx, ref, is_compound; | 431 int inter_mode_ctx, ref, is_compound; |
432 | 432 |
433 read_ref_frames(cm, xd, r, mbmi->segment_id, mbmi->ref_frame); | 433 read_ref_frames(cm, xd, r, mbmi->segment_id, mbmi->ref_frame); |
434 is_compound = has_second_ref(mbmi); | 434 is_compound = has_second_ref(mbmi); |
435 | 435 |
436 for (ref = 0; ref < 1 + is_compound; ++ref) { | 436 for (ref = 0; ref < 1 + is_compound; ++ref) { |
437 const MV_REFERENCE_FRAME frame = mbmi->ref_frame[ref]; | 437 const MV_REFERENCE_FRAME frame = mbmi->ref_frame[ref]; |
| 438 const int ref_idx = frame - LAST_FRAME; |
| 439 if (cm->frame_refs[ref_idx].sf.x_scale_fp == REF_INVALID_SCALE || |
| 440 cm->frame_refs[ref_idx].sf.y_scale_fp == REF_INVALID_SCALE ) |
| 441 vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM, |
| 442 "Reference frame has invalid dimensions"); |
438 vp9_find_mv_refs(cm, xd, tile, mi, frame, mbmi->ref_mvs[frame], | 443 vp9_find_mv_refs(cm, xd, tile, mi, frame, mbmi->ref_mvs[frame], |
439 mi_row, mi_col); | 444 mi_row, mi_col); |
440 } | 445 } |
441 | 446 |
442 inter_mode_ctx = mbmi->mode_context[mbmi->ref_frame[0]]; | 447 inter_mode_ctx = mbmi->mode_context[mbmi->ref_frame[0]]; |
443 | 448 |
444 if (vp9_segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { | 449 if (vp9_segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { |
445 mbmi->mode = ZEROMV; | 450 mbmi->mode = ZEROMV; |
446 if (bsize < BLOCK_8X8) { | 451 if (bsize < BLOCK_8X8) { |
447 vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM, | 452 vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM, |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 } | 538 } |
534 | 539 |
535 void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd, | 540 void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd, |
536 const TileInfo *const tile, | 541 const TileInfo *const tile, |
537 int mi_row, int mi_col, vp9_reader *r) { | 542 int mi_row, int mi_col, vp9_reader *r) { |
538 if (frame_is_intra_only(cm)) | 543 if (frame_is_intra_only(cm)) |
539 read_intra_frame_mode_info(cm, xd, mi_row, mi_col, r); | 544 read_intra_frame_mode_info(cm, xd, mi_row, mi_col, r); |
540 else | 545 else |
541 read_inter_frame_mode_info(cm, xd, tile, mi_row, mi_col, r); | 546 read_inter_frame_mode_info(cm, xd, tile, mi_row, mi_col, r); |
542 } | 547 } |
OLD | NEW |