diff options
author | Jessica Wagantall <jwagantall@cyngn.com> | 2016-07-07 11:51:07 -0700 |
---|---|---|
committer | Jessica Wagantall <jwagantall@cyngn.com> | 2016-07-07 14:15:04 -0700 |
commit | a76695a86559023014f495c263b111ce2bd6b473 (patch) | |
tree | bd680df3086123de70e0a839c2faee78f30f914b | |
parent | 5f7a7a986760b841fe9992585db03d958b6492cb (diff) | |
parent | cc676ebd95247646e67907ccab150fb77a847335 (diff) | |
download | android_external_libavc-a76695a86559023014f495c263b111ce2bd6b473.tar.gz android_external_libavc-a76695a86559023014f495c263b111ce2bd6b473.tar.bz2 android_external_libavc-a76695a86559023014f495c263b111ce2bd6b473.zip |
Merge remote-tracking branch 'remotes/android-6.0.1_r52' into HEAD
Ticket: CYNGNOS-3020
Change-Id: I16174755f6efba69fed299659a9a35a40922999d
-rw-r--r-- | decoder/ih264d_api.c | 46 | ||||
-rw-r--r-- | decoder/ih264d_parse_pslice.c | 9 | ||||
-rw-r--r-- | decoder/ih264d_parse_slice.c | 3 | ||||
-rw-r--r-- | decoder/ih264d_process_intra_mb.c | 2 |
4 files changed, 57 insertions, 3 deletions
diff --git a/decoder/ih264d_api.c b/decoder/ih264d_api.c index c264d9a..e2fa322 100644 --- a/decoder/ih264d_api.c +++ b/decoder/ih264d_api.c @@ -889,6 +889,43 @@ 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(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(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); + + 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); /* Free any dynamic buffers that are allocated */ ih264d_free_dynamic_bufs(ps_dec); @@ -1066,6 +1103,7 @@ void ih264d_init_decoder(void * ps_dec_params) (MAX_DISP_BUFS_NEW) * sizeof(UWORD32)); memset(ps_dec->u4_disp_buf_to_be_freed, 0, (MAX_DISP_BUFS_NEW) * sizeof(UWORD32)); + memset(ps_dec->ps_cur_slice, 0, sizeof(dec_slice_params_t)); ih264d_init_arch(ps_dec); ih264d_init_function_ptr(ps_dec); @@ -1600,6 +1638,14 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) ps_dec_ip = (ivd_video_decode_ip_t *)pv_api_ip; ps_dec_op = (ivd_video_decode_op_t *)pv_api_op; + + { + UWORD32 u4_size; + u4_size = ps_dec_op->u4_size; + memset(ps_dec_op, 0, sizeof(ivd_video_decode_op_t)); + ps_dec_op->u4_size = u4_size; + } + ps_dec->pv_dec_out = ps_dec_op; if(ps_dec->init_done != 1) { diff --git a/decoder/ih264d_parse_pslice.c b/decoder/ih264d_parse_pslice.c index 8694a36..a751a88 100644 --- a/decoder/ih264d_parse_pslice.c +++ b/decoder/ih264d_parse_pslice.c @@ -1462,7 +1462,7 @@ WORD32 ih264d_mark_err_slice_skip(dec_struct_t * ps_dec, ih264d_err_pic_dispbuf_mgr(ps_dec); return 0; } - + ps_dec->ps_dpb_cmds->u1_long_term_reference_flag = 0; if(prev_slice_err == 1) { /* first slice - missing/header corruption */ @@ -1494,6 +1494,10 @@ WORD32 ih264d_mark_err_slice_skip(dec_struct_t * ps_dec, if(ps_dec->ps_pps[i].u1_is_valid == TRUE) j = i; { + //initialize slice params required by ih264d_start_of_pic to valid values + ps_dec->ps_cur_slice->u1_slice_type = P_SLICE; + ps_dec->ps_cur_slice->u1_nal_ref_idc = 1; + ps_dec->ps_cur_slice->u1_nal_unit_type = 1; ret = ih264d_start_of_pic(ps_dec, poc, ps_cur_poc, ps_dec->ps_cur_slice->u2_frame_num, &ps_dec->ps_pps[j]); @@ -1671,6 +1675,9 @@ WORD32 ih264d_mark_err_slice_skip(dec_struct_t * ps_dec, } ps_dec->ps_cur_slice->u2_first_mb_in_slice = ps_dec->u2_total_mbs_coded << u1_mbaff; + ps_dec->ps_cur_slice->i1_slice_alpha_c0_offset = 0; + ps_dec->ps_cur_slice->i1_slice_beta_offset = 0; + if(ps_dec->ps_cur_slice->u1_field_pic_flag) ps_dec->u2_prv_frame_num = ps_dec->ps_cur_slice->u2_frame_num; diff --git a/decoder/ih264d_parse_slice.c b/decoder/ih264d_parse_slice.c index fa85aa1..5ff92f8 100644 --- a/decoder/ih264d_parse_slice.c +++ b/decoder/ih264d_parse_slice.c @@ -719,7 +719,7 @@ WORD32 ih264d_start_of_pic(dec_struct_t *ps_dec, ps_dec->u4_deblk_mb_x = 0; ps_dec->u4_deblk_mb_y = 0; - + ps_dec->pu4_wt_ofsts = ps_dec->pu4_wts_ofsts_mat; H264_MUTEX_UNLOCK(&ps_dec->process_disp_mutex); return OK; @@ -1869,7 +1869,6 @@ WORD32 ih264d_parse_decode_slice(UWORD8 u1_is_idr_slice, ps_dec->pv_proc_tu_coeff_data = ps_dec->pv_parse_tu_coeff_data; } - ps_dec->pu4_wt_ofsts = ps_dec->pu4_wts_ofsts_mat; if(u1_slice_type == I_SLICE) { ps_dec->ps_cur_pic->u4_pack_slc_typ |= I_SLC_BIT; diff --git a/decoder/ih264d_process_intra_mb.c b/decoder/ih264d_process_intra_mb.c index dde2a7e..279ff87 100644 --- a/decoder/ih264d_process_intra_mb.c +++ b/decoder/ih264d_process_intra_mb.c @@ -1242,6 +1242,7 @@ WORD32 ih264d_process_intra_mb(dec_struct_t * ps_dec, + (pu1_rem_intra4x4_pred_mode[u1_cur_sub_block] >= i1_intra_pred); } + i1_intra_pred = CLIP3(0, 8, i1_intra_pred); { UWORD8 u1_err_code = pu1_intra_err_codes[i1_intra_pred]; @@ -1650,6 +1651,7 @@ WORD32 ih264d_process_intra_mb(dec_struct_t * ps_dec, + (pu1_rem_intra4x4_pred_mode[u1_sub_mb_num] >= i1_intra_pred); } + i1_intra_pred = CLIP3(0, 8, i1_intra_pred); { UWORD8 u1_err_code = pu1_intra_err_codes[i1_intra_pred]; |