summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decodframe.c
diff options
context:
space:
mode:
authorDmitry Kovalev <dkovalev@google.com>2013-08-23 11:05:17 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-08-23 11:05:17 -0700
commit1c159c470ac3cb5e3612653d94f59d9b405b4a2e (patch)
tree6fb88124ec06c7e98e7f3b40839f064ba01e53c4 /vp9/decoder/vp9_decodframe.c
parentbef320aa0759c37e99e8dfd657e740fc58160835 (diff)
parent3c426572074ee10bf28832ea33e5dbef0a86a7fb (diff)
downloadlibvpx-1c159c470ac3cb5e3612653d94f59d9b405b4a2e.tar
libvpx-1c159c470ac3cb5e3612653d94f59d9b405b4a2e.tar.gz
libvpx-1c159c470ac3cb5e3612653d94f59d9b405b4a2e.tar.bz2
libvpx-1c159c470ac3cb5e3612653d94f59d9b405b4a2e.zip
Merge "Checking scale factors on access."
Diffstat (limited to 'vp9/decoder/vp9_decodframe.c')
-rw-r--r--vp9/decoder/vp9_decodframe.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c
index 7f7d66b4b..ea61d871f 100644
--- a/vp9/decoder/vp9_decodframe.c
+++ b/vp9/decoder/vp9_decodframe.c
@@ -202,11 +202,15 @@ static void set_ref(VP9D_COMP *pbi, int i, int mi_row, int mi_col) {
VP9_COMMON *const cm = &pbi->common;
MACROBLOCKD *const xd = &pbi->mb;
MB_MODE_INFO *const mbmi = &xd->mode_info_context->mbmi;
- const int ref = mbmi->ref_frame[i] - 1;
-
+ const int ref = mbmi->ref_frame[i] - LAST_FRAME;
const YV12_BUFFER_CONFIG *cfg = &cm->yv12_fb[cm->active_ref_idx[ref]];
- xd->scale_factor[i] = cm->active_ref_scale[ref];
- setup_pre_planes(xd, i, cfg, mi_row, mi_col, &xd->scale_factor[i]);
+ const struct scale_factors *sf = &cm->active_ref_scale[ref];
+ if (!vp9_is_valid_scale(sf))
+ vpx_internal_error(&cm->error, VPX_CODEC_UNSUP_BITSTREAM,
+ "Invalid scale factors");
+
+ xd->scale_factor[i] = *sf;
+ setup_pre_planes(xd, i, cfg, mi_row, mi_col, sf);
xd->corrupted |= cfg->corrupted;
}