Merge "Decoder: Fix NPD issue in mmco function"
This commit is contained in:
commit
f667dbf470
3 changed files with 15 additions and 10 deletions
|
|
@ -106,6 +106,7 @@ typedef struct
|
|||
WORD8 i1_gaps_deleted;
|
||||
UWORD16 u2_pic_wd;
|
||||
UWORD16 u2_pic_ht;
|
||||
UWORD8 u1_mmco_error_in_seq;
|
||||
}dpb_manager_t;
|
||||
|
||||
/** Structure store the MMC Commands */
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ void ih264d_init_ref_bufs(dpb_manager_t *ps_dpb_mgr)
|
|||
ps_dpb_mgr->ps_dpb_ht_head = NULL;
|
||||
ps_dpb_mgr->i1_gaps_deleted = 0;
|
||||
ps_dpb_mgr->i1_poc_buf_id_entries = 0;
|
||||
ps_dpb_mgr->u1_mmco_error_in_seq = 0;
|
||||
|
||||
ps_dpb_mgr->u1_num_gaps = 0;
|
||||
for(i = 0; i < MAX_FRAMES; i++)
|
||||
|
|
@ -647,6 +648,7 @@ void ih264d_reset_ref_bufs(dpb_manager_t *ps_dpb_mgr)
|
|||
ps_dpb_mgr->u1_num_st_ref_bufs = ps_dpb_mgr->u1_num_lt_ref_bufs = 0;
|
||||
ps_dpb_mgr->ps_dpb_st_head = NULL;
|
||||
ps_dpb_mgr->ps_dpb_ht_head = NULL;
|
||||
ps_dpb_mgr->u1_mmco_error_in_seq = 0;
|
||||
|
||||
/* release all gaps */
|
||||
ps_dpb_mgr->u1_num_gaps = 0;
|
||||
|
|
|
|||
|
|
@ -501,6 +501,7 @@ WORD32 ih264d_end_of_pic_processing(dec_struct_t *ps_dec)
|
|||
{
|
||||
if(ps_cur_slice->u1_nal_unit_type == IDR_SLICE_NAL)
|
||||
{
|
||||
ps_dec->ps_dpb_mgr->u1_mmco_error_in_seq = 0;
|
||||
if(ps_dec->ps_dpb_cmds->u1_long_term_reference_flag == 0)
|
||||
{
|
||||
ih264d_reset_ref_bufs(ps_dec->ps_dpb_mgr);
|
||||
|
|
@ -538,16 +539,17 @@ WORD32 ih264d_end_of_pic_processing(dec_struct_t *ps_dec)
|
|||
{
|
||||
UWORD16 u2_pic_num = ps_cur_slice->u2_frame_num;
|
||||
|
||||
/* ignore DPB errors */
|
||||
ih264d_do_mmco_buffer(ps_dec->ps_dpb_cmds, ps_dec->ps_dpb_mgr,
|
||||
ps_dec->ps_cur_sps->u1_num_ref_frames, u2_pic_num,
|
||||
(ps_dec->ps_cur_sps->u2_u4_max_pic_num_minus1),
|
||||
ps_dec->u1_nal_unit_type, ps_dec->ps_cur_pic,
|
||||
ps_dec->u1_pic_buf_id,
|
||||
ps_cur_slice->u1_field_pic_flag,
|
||||
ps_dec->e_dec_status);
|
||||
|
||||
|
||||
if(!ps_dec->ps_dpb_mgr->u1_mmco_error_in_seq)
|
||||
{
|
||||
WORD32 ret = ih264d_do_mmco_buffer(ps_dec->ps_dpb_cmds, ps_dec->ps_dpb_mgr,
|
||||
ps_dec->ps_cur_sps->u1_num_ref_frames, u2_pic_num,
|
||||
(ps_dec->ps_cur_sps->u2_u4_max_pic_num_minus1),
|
||||
ps_dec->u1_nal_unit_type, ps_dec->ps_cur_pic,
|
||||
ps_dec->u1_pic_buf_id,
|
||||
ps_cur_slice->u1_field_pic_flag,
|
||||
ps_dec->e_dec_status);
|
||||
ps_dec->ps_dpb_mgr->u1_mmco_error_in_seq = ret != OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
ih264d_update_default_index_list(ps_dec->ps_dpb_mgr);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue