summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarish Mahendrakar <harish.mahendrakar@ittiam.com>2016-05-23 18:42:24 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-23 18:42:24 +0000
commitfc855de43f785778629a4046aec0036c1c594fc6 (patch)
treed34a4b3f6a3ae8d35af79e9f05ab130e06e6934d
parent2d0ff948ac444424ba15b3fba8f29c0a3d836a3a (diff)
parent129a6006b424c1e044c74c023dee4e7aff490219 (diff)
downloadandroid_external_libavc-fc855de43f785778629a4046aec0036c1c594fc6.tar.gz
android_external_libavc-fc855de43f785778629a4046aec0036c1c594fc6.tar.bz2
android_external_libavc-fc855de43f785778629a4046aec0036c1c594fc6.zip
Decoder: Initialize slice parameters before concealing error MBs am: 33db7a0f4e
am: 129a6006b4 * commit '129a6006b424c1e044c74c023dee4e7aff490219': Decoder: Initialize slice parameters before concealing error MBs Change-Id: I554b9bfc98cee10c6766a879b74c18fb6a85a6a2
-rw-r--r--decoder/ih264d_api.c8
-rw-r--r--decoder/ih264d_parse_pslice.c9
-rw-r--r--decoder/ih264d_parse_slice.c3
3 files changed, 18 insertions, 2 deletions
diff --git a/decoder/ih264d_api.c b/decoder/ih264d_api.c
index b6d4e35..82226f3 100644
--- a/decoder/ih264d_api.c
+++ b/decoder/ih264d_api.c
@@ -1637,6 +1637,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..9f56a0e 100644
--- a/decoder/ih264d_parse_pslice.c
+++ b/decoder/ih264d_parse_pslice.c
@@ -1494,6 +1494,12 @@ 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_bottom_field_flag = 0;
+ ps_dec->ps_cur_slice->u1_field_pic_flag = 0;
+ 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 +1677,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;