From 058046c8808f6ea462bd57898276c9ac343aa46a Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Mon, 13 Aug 2018 16:52:11 -0700 Subject: Fix potential encoder failure case in tpl model When the group of picture runs over 24 in length, skip the use of temporal dependency model, since the model assumes maximum 25 lookahead frames. Change-Id: I6386dd33bcdaf1229fae978130b4c3b43d071918 --- vp9/encoder/vp9_encodeframe.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'vp9') diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index cb5cb1901..8aa8660d8 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -3640,6 +3640,8 @@ int get_rdmult_delta(VP9_COMP *cpi, BLOCK_SIZE bsize, int mi_row, int mi_col, if (cpi->common.show_frame) return orig_rdmult; + if (cpi->twopass.gf_group.index >= MAX_LAG_BUFFERS) return orig_rdmult; + for (row = mi_row; row < mi_row + mi_high; ++row) { for (col = mi_col; col < mi_col + mi_wide; ++col) { TplDepStats *this_stats = &tpl_stats[row * tpl_stride + col]; @@ -5450,6 +5452,7 @@ static void encode_frame_internal(VP9_COMP *cpi) { MACROBLOCK *const x = &td->mb; VP9_COMMON *const cm = &cpi->common; MACROBLOCKD *const xd = &x->e_mbd; + const int gf_group_index = cpi->twopass.gf_group.index; xd->mi = cm->mi_grid_visible; xd->mi[0] = cm->mi; @@ -5516,7 +5519,8 @@ static void encode_frame_internal(VP9_COMP *cpi) { if (sf->partition_search_type == SOURCE_VAR_BASED_PARTITION) source_var_based_partition_search_method(cpi); - } else if (cpi->twopass.gf_group.index && cpi->sf.enable_tpl_model) { + } else if (gf_group_index && gf_group_index < MAX_LAG_BUFFERS && + cpi->sf.enable_tpl_model) { TplDepFrame *tpl_frame = &cpi->tpl_stats[cpi->twopass.gf_group.index]; TplDepStats *tpl_stats = tpl_frame->tpl_stats_ptr; -- cgit v1.2.3