DO NOT MERGE - Merge qt-qpr1-dev-plus-aosp-without-vendor (6129114) into stage-aosp-master

Bug: 146167222
Change-Id: I0bfd5bcbdfc87b371efb7ab5611ec505a10fa0f6
This commit is contained in:
Xin Li 2020-01-15 15:57:01 -08:00
commit 2f6efb8050
2 changed files with 32 additions and 27 deletions

View file

@ -1115,6 +1115,30 @@ void ih264d_init_decoder(void * ps_dec_params)
/* Free any dynamic buffers that are allocated */ /* Free any dynamic buffers that are allocated */
ih264d_free_dynamic_bufs(ps_dec); ih264d_free_dynamic_bufs(ps_dec);
{
UWORD8 i;
struct pic_buffer_t *ps_init_dpb;
ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[0][0];
for(i = 0; i < 2 * MAX_REF_BUFS; i++)
{
ps_init_dpb->pu1_buf1 = NULL;
ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1;
ps_dec->ps_dpb_mgr->ps_init_dpb[0][i] = ps_init_dpb;
ps_dec->ps_dpb_mgr->ps_mod_dpb[0][i] = ps_init_dpb;
ps_init_dpb++;
}
ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[1][0];
for(i = 0; i < 2 * MAX_REF_BUFS; i++)
{
ps_init_dpb->pu1_buf1 = NULL;
ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1;
ps_dec->ps_dpb_mgr->ps_init_dpb[1][i] = ps_init_dpb;
ps_dec->ps_dpb_mgr->ps_mod_dpb[1][i] = ps_init_dpb;
ps_init_dpb++;
}
}
ps_cur_slice = ps_dec->ps_cur_slice; ps_cur_slice = ps_dec->ps_cur_slice;
ps_dec->init_done = 0; ps_dec->init_done = 0;
@ -1623,29 +1647,6 @@ WORD32 ih264d_allocate_static_bufs(iv_obj_t **dec_hdl, void *pv_api_ip, void *pv
ps_dec->ps_col_mv_base = pv_buf; ps_dec->ps_col_mv_base = pv_buf;
memset(ps_dec->ps_col_mv_base, 0, size); memset(ps_dec->ps_col_mv_base, 0, size);
{
UWORD8 i;
struct pic_buffer_t *ps_init_dpb;
ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[0][0];
for(i = 0; i < 2 * MAX_REF_BUFS; i++)
{
ps_init_dpb->pu1_buf1 = NULL;
ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1;
ps_dec->ps_dpb_mgr->ps_init_dpb[0][i] = ps_init_dpb;
ps_dec->ps_dpb_mgr->ps_mod_dpb[0][i] = ps_init_dpb;
ps_init_dpb++;
}
ps_init_dpb = ps_dec->ps_dpb_mgr->ps_init_dpb[1][0];
for(i = 0; i < 2 * MAX_REF_BUFS; i++)
{
ps_init_dpb->pu1_buf1 = NULL;
ps_init_dpb->u1_long_term_frm_idx = MAX_REF_BUFS + 1;
ps_dec->ps_dpb_mgr->ps_init_dpb[1][i] = ps_init_dpb;
ps_dec->ps_dpb_mgr->ps_mod_dpb[1][i] = ps_init_dpb;
ps_init_dpb++;
}
}
ih264d_init_decoder(ps_dec); ih264d_init_decoder(ps_dec);
return IV_SUCCESS; return IV_SUCCESS;

View file

@ -1239,7 +1239,9 @@ WORD32 ih264d_assign_display_seq(dec_struct_t *ps_dec)
&& (DO_NOT_DISP && (DO_NOT_DISP
!= ps_dpb_mgr->ai4_poc_buf_id_map[i][0])) != ps_dpb_mgr->ai4_poc_buf_id_map[i][0]))
{ {
if(i4_poc_buf_id_map[i][1] < i4_min_poc) /* Checking for <= is necessary to handle cases where there is one
valid buffer with poc set to 0x7FFFFFFF. */
if(i4_poc_buf_id_map[i][1] <= i4_min_poc)
{ {
i4_min_poc = i4_poc_buf_id_map[i][1]; i4_min_poc = i4_poc_buf_id_map[i][1];
i4_min_poc_buf_id = i4_poc_buf_id_map[i][0]; i4_min_poc_buf_id = i4_poc_buf_id_map[i][0];
@ -1303,8 +1305,8 @@ void ih264d_release_display_bufs(dec_struct_t *ps_dec)
WORD32 (*i4_poc_buf_id_map)[3] = ps_dpb_mgr->ai4_poc_buf_id_map; WORD32 (*i4_poc_buf_id_map)[3] = ps_dpb_mgr->ai4_poc_buf_id_map;
i4_min_poc = 0x7fffffff; i4_min_poc = 0x7fffffff;
i4_min_poc_buf_id = -1; i4_min_poc_buf_id = 0;
i4_min_index = -1; i4_min_index = 0;
ih264d_delete_nonref_nondisplay_pics(ps_dpb_mgr); ih264d_delete_nonref_nondisplay_pics(ps_dpb_mgr);
@ -1315,7 +1317,9 @@ void ih264d_release_display_bufs(dec_struct_t *ps_dec)
{ {
if(i4_poc_buf_id_map[i][0] != -1) if(i4_poc_buf_id_map[i][0] != -1)
{ {
if(i4_poc_buf_id_map[i][1] < i4_min_poc) /* Checking for <= is necessary to handle cases where there is one
valid buffer with poc set to 0x7FFFFFFF. */
if(i4_poc_buf_id_map[i][1] <= i4_min_poc)
{ {
i4_min_poc = i4_poc_buf_id_map[i][1]; i4_min_poc = i4_poc_buf_id_map[i][1];
i4_min_poc_buf_id = i4_poc_buf_id_map[i][0]; i4_min_poc_buf_id = i4_poc_buf_id_map[i][0];