From 43a1cf620f7c26f04d2c17772e25c94ac826577f Mon Sep 17 00:00:00 2001 From: Harish Mahendrakar Date: Wed, 11 May 2016 15:26:19 +0530 Subject: [PATCH] DO NOT MERGE. AVC decoder: init structures Memset few structures to zero to handle error clips Bug: 27907656 Change-Id: I517841fc8b6d674f7e4e3ebaf60dd2e42f1152ae --- decoder/ih264d_api.c | 19 +++++++++++++++++++ decoder/ih264d_utils.c | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/decoder/ih264d_api.c b/decoder/ih264d_api.c index 3ec6ffa..40ce3c6 100644 --- a/decoder/ih264d_api.c +++ b/decoder/ih264d_api.c @@ -1426,6 +1426,25 @@ void ih264d_init_decoder(void * ps_dec_params) dec_struct_t * ps_dec = (dec_struct_t *)ps_dec_params; dec_slice_params_t *ps_cur_slice; pocstruct_t *ps_prev_poc, *ps_cur_poc; + WORD32 size; + + size = sizeof(dec_err_status_t); + memset(ps_dec->ps_dec_err_status, 0, size); + + size = sizeof(sei); + memset(ps_dec->ps_sei, 0, size); + + size = sizeof(dpb_commands_t); + memset(ps_dec->ps_dpb_cmds, 0, size); + + size = sizeof(dec_bit_stream_t); + memset(ps_dec->ps_bitstrm, 0, size); + + size = sizeof(dec_slice_params_t); + memset(ps_dec->ps_cur_slice, 0, size); + + size = MAX(sizeof(dec_seq_params_t), sizeof(dec_pic_params_t)); + memset(ps_dec->pv_scratch_sps_pps, 0, size); diff --git a/decoder/ih264d_utils.c b/decoder/ih264d_utils.c index a4896c0..a36cbda 100644 --- a/decoder/ih264d_utils.c +++ b/decoder/ih264d_utils.c @@ -1057,7 +1057,26 @@ WORD32 ih264d_init_pic(dec_struct_t *ps_dec, ps_dec->u2_pic_ht); if(ret != OK) return ret; + { + WORD32 size; + size = sizeof(pred_info_t) * 2 * 32; + memset(ps_dec->ps_pred, 0 , size); + size = sizeof(disp_mgr_t); + memset(ps_dec->pv_disp_buf_mgr, 0 , size); + + size = sizeof(buf_mgr_t) + ithread_get_mutex_lock_size(); + memset(ps_dec->pv_pic_buf_mgr, 0, size); + + size = sizeof(ctxt_inc_mb_info_t); + memset(ps_dec->ps_left_mb_ctxt_info, 0, size); + + size = (sizeof(neighbouradd_t) << 2); + memset(ps_dec->ps_left_mvpred_addr, 0 ,size); + + size = sizeof(buf_mgr_t) + ithread_get_mutex_lock_size(); + memset(ps_dec->pv_mv_buf_mgr, 0, size); + } /* In shared mode, set all of them as used by display */ if(ps_dec->u4_share_disp_buf == 1) {