Lines Matching refs:frm

106 void _dump_frm(EncFrmStatus *frm, const char *func, RK_S32 line)  in _dump_frm()  argument
108 if (!frm->valid) in _dump_frm()
111 if (frm->is_non_ref) { in _dump_frm()
113 func, line, frm->valid, frm->seq_idx, in _dump_frm()
114 frm->is_intra ? "intra" : "inter", in _dump_frm()
115 frm->temporal_id, frm->ref_mode, frm->ref_arg); in _dump_frm()
116 } else if (frm->is_lt_ref) { in _dump_frm()
118 func, line, frm->valid, frm->seq_idx, in _dump_frm()
119 frm->is_intra ? "intra" : "inter", in _dump_frm()
120 frm->temporal_id, frm->ref_mode, frm->ref_arg, in _dump_frm()
121 frm->lt_idx); in _dump_frm()
124 func, line, frm->valid, frm->seq_idx, in _dump_frm()
125 frm->is_intra ? "intra" : "inter", in _dump_frm()
126 frm->temporal_id, frm->ref_mode, frm->ref_arg); in _dump_frm()
292 static void set_st_cfg_to_frm(EncFrmStatus *frm, RK_S32 seq_idx, in set_st_cfg_to_frm() argument
295 memset(frm, 0, sizeof(*frm)); in set_st_cfg_to_frm()
297 frm->seq_idx = seq_idx; in set_st_cfg_to_frm()
298 frm->valid = 1; in set_st_cfg_to_frm()
299 frm->is_idr = (seq_idx == 0); in set_st_cfg_to_frm()
300 frm->is_intra = frm->is_idr; in set_st_cfg_to_frm()
301 frm->is_non_ref = st_cfg->is_non_ref; in set_st_cfg_to_frm()
302 frm->is_lt_ref = 0; in set_st_cfg_to_frm()
303 frm->temporal_id = st_cfg->temporal_id; in set_st_cfg_to_frm()
304 frm->ref_mode = st_cfg->ref_mode; in set_st_cfg_to_frm()
305 frm->ref_arg = st_cfg->ref_arg; in set_st_cfg_to_frm()
308 dump_frm(frm); in set_st_cfg_to_frm()
311 static MPP_RET set_frm_refresh_flag(EncFrmStatus *frm, MppEncRefsImpl *p) in set_frm_refresh_flag() argument
315 if (!frm || !p) in set_frm_refresh_flag()
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()
322 frm->is_i_refresh = 0; in set_frm_refresh_flag()
327 static void set_lt_cfg_to_frm(EncFrmStatus *frm, RefsCnt *lt_cfg) in set_lt_cfg_to_frm() argument
329 frm->is_non_ref = 0; in set_lt_cfg_to_frm()
330 frm->is_lt_ref = 1; in set_lt_cfg_to_frm()
331 frm->temporal_id = lt_cfg->tid; in set_lt_cfg_to_frm()
332 frm->lt_idx = lt_cfg->lt_idx; in set_lt_cfg_to_frm()
335 frm->ref_mode = lt_cfg->ref_mode; in set_lt_cfg_to_frm()
336 frm->ref_arg = lt_cfg->ref_arg; in set_lt_cfg_to_frm()
340 dump_frm(frm); in set_lt_cfg_to_frm()
343 static EncFrmStatus *get_ref_from_cpb(EncVirtualCpb *cpb, EncFrmStatus *frm) in get_ref_from_cpb() argument
345 MppEncRefMode ref_mode = frm->ref_mode; in get_ref_from_cpb()
346 RK_S32 ref_arg = frm->ref_arg; in get_ref_from_cpb()
348 if (frm->is_idr) in get_ref_from_cpb()
372 mpp_err_f("frm %d not supported ref mode 0x%x\n", frm->seq_idx, ref_mode); in get_ref_from_cpb()
379 frm->seq_idx, ref_mode, ref_arg, ref->seq_idx, in get_ref_from_cpb()
384 frm->seq_idx, ref_mode, ref_arg, ref->seq_idx); in get_ref_from_cpb()
392 static RK_S32 check_ref_cpb_pos(EncVirtualCpb *cpb, EncFrmStatus *frm) in check_ref_cpb_pos() argument
394 RK_S32 seq_idx = frm->seq_idx; in check_ref_cpb_pos()
398 if (!frm->valid || frm->is_non_ref) { in check_ref_cpb_pos()
403 if (frm->is_lt_ref) { in check_ref_cpb_pos()
409 if (cpb_ref->valid && cpb_ref->lt_idx == frm->lt_idx) { in check_ref_cpb_pos()
493 static void store_ref_to_cpb(EncVirtualCpb *cpb, EncFrmStatus *frm) in store_ref_to_cpb() argument
495 RK_S32 seq_idx = frm->seq_idx; in store_ref_to_cpb()
496 RK_S32 lt_idx = frm->lt_idx; in store_ref_to_cpb()
497 RK_S32 tid = frm->temporal_id; in store_ref_to_cpb()
500 mpp_assert(frm->valid); in store_ref_to_cpb()
505 if (frm->is_non_ref) in store_ref_to_cpb()
508 if (frm->is_intra) in store_ref_to_cpb()
509 cpb->mode_refs[REF_TO_PREV_INTRA].val = frm->val; in store_ref_to_cpb()
511 if (frm->is_lt_ref) { 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()
537 cpb_ref->val = frm->val; 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()
553 cpb->cpb_refs[0].val = frm->val; in store_ref_to_cpb()
599 EncFrmStatus frm; in mpp_enc_refs_dryrun() local
604 set_st_cfg_to_frm(&frm, seq_idx++, st_cfg); in mpp_enc_refs_dryrun()
605 set_frm_refresh_flag(&frm, p); in mpp_enc_refs_dryrun()
620 set_lt_cfg_to_frm(&frm, lt_cfg); in mpp_enc_refs_dryrun()
640 EncFrmStatus *ref = get_ref_from_cpb(cpb, &frm); in mpp_enc_refs_dryrun()
654 store_ref_to_cpb(cpb, &frm); in mpp_enc_refs_dryrun()
790 EncFrmStatus *frm = &status->curr; in mpp_enc_refs_get_cpb() local
795 RK_S32 prev_frm_is_pass1 = frm->save_pass1; in mpp_enc_refs_get_cpb()
829 set_st_cfg_to_frm(frm, cpb->seq_idx++, st_cfg); in mpp_enc_refs_get_cpb()
830 set_frm_refresh_flag(frm, p); in mpp_enc_refs_get_cpb()
843 set_lt_cfg_to_frm(frm, lt_cfg); in mpp_enc_refs_get_cpb()
864 frm->is_non_ref = 0; in mpp_enc_refs_get_cpb()
865 frm->is_lt_ref = 1; in mpp_enc_refs_get_cpb()
866 frm->lt_idx = usr_cfg->force_lt_idx; in mpp_enc_refs_get_cpb()
867 if (frm->is_idr && frm->lt_idx) { in mpp_enc_refs_get_cpb()
868 frm->lt_idx = 0; in mpp_enc_refs_get_cpb()
872 frm->temporal_id = 0; in mpp_enc_refs_get_cpb()
882 frm->is_idr || frm->is_lt_ref) in mpp_enc_refs_get_cpb()
884 frm->is_idr ? "IDR" : (frm->is_lt_ref ? "LTR" : "st")); in mpp_enc_refs_get_cpb()
886 frm->temporal_id = usr_cfg->force_temporal_id; in mpp_enc_refs_get_cpb()
892 frm->ref_mode = usr_cfg->force_ref_mode; in mpp_enc_refs_get_cpb()
893 frm->ref_arg = usr_cfg->force_ref_arg; in mpp_enc_refs_get_cpb()
899 frm->is_non_ref = 1; in mpp_enc_refs_get_cpb()
905 frm->force_pskip_is_ref = 1; in mpp_enc_refs_get_cpb()
910 frm->non_recn = frm->is_non_ref || (p->igop == 1); in mpp_enc_refs_get_cpb()
920 EncFrmStatus *ref_found = get_ref_from_cpb(&p->cpb, frm); in mpp_enc_refs_get_cpb()
932 frm->use_pass1 = 1; in mpp_enc_refs_get_cpb()
936 dump_frm(frm); in mpp_enc_refs_get_cpb()
947 store_ref_to_cpb(&p->cpb, frm); in mpp_enc_refs_get_cpb()
999 EncFrmStatus *frm = &status->curr; in mpp_enc_refs_get_cpb_pass1() local
1002 frm->valid = 1; in mpp_enc_refs_get_cpb_pass1()
1003 frm->save_pass1 = 1; in mpp_enc_refs_get_cpb_pass1()
1004 frm->is_non_ref = 1; in mpp_enc_refs_get_cpb_pass1()
1005 frm->is_lt_ref = 0; in mpp_enc_refs_get_cpb_pass1()
1006 frm->temporal_id = 0; in mpp_enc_refs_get_cpb_pass1()
1007 frm->ref_mode = REF_TO_PREV_REF_FRM; in mpp_enc_refs_get_cpb_pass1()
1008 frm->ref_arg = 0; in mpp_enc_refs_get_cpb_pass1()
1009 frm->non_recn = 0; in mpp_enc_refs_get_cpb_pass1()
1012 EncFrmStatus *ref_found = get_ref_from_cpb(cpb, frm); in mpp_enc_refs_get_cpb_pass1()
1024 dump_frm(frm); in mpp_enc_refs_get_cpb_pass1()
1035 store_ref_to_cpb(cpb, frm); in mpp_enc_refs_get_cpb_pass1()