Lines Matching refs:cpb
100 EncVirtualCpb cpb; member
130 #define dump_cpb(cpb) _dump_cpb(cpb, __FUNCTION__, __LINE__) argument
132 void _dump_cpb(EncVirtualCpb *cpb, const char *func, RK_S32 line) in _dump_cpb() argument
134 MppEncCpbInfo *info = &cpb->info; in _dump_cpb()
137 mpp_log("%s:%d cpb %p status:\n", func, line, cpb); in _dump_cpb()
147 dump_frm(&cpb->cpb_refs[i]); in _dump_cpb()
151 dump_frm(&cpb->mode_refs[i]); in _dump_cpb()
155 dump_frm(&cpb->st_tid_refs[i]); in _dump_cpb()
159 dump_frm(&cpb->lt_idx_refs[i]); in _dump_cpb()
162 cpb->frm_idx, cpb->seq_idx, cpb->seq_cnt, in _dump_cpb()
163 cpb->st_cfg_pos, cpb->st_cfg_repeat_pos); in _dump_cpb()
214 EncVirtualCpb *cpb = &p->cpb; in mpp_enc_refs_set_cfg() local
228 memset(cpb, 0, sizeof(*cpb)); in mpp_enc_refs_set_cfg()
238 RefsCnt *lt_cnt = &cpb->lt_cnter[i]; in mpp_enc_refs_set_cfg()
251 MppEncCpbInfo *info = &cpb->info; in mpp_enc_refs_set_cfg()
266 static void cleanup_cpb_refs(EncVirtualCpb *cpb) in cleanup_cpb_refs() argument
270 memset(cpb->cpb_refs, 0, sizeof(cpb->cpb_refs)); in cleanup_cpb_refs()
271 memset(cpb->mode_refs, 0, sizeof(cpb->mode_refs)); in cleanup_cpb_refs()
272 memset(cpb->st_tid_refs, 0, sizeof(cpb->st_tid_refs)); in cleanup_cpb_refs()
273 memset(cpb->lt_idx_refs, 0, sizeof(cpb->lt_idx_refs)); in cleanup_cpb_refs()
274 memset(cpb->list0, 0, sizeof(cpb->list0)); in cleanup_cpb_refs()
275 memset(cpb->list1, 0, sizeof(cpb->list1)); in cleanup_cpb_refs()
276 memset(cpb->cpb_st, 0, sizeof(cpb->cpb_st)); in cleanup_cpb_refs()
278 cpb->seq_idx = 0; in cleanup_cpb_refs()
279 cpb->seq_cnt++; in cleanup_cpb_refs()
280 cpb->st_cfg_pos = 0; in cleanup_cpb_refs()
281 cpb->st_cfg_repeat_pos = 0; in cleanup_cpb_refs()
283 for (i = 0; i < MPP_ARRAY_ELEMS(cpb->lt_cnter); i++) { in cleanup_cpb_refs()
284 RefsCnt *lt_cnt = &cpb->lt_cnter[i]; in cleanup_cpb_refs()
319 frm->is_i_refresh = ((frm->seq_idx % p->igop) < p->refresh_length) && p->cpb.seq_cnt > 1; in set_frm_refresh_flag()
320 frm->is_i_recovery = !(frm->seq_idx % p->igop) && p->cpb.seq_cnt > 1; in set_frm_refresh_flag()
343 static EncFrmStatus *get_ref_from_cpb(EncVirtualCpb *cpb, EncFrmStatus *frm) in get_ref_from_cpb() argument
359 ref = &cpb->mode_refs[ref_mode]; in get_ref_from_cpb()
362 ref = &cpb->st_tid_refs[ref_arg]; in get_ref_from_cpb()
365 ref = &cpb->lt_idx_refs[ref_arg]; in get_ref_from_cpb()
368 ref = &cpb->cpb_refs[ref_arg]; in get_ref_from_cpb()
392 static RK_S32 check_ref_cpb_pos(EncVirtualCpb *cpb, EncFrmStatus *frm) in check_ref_cpb_pos() argument
407 EncFrmStatus *cpb_ref = &cpb->cpb_refs[cpb_idx]; in check_ref_cpb_pos()
419 EncFrmStatus *cpb_ref = &cpb->cpb_refs[pos]; in check_ref_cpb_pos()
435 dump_cpb(cpb); in check_ref_cpb_pos()
441 static void save_cpb_status(EncVirtualCpb *cpb, EncFrmStatus *refs) in save_cpb_status() argument
443 EncFrmStatus *ref = &cpb->cpb_refs[MAX_CPB_ST_FRM]; in save_cpb_status()
444 MppEncCpbInfo *info = &cpb->info; in save_cpb_status()
465 ref = &cpb->cpb_refs[0]; in save_cpb_status()
493 static void store_ref_to_cpb(EncVirtualCpb *cpb, EncFrmStatus *frm) in store_ref_to_cpb() argument
509 cpb->mode_refs[REF_TO_PREV_INTRA].val = frm->val; in store_ref_to_cpb()
512 cpb->lt_idx_refs[lt_idx].val = frm->val; in store_ref_to_cpb()
513 cpb->st_tid_refs[tid].val = frm->val; in store_ref_to_cpb()
514 cpb->mode_refs[REF_TO_PREV_REF_FRM].val = frm->val; in store_ref_to_cpb()
515 cpb->mode_refs[REF_TO_PREV_LT_REF].val = frm->val; in store_ref_to_cpb()
523 cpb_ref = &cpb->cpb_refs[cpb_idx]; in store_ref_to_cpb()
546 cpb->st_tid_refs[tid].val = frm->val; in store_ref_to_cpb()
547 cpb->mode_refs[REF_TO_PREV_REF_FRM].val = frm->val; in store_ref_to_cpb()
548 cpb->mode_refs[REF_TO_PREV_ST_REF].val = frm->val; in store_ref_to_cpb()
551 cpb->cpb_refs[i].val = cpb->cpb_refs[i - 1].val; in store_ref_to_cpb()
553 cpb->cpb_refs[0].val = frm->val; in store_ref_to_cpb()
561 if (cpb->cpb_refs[i].valid) in store_ref_to_cpb()
562 dump_frm(&cpb->cpb_refs[i]); in store_ref_to_cpb()
579 EncVirtualCpb *cpb = &p->cpb; in mpp_enc_refs_dryrun() local
580 MppEncCpbInfo *info = &cpb->info; in mpp_enc_refs_dryrun()
591 cleanup_cpb_refs(cpb); in mpp_enc_refs_dryrun()
593 cfg->max_tlayers = cpb->info.max_st_tid + 1; in mpp_enc_refs_dryrun()
608 RefsCnt *lt_cfg = &cpb->lt_cnter[0]; in mpp_enc_refs_dryrun()
640 EncFrmStatus *ref = get_ref_from_cpb(cpb, &frm); in mpp_enc_refs_dryrun()
643 RK_S32 cpb_pos = check_ref_cpb_pos(cpb, ref); in mpp_enc_refs_dryrun()
654 store_ref_to_cpb(cpb, &frm); in mpp_enc_refs_dryrun()
658 cleanup_cpb_refs(cpb); in mpp_enc_refs_dryrun()
758 memcpy(info, &p->cpb.info, sizeof(*info)); in mpp_enc_refs_get_cpb_info()
764 static RK_S32 get_cpb_st_cfg_pos(EncVirtualCpb *cpb, MppEncRefCfgImpl *cfg) in get_cpb_st_cfg_pos() argument
766 RK_S32 st_cfg_pos = cpb->st_cfg_pos; in get_cpb_st_cfg_pos()
787 EncVirtualCpb *cpb = &p->cpb; in mpp_enc_refs_get_cpb() local
792 RefsCnt *lt_cfg = cpb->lt_cnter; in mpp_enc_refs_get_cpb()
802 if (p->igop && (cpb->seq_idx >= p->igop)) { in mpp_enc_refs_get_cpb()
804 p->cpb.seq_cnt = cpb->seq_idx / p->igop + 1; in mpp_enc_refs_get_cpb()
812 p->cpb.seq_cnt = 0; in mpp_enc_refs_get_cpb()
817 cleanup_cpb_refs(cpb); in mpp_enc_refs_get_cpb()
819 cpb->st_cfg_pos = 0; in mpp_enc_refs_get_cpb()
820 cpb->st_cfg_repeat_pos = 0; in mpp_enc_refs_get_cpb()
825 cpb->frm_idx++; in mpp_enc_refs_get_cpb()
826 cpb->st_cfg_pos = get_cpb_st_cfg_pos(cpb, cfg); in mpp_enc_refs_get_cpb()
827 st_cfg = &cfg->st_cfg[cpb->st_cfg_pos]; in mpp_enc_refs_get_cpb()
829 set_st_cfg_to_frm(frm, cpb->seq_idx++, st_cfg); in mpp_enc_refs_get_cpb()
832 lt_cfg = p->cpb.lt_cnter; in mpp_enc_refs_get_cpb()
875 cpb->st_cfg_repeat_pos = 0; in mpp_enc_refs_get_cpb()
876 cpb->st_cfg_pos = 0; in mpp_enc_refs_get_cpb()
913 cpb->st_cfg_repeat_pos++; in mpp_enc_refs_get_cpb()
914 if (cpb->st_cfg_repeat_pos > st_cfg->repeat) { in mpp_enc_refs_get_cpb()
915 cpb->st_cfg_repeat_pos = 0; in mpp_enc_refs_get_cpb()
916 cpb->st_cfg_pos++; in mpp_enc_refs_get_cpb()
920 EncFrmStatus *ref_found = get_ref_from_cpb(&p->cpb, frm); in mpp_enc_refs_get_cpb()
922 RK_S32 cpb_idx = check_ref_cpb_pos(&p->cpb, ref_found); in mpp_enc_refs_get_cpb()
925 cpb->list0[0].val = ref->val; in mpp_enc_refs_get_cpb()
943 save_cpb_status(&p->cpb, status->init); in mpp_enc_refs_get_cpb()
947 store_ref_to_cpb(&p->cpb, frm); in mpp_enc_refs_get_cpb()
951 save_cpb_status(&p->cpb, status->final); in mpp_enc_refs_get_cpb()
967 EncVirtualCpb *cpb = &p->cpb; in mpp_enc_refs_next_frm_is_intra() local
974 if (p->igop && cpb->seq_idx >= p->igop) in mpp_enc_refs_next_frm_is_intra()
980 if (!cpb->frm_idx) in mpp_enc_refs_next_frm_is_intra()
998 EncVirtualCpb *cpb = &p->cpb; in mpp_enc_refs_get_cpb_pass1() local
1012 EncFrmStatus *ref_found = get_ref_from_cpb(cpb, frm); in mpp_enc_refs_get_cpb_pass1()
1014 RK_S32 cpb_idx = check_ref_cpb_pos(cpb, ref_found); in mpp_enc_refs_get_cpb_pass1()
1017 cpb->list0[0].val = ref->val; in mpp_enc_refs_get_cpb_pass1()
1031 save_cpb_status(cpb, status->init); in mpp_enc_refs_get_cpb_pass1()
1035 store_ref_to_cpb(cpb, frm); in mpp_enc_refs_get_cpb_pass1()
1039 save_cpb_status(cpb, status->final); in mpp_enc_refs_get_cpb_pass1()
1054 memcpy(&p->cpb_stash, &p->cpb, sizeof(p->cpb_stash)); in mpp_enc_refs_stash()
1070 memcpy(&p->cpb, &p->cpb_stash, sizeof(p->cpb)); in mpp_enc_refs_rollback()