diff --git a/decoder/ih264d_api.c b/decoder/ih264d_api.c index 2708933..59160b9 100644 --- a/decoder/ih264d_api.c +++ b/decoder/ih264d_api.c @@ -1928,6 +1928,7 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) ps_dec->cur_dec_mb_num = 0; ps_dec->cur_recon_mb_num = 0; ps_dec->u4_first_slice_in_pic = 2; + ps_dec->u1_first_pb_nal_in_pic = 1; ps_dec->u1_slice_header_done = 0; ps_dec->u1_dangling_field = 0; @@ -2099,8 +2100,10 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) if((ret == IVD_RES_CHANGED) || (ret == IVD_MEM_ALLOC_FAILED) || (ret == ERROR_UNAVAIL_PICBUF_T) - || (ret == ERROR_UNAVAIL_MVBUF_T)) + || (ret == ERROR_UNAVAIL_MVBUF_T) + || (ret == ERROR_INV_SPS_PPS_T)) { + ps_dec->u4_slice_start_code_found = 0; break; } @@ -2182,7 +2185,8 @@ WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op) if((ret == IVD_RES_CHANGED) || (ret == IVD_MEM_ALLOC_FAILED) || (ret == ERROR_UNAVAIL_PICBUF_T) - || (ret == ERROR_UNAVAIL_MVBUF_T)) + || (ret == ERROR_UNAVAIL_MVBUF_T) + || (ret == ERROR_INV_SPS_PPS_T)) { /* signal the decode thread */ diff --git a/decoder/ih264d_parse_slice.c b/decoder/ih264d_parse_slice.c index 2317e77..22a7d0b 100644 --- a/decoder/ih264d_parse_slice.c +++ b/decoder/ih264d_parse_slice.c @@ -940,7 +940,6 @@ WORD32 ih264d_end_of_pic(dec_struct_t *ps_dec, dec_slice_params_t *ps_cur_slice = ps_dec->ps_cur_slice; WORD32 ret; - ps_dec->u1_first_pb_nal_in_pic = 1; ps_dec->u2_mbx = 0xffff; ps_dec->u2_mby = 0; {