Merge \\\\"Decoder: Fix slice number increment for error clips\\\\" into mnc-dev am: 2e88a2aa67 am: d75185f90e am: abd921f407
am: 46635d205b
Change-Id: I33ae1d1daeb6b7ca83a7ce4913e6b7f40ca87283
This commit is contained in:
commit
afe52d7476
4 changed files with 15 additions and 3 deletions
|
|
@ -1901,6 +1901,7 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
|
|||
ps_dec->u4_dec_thread_created = 0;
|
||||
ps_dec->u4_bs_deblk_thread_created = 0;
|
||||
ps_dec->u4_cur_bs_mb_num = 0;
|
||||
ps_dec->u4_start_recon_deblk = 0;
|
||||
|
||||
DEBUG_THREADS_PRINTF(" Starting process call\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -1080,6 +1080,12 @@ WORD32 ih264d_parse_nal_unit(iv_obj_t *dec_hdl,
|
|||
H264_DEC_DEBUG_PRINT("\nForbidden bit set in Nal Unit, Let's try\n");
|
||||
}
|
||||
u1_nal_unit_type = NAL_UNIT_TYPE(u1_first_byte);
|
||||
// if any other nal unit other than slice nal is encountered in between a
|
||||
// frame break out of loop without consuming header
|
||||
if((ps_dec->u2_total_mbs_coded != 0) && (u1_nal_unit_type > IDR_SLICE_NAL))
|
||||
{
|
||||
return ERROR_INCOMPLETE_FRAME;
|
||||
}
|
||||
ps_dec->u1_nal_unit_type = u1_nal_unit_type;
|
||||
u1_nal_ref_idc = (UWORD8)(NAL_REF_IDC(u1_first_byte));
|
||||
//Skip all NALUs if SPS and PPS are not decoded
|
||||
|
|
|
|||
|
|
@ -1550,6 +1550,7 @@ WORD32 ih264d_mark_err_slice_skip(dec_struct_t * ps_dec,
|
|||
}
|
||||
}
|
||||
}
|
||||
ps_dec->u4_first_slice_in_pic = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1842,11 +1843,13 @@ WORD32 ih264d_mark_err_slice_skip(dec_struct_t * ps_dec,
|
|||
|
||||
H264_DEC_DEBUG_PRINT("Mbs in slice: %d\n", ps_dec->ps_cur_slice->u4_mbs_in_slice);
|
||||
|
||||
ps_dec->u2_cur_slice_num++;
|
||||
|
||||
/* incremented here only if first slice is inserted */
|
||||
if(ps_dec->u4_first_slice_in_pic != 0)
|
||||
{
|
||||
ps_dec->ps_parse_cur_slice++;
|
||||
ps_dec->u2_cur_slice_num++;
|
||||
}
|
||||
|
||||
ps_dec->i2_prev_slice_mbx = ps_dec->u2_mbx;
|
||||
ps_dec->i2_prev_slice_mby = ps_dec->u2_mby;
|
||||
|
|
|
|||
|
|
@ -374,6 +374,7 @@ WORD32 ih264d_start_of_pic(dec_struct_t *ps_dec,
|
|||
ps_dec->ps_parse_cur_slice = &(ps_dec->ps_dec_slice_buf[0]);
|
||||
ps_dec->ps_decode_cur_slice = &(ps_dec->ps_dec_slice_buf[0]);
|
||||
ps_dec->ps_computebs_cur_slice = &(ps_dec->ps_dec_slice_buf[0]);
|
||||
ps_dec->u2_cur_slice_num = 0;
|
||||
|
||||
/* Initialize all the HP toolsets to zero */
|
||||
ps_dec->s_high_profile.u1_scaling_present = 0;
|
||||
|
|
@ -573,7 +574,6 @@ WORD32 ih264d_start_of_pic(dec_struct_t *ps_dec,
|
|||
ps_dec->u2_mv_2mb[1] = 0;
|
||||
ps_dec->u1_last_pic_not_decoded = 0;
|
||||
|
||||
ps_dec->u2_cur_slice_num = 0;
|
||||
ps_dec->u2_cur_slice_num_dec_thread = 0;
|
||||
ps_dec->u2_cur_slice_num_bs = 0;
|
||||
ps_dec->u4_intra_pred_line_ofst = 0;
|
||||
|
|
@ -1425,7 +1425,10 @@ WORD32 ih264d_parse_decode_slice(UWORD8 u1_is_idr_slice,
|
|||
}
|
||||
|
||||
if (ps_dec->u4_first_slice_in_pic == 0)
|
||||
{
|
||||
ps_dec->ps_parse_cur_slice++;
|
||||
ps_dec->u2_cur_slice_num++;
|
||||
}
|
||||
|
||||
ps_dec->u1_slice_header_done = 0;
|
||||
|
||||
|
|
@ -1908,7 +1911,6 @@ WORD32 ih264d_parse_decode_slice(UWORD8 u1_is_idr_slice,
|
|||
if(ret != OK)
|
||||
return ret;
|
||||
|
||||
ps_dec->u2_cur_slice_num++;
|
||||
/* storing last Mb X and MbY of the slice */
|
||||
ps_dec->i2_prev_slice_mbx = ps_dec->u2_mbx;
|
||||
ps_dec->i2_prev_slice_mby = ps_dec->u2_mby;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue