Merge "mvc: corrected logic for inserting long term refs"

This commit is contained in:
Treehugger Robot 2022-09-15 01:34:29 +00:00 • committed by Gerrit Code Review
commit d46160f452

View file

@ -1503,10 +1503,6 @@ static WORD32 imvcd_dpb_delete_gap_frm_mmco(mvc_dpb_manager_t *ps_dpb_mgr, WORD3
static WORD32 imvcd_dpb_insert_lt_node(mvc_dpb_manager_t *ps_dpb_mgr, mvc_dpb_info_t *ps_new_node, static WORD32 imvcd_dpb_insert_lt_node(mvc_dpb_manager_t *ps_dpb_mgr, mvc_dpb_info_t *ps_new_node,
UWORD32 u4_lt_idx) UWORD32 u4_lt_idx)
{ {
WORD32 i;
mvc_dpb_info_t *ps_next_dpb = ps_dpb_mgr->ps_dpb_lt_head;
ps_new_node->s_top_field.u1_reference_info = IS_LONG_TERM; ps_new_node->s_top_field.u1_reference_info = IS_LONG_TERM;
ps_new_node->s_bot_field.u1_reference_info = IS_LONG_TERM; ps_new_node->s_bot_field.u1_reference_info = IS_LONG_TERM;
ps_new_node->s_top_field.u1_long_term_frame_idx = u4_lt_idx; ps_new_node->s_top_field.u1_long_term_frame_idx = u4_lt_idx;
@ -1516,27 +1512,28 @@ static WORD32 imvcd_dpb_insert_lt_node(mvc_dpb_manager_t *ps_dpb_mgr, mvc_dpb_in
if(ps_dpb_mgr->u1_num_lt_ref_bufs > 0) if(ps_dpb_mgr->u1_num_lt_ref_bufs > 0)
{ {
if(u4_lt_idx < ps_next_dpb->ps_au_buf->u1_long_term_frm_idx) WORD32 i;
{
ps_new_node->ps_prev_long = ps_next_dpb;
ps_dpb_mgr->ps_dpb_lt_head = ps_new_node;
}
else
{
ps_next_dpb = ps_next_dpb->ps_prev_long;
for(i = 1; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++) mvc_dpb_info_t **pps_next_node = &ps_dpb_mgr->ps_dpb_lt_head;
for(i = 0; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
{
if((*pps_next_node)->ps_au_buf->u1_long_term_frm_idx > u4_lt_idx)
{ {
if(ps_next_dpb->ps_au_buf->u1_long_term_frm_idx > u4_lt_idx) ps_new_node->ps_prev_long = *pps_next_node;
{ *pps_next_node = ps_new_node;
ps_new_node->ps_prev_long = ps_next_dpb->ps_prev_long;
ps_next_dpb->ps_prev_long = ps_new_node;
break; break;
}
ps_next_dpb = ps_next_dpb->ps_prev_long;
} }
else if(NULL == (*pps_next_node)->ps_prev_long)
{
(*pps_next_node)->ps_prev_long = ps_new_node;
ps_new_node->ps_prev_long = NULL;
break;
}
pps_next_node = &(*pps_next_node)->ps_prev_long;
} }
} }
else else