Lines Matching refs:dpb
29 void h265e_dpb_dump_frm(H265eDpb *dpb, const char *fmt) in h265e_dpb_dump_frm() argument
34 RK_S32 frm_cnt = MPP_ARRAY_ELEMS(dpb->frame_list); in h265e_dpb_dump_frm()
39 H265eDpbFrm *frm = &dpb->frame_list[i]; in h265e_dpb_dump_frm()
46 MPP_RET calc_ref_pic_set_idxl0(H265eDpb *dpb, H265eSlice *slice, RK_S32 ref_idx) in calc_ref_pic_set_idxl0() argument
49 H265eDpbFrm *frame_list = dpb->frame_list; in calc_ref_pic_set_idxl0()
50 H265eRpsList *RpsList = &dpb->RpsList; in calc_ref_pic_set_idxl0()
75 void h265e_dpb_set_ref_list(H265eDpb *dpb, H265eSlice *slice, RK_S32 delta_poc) in h265e_dpb_set_ref_list() argument
80 H265eRpsList *RpsList = &dpb->RpsList; in h265e_dpb_set_ref_list()
112 calc_ref_pic_set_idxl0(dpb, slice, ref_idx); in h265e_dpb_set_ref_list()
120 MPP_RET h265e_dpb_init_curr(H265eDpb *dpb, H265eDpbFrm *frm) in h265e_dpb_init_curr() argument
125 frm->dpb = dpb; in h265e_dpb_init_curr()
133 frm->seq_idx = dpb->seq_idx; in h265e_dpb_init_curr()
134 dpb->seq_idx++; in h265e_dpb_init_curr()
140 MPP_RET h265e_dpb_get_curr(H265eDpb *dpb) in h265e_dpb_get_curr() argument
145 for (i = 0; i < MPP_ARRAY_ELEMS(dpb->frame_list); i++) { in h265e_dpb_get_curr()
146 if (!dpb->frame_list[i].on_used) { in h265e_dpb_get_curr()
147 dpb->curr = &dpb->frame_list[i]; in h265e_dpb_get_curr()
148 h265e_dbg_dpb("get free dpb slot_index %d", dpb->curr->slot_idx); in h265e_dpb_get_curr()
152 h265e_dpb_init_curr(dpb, dpb->curr); in h265e_dpb_get_curr()
166 MPP_RET h265e_dpb_init(H265eDpb **dpb) in h265e_dpb_init() argument
173 if (NULL == dpb) { in h265e_dpb_init()
174 mpp_err_f("invalid parameter %p \n", dpb); in h265e_dpb_init()
201 mpp_assert(dpb); in h265e_dpb_init()
202 *dpb = p; in h265e_dpb_init()
207 MPP_RET h265e_dpb_deinit(H265eDpb *dpb) in h265e_dpb_deinit() argument
211 if (NULL == dpb) in h265e_dpb_deinit()
215 for (i = 0; i < MPP_ARRAY_ELEMS(dpb->frame_list); i++) { in h265e_dpb_deinit()
216 if (dpb->frame_list[i].inited) in h265e_dpb_deinit()
217 h265e_dpb_frm_deinit(&dpb->frame_list[i]); in h265e_dpb_deinit()
220 MPP_FREE(dpb->RpsList.m_RefPicListModification); in h265e_dpb_deinit()
222 MPP_FREE(dpb); in h265e_dpb_deinit()
228 enum NALUnitType get_nal_unit_type(H265eDpb *dpb, int curPOC) in get_nal_unit_type() argument
234 if (dpb->curr->is_key_frame) { in get_nal_unit_type()
237 if (dpb->poc_cra > 0) { in get_nal_unit_type()
238 if (curPOC < dpb->poc_cra) { in get_nal_unit_type()
247 if (dpb->last_idr > 0) { in get_nal_unit_type()
248 if (curPOC < dpb->last_idr) { in get_nal_unit_type()
303 void h265e_dpb_apply_rps(H265eDpb *dpb, H265eReferencePictureSet *rps, int curPoc) in h265e_dpb_apply_rps() argument
309 H265eDpbFrm *frame_list = &dpb->frame_list[0]; in h265e_dpb_apply_rps()
313 for (index = 0; index < MPP_ARRAY_ELEMS(dpb->frame_list); index++) { in h265e_dpb_apply_rps()
345 void h265e_dpb_dec_refresh_marking(H265eDpb *dpb, RK_S32 poc_cur, enum NALUnitType nalUnitType) in h265e_dpb_dec_refresh_marking() argument
357 H265eDpbFrm *frame_List = &dpb->frame_list[0]; in h265e_dpb_dec_refresh_marking()
358 for (index = 0; index < MPP_ARRAY_ELEMS(dpb->frame_list); index++) { in h265e_dpb_dec_refresh_marking()
374 dpb->poc_cra = poc_cur; in h265e_dpb_dec_refresh_marking()
377 if (dpb->refresh_pending == 1 && poc_cur > dpb->poc_cra) { // CRA reference marking pending in h265e_dpb_dec_refresh_marking()
378 H265eDpbFrm *frame_list = &dpb->frame_list[0]; in h265e_dpb_dec_refresh_marking()
379 for (index = 0; index < MPP_ARRAY_ELEMS(dpb->frame_list); index++) { in h265e_dpb_dec_refresh_marking()
382 if (frame->inited && frame->poc != poc_cur && frame->poc != dpb->poc_cra) { in h265e_dpb_dec_refresh_marking()
388 dpb->refresh_pending = 0; in h265e_dpb_dec_refresh_marking()
391 dpb->refresh_pending = 1; in h265e_dpb_dec_refresh_marking()
392 dpb->poc_cra = poc_cur; in h265e_dpb_dec_refresh_marking()
400 void h265e_dpb_arrange_lt_rps(H265eDpb *dpb, H265eSlice *slice) in h265e_dpb_arrange_lt_rps() argument
409 (void)dpb; in h265e_dpb_arrange_lt_rps()
579 void h265e_dpb_cpb2rps(H265eDpb *dpb, RK_S32 curPoc, H265eSlice *slice, EncCpbStatus *cpb) in h265e_dpb_cpb2rps() argument
590 H265eRpsList *RpsList = &dpb->RpsList; in h265e_dpb_cpb2rps()
622 p = h265e_find_cpb_frame(dpb->frame_list, MAX_REFS, frm); in h265e_dpb_cpb2rps()
654 p = h265e_find_cpb_frame(dpb->frame_list, MAX_REFS, &cpb->refr); in h265e_dpb_cpb2rps()
686 h265e_dpb_apply_rps(dpb, slice->m_rps, curPoc); in h265e_dpb_cpb2rps()
687 h265e_dpb_arrange_lt_rps(dpb, slice); in h265e_dpb_cpb2rps()
688 h265e_dpb_set_ref_list(dpb, slice, ref_dealt_poc); in h265e_dpb_cpb2rps()
694 MPP_RET h265e_pskip_ref_check(H265eDpb *dpb, EncCpbStatus *cpb, H265eDpbFrm *frm) in h265e_pskip_ref_check() argument
700 …if ((cpb->curr.force_pskip_is_ref) && (frm->slot_idx == dpb->curr->slice->m_refPicList[0][0]->slot… in h265e_pskip_ref_check()
705 …if ((cpb->refr.force_pskip_is_ref) && (frm->slot_idx == dpb->curr->slice->m_refPicList[0][0]->prev… in h265e_pskip_ref_check()
714 void h265e_dpb_free_unsed(H265eDpb *dpb, EncCpbStatus *cpb) in h265e_dpb_free_unsed() argument
721 H265eDpbFrm *frm = h265e_find_cpb_frame(dpb->frame_list, MAX_REFS, &cpb->curr); in h265e_dpb_free_unsed()
731 for (i = 0; i < (RK_S32)MPP_ARRAY_ELEMS(dpb->frame_list); i++) { in h265e_dpb_free_unsed()
732 H265eDpbFrm *frm = &dpb->frame_list[i]; in h265e_dpb_free_unsed()
736 if (!h265e_pskip_ref_check(dpb, cpb, frm)) { in h265e_dpb_free_unsed()
749 void h265e_dpb_proc_cpb(H265eDpb *dpb, EncCpbStatus *cpb) in h265e_dpb_proc_cpb() argument
757 if (!dpb || !cpb) in h265e_dpb_proc_cpb()
761 for (index = 0; index < MPP_ARRAY_ELEMS(dpb->frame_list); index++) { in h265e_dpb_proc_cpb()
762 H265eDpbFrm *frame = &dpb->frame_list[index]; in h265e_dpb_proc_cpb()
785 p = h265e_find_cpb_in_dpb(dpb->frame_list, MAX_REFS, frm); in h265e_dpb_proc_cpb()
796 for (index = 0; index < MPP_ARRAY_ELEMS(dpb->frame_list); index++) { in h265e_dpb_proc_cpb()
797 H265eDpbFrm *frame = &dpb->frame_list[index]; in h265e_dpb_proc_cpb()
809 H265eDpbFrm *frame = dpb->curr; in h265e_dpb_proc_cpb()
818 dpb->seq_idx = max_poc; in h265e_dpb_proc_cpb()
819 dpb->gop_idx = max_gop_id; in h265e_dpb_proc_cpb()
822 for (index = 0; index < MPP_ARRAY_ELEMS(dpb->frame_list); index++) { in h265e_dpb_proc_cpb()
823 H265eDpbFrm *frame = &dpb->frame_list[index]; in h265e_dpb_proc_cpb()
833 void h265e_dpb_build_list(H265eDpb *dpb, EncCpbStatus *cpb) in h265e_dpb_build_list() argument
835 RK_S32 poc_cur = dpb->curr->slice->poc; in h265e_dpb_build_list()
836 H265eSlice* slice = dpb->curr->slice; in h265e_dpb_build_list()
841 if (get_nal_unit_type(dpb, poc_cur) == NAL_IDR_W_RADL || in h265e_dpb_build_list()
842 get_nal_unit_type(dpb, poc_cur) == NAL_IDR_N_LP) { in h265e_dpb_build_list()
843 dpb->last_idr = poc_cur; in h265e_dpb_build_list()
846 slice->last_idr = dpb->last_idr; in h265e_dpb_build_list()
849 slice->m_nalUnitType = get_nal_unit_type(dpb, poc_cur); in h265e_dpb_build_list()
869 h265e_dpb_dec_refresh_marking(dpb, poc_cur, slice->m_nalUnitType); in h265e_dpb_build_list()
870 h265e_dpb_cpb2rps(dpb, poc_cur, slice, cpb); in h265e_dpb_build_list()
872 …slice->m_numRefIdx[L0] = MPP_MIN(dpb->max_ref_l0, slice->m_rps->m_numberOfPictures); // Ensuring … in h265e_dpb_build_list()
873 slice->m_numRefIdx[L1] = MPP_MIN(dpb->max_ref_l1, slice->m_rps->m_numberOfPictures); in h265e_dpb_build_list()
875 h265e_slice_set_ref_list(dpb->frame_list, slice); in h265e_dpb_build_list()
927 h265e_dpb_free_unsed(dpb, cpb); in h265e_dpb_build_list()
931 MPP_RET h265e_dpb_hal_start(H265eDpb *dpb, RK_S32 slot_idx) in h265e_dpb_hal_start() argument
933 H265eDpbFrm *frm = &dpb->frame_list[slot_idx]; in h265e_dpb_hal_start()
940 MPP_RET h265e_dpb_hal_end(H265eDpb *dpb, RK_S32 slot_idx) in h265e_dpb_hal_end() argument
942 H265eDpbFrm *frm = &dpb->frame_list[slot_idx]; in h265e_dpb_hal_end()