Home | History | Annotate | Download | only in decoder

Lines Matching refs:ps_dpb_mgr

70 void ih264d_init_ref_bufs(dpb_manager_t *ps_dpb_mgr)
73 struct dpb_info_t *ps_dpb_info = ps_dpb_mgr->as_dpb_info;
87 ps_dpb_mgr->u1_num_st_ref_bufs = ps_dpb_mgr->u1_num_lt_ref_bufs = 0;
88 ps_dpb_mgr->ps_dpb_st_head = NULL;
89 ps_dpb_mgr->ps_dpb_ht_head = NULL;
90 ps_dpb_mgr->i1_gaps_deleted = 0;
91 ps_dpb_mgr->i1_poc_buf_id_entries = 0;
93 ps_dpb_mgr->u1_num_gaps = 0;
96 ps_dpb_mgr->ai4_gaps_start_frm_num[i] = INVALID_FRAME_NUM;
97 ps_dpb_mgr->ai4_gaps_end_frm_num[i] = 0;
98 ps_dpb_mgr->ai1_gaps_per_seq[i] = 0;
99 ps_dpb_mgr->ai4_poc_buf_id_map[i][0] = -1;
100 ps_dpb_mgr->ai4_poc_buf_id_map[i][1] = 0x7fffffff;
101 ps_dpb_mgr->ai4_poc_buf_id_map[i][2] = 0;
135 WORD32 ih264d_delete_lt_node(dpb_manager_t *ps_dpb_mgr,
142 if(ps_dpb_mgr->u1_num_lt_ref_bufs > 0)
150 ps_next_dpb = ps_dpb_mgr->ps_dpb_ht_head;
157 for(i = 1; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
163 if(i == ps_dpb_mgr->u1_num_lt_ref_bufs)
217 if(ps_unmark_node == ps_dpb_mgr->ps_dpb_ht_head)
218 ps_dpb_mgr->ps_dpb_ht_head = ps_next_dpb->ps_prev_long;
226 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
230 ps_dpb_mgr->u1_num_lt_ref_bufs--; //decrement LT buf count
248 WORD32 ih264d_insert_lt_node(dpb_manager_t *ps_dpb_mgr,
305 if(ps_dpb_mgr->u1_num_lt_ref_bufs > 0)
307 struct dpb_info_t *ps_next_dpb = ps_dpb_mgr->ps_dpb_ht_head;
313 ps_dpb_mgr->ps_dpb_ht_head = ps_mov_node;
320 for(i = 1; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
334 ps_dpb_mgr->ps_dpb_ht_head = ps_mov_node;
344 ps_dpb_mgr->u1_num_lt_ref_bufs++;
364 WORD32 ih264d_insert_st_node(dpb_manager_t *ps_dpb_mgr,
370 struct dpb_info_t *ps_dpb_info = ps_dpb_mgr->as_dpb_info;
408 ps_dpb_info[i].ps_prev_short = ps_dpb_mgr->ps_dpb_st_head;
416 ps_dpb_mgr->ps_dpb_st_head = ps_dpb_info + i;
419 ps_dpb_mgr->u1_num_st_ref_bufs++;
454 WORD32 ih264d_delete_st_node_or_make_lt(dpb_manager_t *ps_dpb_mgr,
478 ps_next_dpb = ps_dpb_mgr->ps_dpb_st_head;
485 for(i = 1; i < ps_dpb_mgr->u1_num_st_ref_bufs; i++)
492 if(i == ps_dpb_mgr->u1_num_st_ref_bufs)
494 if(ps_dpb_mgr->u1_num_gaps)
496 ret = ih264d_delete_gap_frm_mmco(ps_dpb_mgr, i4_frame_num, &u1_del_st);
534 WORD32 i4_size = ((ps_dpb_mgr->u2_pic_wd
535 * ps_dpb_mgr->u2_pic_ht) >> 5);
549 + ((ps_dpb_mgr->u2_pic_wd
550 * ps_dpb_mgr->u2_pic_ht)
552 WORD32 i4_size = ((ps_dpb_mgr->u2_pic_wd
553 * ps_dpb_mgr->u2_pic_ht) >> 5);
571 WORD32 i4_size = ((ps_dpb_mgr->u2_pic_wd
572 * ps_dpb_mgr->u2_pic_ht) >> 4);
580 if(ps_unmark_node == ps_dpb_mgr->ps_dpb_st_head)
581 ps_dpb_mgr->ps_dpb_st_head = ps_next_dpb->ps_prev_short;
584 ps_dpb_mgr->u1_num_st_ref_bufs--; //decrement ST buf count
593 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
602 ret = ih264d_delete_lt_node(ps_dpb_mgr, u4_lt_idx,
607 ret = ih264d_insert_lt_node(ps_dpb_mgr, ps_unmark_node, u4_lt_idx,
625 void ih264d_reset_ref_bufs(dpb_manager_t *ps_dpb_mgr)
628 struct dpb_info_t *ps_dpb_info = ps_dpb_mgr->as_dpb_info;
645 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
649 ps_dpb_mgr->u1_num_st_ref_bufs = ps_dpb_mgr->u1_num_lt_ref_bufs = 0;
650 ps_dpb_mgr->ps_dpb_st_head = NULL;
651 ps_dpb_mgr->ps_dpb_ht_head = NULL;
654 ps_dpb_mgr->u1_num_gaps = 0;
657 ps_dpb_mgr->ai4_gaps_start_frm_num[i] = INVALID_FRAME_NUM;
658 ps_dpb_mgr->ai4_gaps_end_frm_num[i] = 0;
659 ps_dpb_mgr->ai1_gaps_per_seq[i] = 0;
675 WORD32 ih264d_update_default_index_list(dpb_manager_t *ps_dpb_mgr)
678 struct dpb_info_t *ps_next_dpb = ps_dpb_mgr->ps_dpb_st_head;
680 for(i = 0; i < ps_dpb_mgr->u1_num_st_ref_bufs; i++)
682 ps_dpb_mgr->ps_def_dpb[i] = ps_next_dpb->ps_pic_buf;
686 ps_next_dpb = ps_dpb_mgr->ps_dpb_ht_head;
687 for(;i< ps_dpb_mgr->u1_num_st_ref_bufs + ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
689 ps_dpb_mgr->ps_def_dpb[i] = ps_next_dpb->ps_pic_buf;
719 dpb_manager_t *ps_dpb_mgr = ps_dec->ps_dpb_mgr;
773 if(ps_dpb_mgr->ps_init_dpb[uc_lx][i]->i4_pic_num == i_temp)
784 ps_dpb_mgr->ps_mod_dpb[uc_lx][modCount++] =
785 ps_dpb_mgr->ps_init_dpb[uc_lx][i];
794 if(!ps_dpb_mgr->ps_init_dpb[uc_lx][i]->u1_is_short)
796 if(ps_dpb_mgr->ps_init_dpb[uc_lx][i]->u1_long_term_pic_num
809 ps_dpb_mgr->ps_mod_dpb[uc_lx][modCount++] =
810 ps_dpb_mgr->ps_init_dpb[uc_lx][i];
821 ps_dpb_mgr->ps_mod_dpb[uc_lx][modCount++] =
822 ps_dpb_mgr->ps_init_dpb[uc_lx][i];
980 dpb_manager_t *ps_dpb_mgr,
1001 u1_num_gaps = ps_dpb_mgr->u1_num_gaps;
1006 if((ps_dpb_mgr->u1_num_st_ref_bufs
1007 + ps_dpb_mgr->u1_num_lt_ref_bufs + u1_num_gaps)
1011 if((0 == ps_dpb_mgr->u1_num_st_ref_bufs) && (0 == u1_num_gaps))
1019 ps_next_dpb = ps_dpb_mgr->ps_dpb_st_head;
1021 if(ps_dpb_mgr->u1_num_st_ref_bufs > 1)
1032 for(i = 1; i < (ps_dpb_mgr->u1_num_st_ref_bufs - 1); i++)
1062 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1071 ps_dpb_mgr->u1_num_st_ref_bufs--;
1078 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1087 if(ps_dpb_mgr->u1_num_st_ref_bufs)
1089 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1097 ps_dpb_mgr->u1_num_st_ref_bufs--;
1103 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1107 ps_dpb_mgr->ps_dpb_st_head = NULL;
1116 else if(ps_dpb_mgr->u1_num_st_ref_bufs > 0)
1118 ps_dpb_mgr->u1_num_st_ref_bufs--;
1124 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1133 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1176 if(ps_dpb_mgr->u1_num_st_ref_bufs > 0)
1178 ret = ih264d_delete_st_node_or_make_lt(ps_dpb_mgr,
1188 ret = ih264d_delete_gap_frm_mmco(ps_dpb_mgr, i4_pic_num, &u1_dummy);
1198 ret = ih264d_delete_lt_node(ps_dpb_mgr,
1225 if(ps_dpb_mgr->u1_num_st_ref_bufs > 0)
1227 ret = ih264d_delete_st_node_or_make_lt(ps_dpb_mgr,
1237 UWORD8 uc_numLT = ps_dpb_mgr->u1_num_lt_ref_bufs;
1239 if(u4_lt_idx < ps_dpb_mgr->u1_max_lt_pic_idx_plus1
1244 ps_nxtDPB = ps_dpb_mgr->ps_dpb_ht_head;
1249 ps_dpb_mgr->ps_dpb_ht_head = NULL;
1262 ps_dpb_mgr->u1_num_lt_ref_bufs = i;
1278 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1284 ps_dpb_mgr->u1_max_lt_pic_idx_plus1 = u4_lt_idx;
1291 ret = ih264d_insert_st_node(ps_dpb_mgr, ps_pic_buf, u1_buf_id,
1296 if(ps_dpb_mgr->u1_num_st_ref_bufs > 0)
1299 ret = ih264d_delete_st_node_or_make_lt(ps_dpb_mgr,
1320 ih264d_reset_ref_bufs(ps_dpb_mgr);
1327 ret = ih264d_insert_st_node(ps_dpb_mgr, ps_pic_buf, u1_buf_id,
1380 /* Inputs : ps_dpb_mgr: pointer to dpb manager */
1398 WORD32 ih264d_delete_gap_frm_sliding(dpb_manager_t *ps_dpb_mgr,
1411 if(0 == ps_dpb_mgr->u1_num_gaps)
1413 pi4_gaps_start_frm_num = ps_dpb_mgr->ai4_gaps_start_frm_num;
1414 pi4_gaps_end_frm_num = ps_dpb_mgr->ai4_gaps_end_frm_num;
1416 i4_max_frm_num = ps_dpb_mgr->i4_max_frm_num;
1491 i4_frm_num = ps_dpb_mgr->ai4_poc_buf_id_map[j][2];
1506 ps_dpb_mgr->ai4_poc_buf_id_map[j_min][0] = -1;
1507 ps_dpb_mgr->ai4_poc_buf_id_map[j_min][1] = 0x7fffffff;
1508 ps_dpb_mgr->ai4_poc_buf_id_map[j_min][2] = GAP_FRAME_NUM;
1509 ps_dpb_mgr->i1_gaps_deleted++;
1511 ps_dpb_mgr->ai1_gaps_per_seq[i1_gap_idx]--;
1512 ps_dpb_mgr->u1_num_gaps--;
1514 if(0 == ps_dpb_mgr->ai1_gaps_per_seq[i1_gap_idx])
1516 ps_dpb_mgr->ai4_gaps_start_frm_num[i1_gap_idx] =
1518 ps_dpb_mgr->ai4_gaps_end_frm_num[i1_gap_idx] = 0;
1534 /* Inputs : ps_dpb_mgr: pointer to dpb manager */
1552 WORD32 ih264d_delete_gap_frm_mmco(dpb_manager_t *ps_dpb_mgr,
1563 pi4_start = ps_dpb_mgr->ai4_gaps_start_frm_num;
1564 pi4_end = ps_dpb_mgr->ai4_gaps_end_frm_num;
1565 i4_max_frm_num = ps_dpb_mgr->i4_max_frm_num;
1567 if(0 == ps_dpb_mgr->u1_num_gaps)
1605 if(i4_frame_num == ps_dpb_mgr->ai4_poc_buf_id_map[j][2])
1618 ps_dpb_mgr->ai4_poc_buf_id_map[j][0] = -1;
1619 ps_dpb_mgr->ai4_poc_buf_id_map[j][1] = 0x7fffffff;
1620 ps_dpb_mgr->ai4_poc_buf_id_map[j][2] = GAP_FRAME_NUM;
1621 ps_dpb_mgr->i1_gaps_deleted++;
1623 ps_dpb_mgr->ai1_gaps_per_seq[i]--;
1624 ps_dpb_mgr->u1_num_gaps--;
1626 if(0 == ps_dpb_mgr->ai1_gaps_per_seq[i])
1628 ps_dpb_mgr->ai4_gaps_start_frm_num[i] = INVALID_FRAME_NUM;
1629 ps_dpb_mgr->ai4_gaps_end_frm_num[i] = 0;
1657 WORD32 ih264d_do_mmco_for_gaps(dpb_manager_t *ps_dpb_mgr,
1669 u1_st_ref_bufs = ps_dpb_mgr->u1_num_st_ref_bufs;
1670 u1_lt_ref_bufs = ps_dpb_mgr->u1_num_lt_ref_bufs;
1674 u1_num_gaps = ps_dpb_mgr->u1_num_gaps;
1681 ps_dpb_mgr->u1_num_gaps = (u1_num_ref_frames
1687 ps_next_dpb = ps_dpb_mgr
1709 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1725 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1737 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1752 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1756 ps_dpb_mgr->ps_dpb_st_head = NULL;
1757 ps_dpb_mgr->u1_num_st_ref_bufs = u1_st_ref_bufs;
1762 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1777 ps_dpb_mgr->u1_num_gaps += i4_frame_gaps;
1782 ps_dpb_mgr->u1_num_st_ref_bufs = u1_st_ref_bufs;
1810 WORD32 ih264d_free_node_from_dpb(dpb_manager_t *ps_dpb_mgr,
1815 UWORD8 u1_num_gaps = ps_dpb_mgr->u1_num_gaps;
1821 if((ps_dpb_mgr->u1_num_st_ref_bufs + ps_dpb_mgr->u1_num_lt_ref_bufs
1825 if((0 == ps_dpb_mgr->u1_num_st_ref_bufs) && (0 == u1_num_gaps))
1831 ps_next_dpb = ps_dpb_mgr->ps_dpb_st_head;
1833 if(ps_dpb_mgr->u1_num_st_ref_bufs > 1)
1844 for(i = 1; i < (ps_dpb_mgr->u1_num_st_ref_bufs - 1); i++)
1867 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1876 ps_dpb_mgr->u1_num_st_ref_bufs--;
1882 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1891 if(ps_dpb_mgr->u1_num_st_ref_bufs)
1893 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr,
1901 ps_dpb_mgr->u1_num_st_ref_bufs--;
1905 ih264d_free_ref_pic_mv_bufs(ps_dpb_mgr->pv_codec_handle,
1913 ret = ih264d_delete_gap_frm_sliding(ps_dpb_mgr, INVALID_FRAME_NUM, &u1_del_node);
1946 void ih264d_delete_nonref_nondisplay_pics(dpb_manager_t *ps_dpb_mgr)
1949 WORD32 (*i4_poc_buf_id_map)[3] = ps_dpb_mgr->ai4_poc_buf_id_map;
1952 for(i = 0; (i < MAX_FRAMES) && ps_dpb_mgr->i1_gaps_deleted; i++)
1956 ps_dpb_mgr->i1_gaps_deleted--;
1957 ps_dpb_mgr->i1_poc_buf_id_entries--;
1987 WORD32 ih264d_insert_pic_in_display_list(dpb_manager_t *ps_dpb_mgr,
1993 WORD32 (*i4_poc_buf_id_map)[3] = ps_dpb_mgr->ai4_poc_buf_id_map;
2001 ps_dpb_mgr->i1_gaps_deleted--;
2003 ps_dpb_mgr->i1_poc_buf_id_entries++;