Lines Matching refs:slice

41 H265eDpbFrm* get_lt_ref_pic(H265eDpbFrm *frame_list, H265eSlice *slice, RK_S32 poc, RK_U32 pocHasMs…  in get_lt_ref_pic()  argument
46 RK_S32 pocCycle = 1 << slice->m_sps->m_bitsForPOC; in get_lt_ref_pic()
55 if (frame->on_used && frame->poc != slice->poc && frame->slice->is_referenced) { in get_lt_ref_pic()
75 void h265e_slice_set_ref_list(H265eDpbFrm *frame_list, H265eSlice *slice) in h265e_slice_set_ref_list() argument
77 H265eReferencePictureSet *rps = slice->m_rps; in h265e_slice_set_ref_list()
88 if (slice->m_sliceType == I_SLICE) { in h265e_slice_set_ref_list()
89 memset(slice->m_refPicList, 0, sizeof(slice->m_refPicList)); in h265e_slice_set_ref_list()
90 memset(slice->m_numRefIdx, 0, sizeof(slice->m_numRefIdx)); in h265e_slice_set_ref_list()
95 refPic = get_ref_pic(frame_list, slice->poc + rps->delta_poc[i]); in h265e_slice_set_ref_list()
105 refPic = get_ref_pic(frame_list, slice->poc + rps->delta_poc[i]); in h265e_slice_set_ref_list()
116 refPic = get_lt_ref_pic(frame_list, slice, rps->m_RealPoc[i], rps->check_lt_msb[i]); in h265e_slice_set_ref_list()
126 refPic = get_lt_ref_pic(frame_list, slice, rps->m_RealPoc[i], rps->check_lt_msb[i]); in h265e_slice_set_ref_list()
150 if (slice->m_sliceType == B_SLICE) { in h265e_slice_set_ref_list()
167 memset(slice->m_bIsUsedAsLongTerm, 0, sizeof(slice->m_bIsUsedAsLongTerm)); in h265e_slice_set_ref_list()
169 for ( rIdx = 0; rIdx < slice->m_numRefIdx[0]; rIdx++) { in h265e_slice_set_ref_list()
170 …cIdx = slice->m_RefPicListModification.m_refPicListModificationFlagL0 ? slice->m_RefPicListModific… in h265e_slice_set_ref_list()
172 slice->m_refPicList[0][rIdx] = rpsCurrList0[cIdx]; in h265e_slice_set_ref_list()
173 slice->m_bIsUsedAsLongTerm[0][rIdx] = (cIdx >= numPocStCurr0 + numPocStCurr1); in h265e_slice_set_ref_list()
176 if (slice->m_sliceType != B_SLICE) { in h265e_slice_set_ref_list()
177 slice->m_numRefIdx[1] = 0; in h265e_slice_set_ref_list()
178 memset(slice->m_refPicList[1], 0, sizeof(slice->m_refPicList[1])); in h265e_slice_set_ref_list()
180 for (rIdx = 0; rIdx < slice->m_numRefIdx[1]; rIdx++) { in h265e_slice_set_ref_list()
181 …cIdx = slice->m_RefPicListModification.m_refPicListModificationFlagL1 ? slice->m_RefPicListModific… in h265e_slice_set_ref_list()
183 slice->m_refPicList[1][rIdx] = rpsCurrList1[cIdx]; in h265e_slice_set_ref_list()
184 slice->m_bIsUsedAsLongTerm[1][rIdx] = (cIdx >= numPocStCurr0 + numPocStCurr1); in h265e_slice_set_ref_list()
191 void h265e_slice_set_ref_poc_list(H265eSlice *slice) in h265e_slice_set_ref_poc_list() argument
198 for (numRefIdx = 0; numRefIdx < slice->m_numRefIdx[dir]; numRefIdx++) { in h265e_slice_set_ref_poc_list()
199 slice->m_refPOCList[dir][numRefIdx] = slice->m_refPicList[dir][numRefIdx]->poc; in h265e_slice_set_ref_poc_list()
215 H265eSlice *slice = p->dpb->curr->slice; in h265e_slice_init() local
216 p->slice = p->dpb->curr->slice; in h265e_slice_init()
218 memset(slice, 0, sizeof(H265eSlice)); in h265e_slice_init()
219 slice->m_sps = sps; in h265e_slice_init()
220 slice->m_vps = vps; in h265e_slice_init()
221 slice->m_pps = pps; in h265e_slice_init()
222 slice->m_numRefIdx[0] = 0; in h265e_slice_init()
223 slice->m_numRefIdx[1] = 0; in h265e_slice_init()
224 slice->m_colFromL0Flag = 1; in h265e_slice_init()
225 slice->m_colRefIdx = 0; in h265e_slice_init()
226 slice->m_bCheckLDC = 0; in h265e_slice_init()
227 slice->m_sliceQpDeltaCb = 0; in h265e_slice_init()
228 slice->m_sliceQpDeltaCr = 0; in h265e_slice_init()
229 slice->m_maxNumMergeCand = 5; in h265e_slice_init()
230 slice->m_bFinalized = 0; in h265e_slice_init()
232 slice->m_cabacInitFlag = 0; in h265e_slice_init()
233 slice->m_numEntryPointOffsets = 0; in h265e_slice_init()
234 slice->m_enableTMVPFlag = sps->m_TMVPFlagsPresent; in h265e_slice_init()
235 slice->m_picOutputFlag = 1; in h265e_slice_init()
238 slice->m_sliceType = I_SLICE; in h265e_slice_init()
243 slice->m_sliceType = P_SLICE; in h265e_slice_init()
249 if (slice->m_sliceType != B_SLICE && !curr.non_recn) in h265e_slice_init()
250 slice->is_referenced = 1; in h265e_slice_init()
252 if (slice->m_pps->m_deblockingFilterOverrideEnabledFlag) { in h265e_slice_init()
255 slice->m_deblockingFilterDisable = pps->m_picDisableDeblockingFilterFlag; in h265e_slice_init()
256 slice->m_deblockingFilterBetaOffsetDiv2 = pps->m_deblockingFilterBetaOffsetDiv2; in h265e_slice_init()
257 slice->m_deblockingFilterTcOffsetDiv2 = pps->m_deblockingFilterTcOffsetDiv2; in h265e_slice_init()
259 slice->m_saoEnabledFlag = !codec->sao_cfg.slice_sao_luma_disable; in h265e_slice_init()
260 slice->m_saoEnabledFlagChroma = (prep_cfg->format == MPP_FMT_YUV400) ? 0 : in h265e_slice_init()
262 slice->m_maxNumMergeCand = codec->merge_cfg.max_mrg_cnd; in h265e_slice_init()
263 slice->m_cabacInitFlag = codec->entropy_cfg.cabac_init_flag; in h265e_slice_init()
264 slice->m_picOutputFlag = 1; in h265e_slice_init()
265 slice->m_ppsId = pps->m_PPSId; in h265e_slice_init()
266 if (slice->m_pps->m_bSliceChromaQpFlag) { in h265e_slice_init()
267 slice->m_sliceQpDeltaCb = codec->trans_cfg.cb_qp_offset; in h265e_slice_init()
268 slice->m_sliceQpDeltaCr = codec->trans_cfg.cr_qp_offset; in h265e_slice_init()
271 slice->poc = p->dpb->curr->seq_idx; in h265e_slice_init()
272 slice->gop_idx = p->dpb->gop_idx; in h265e_slice_init()
273 slice->temporal_id = p->dpb->curr->status.temporal_id; in h265e_slice_init()
275 p->dpb->curr->poc = slice->poc; in h265e_slice_init()
280 slice->m_sliceType, slice->is_referenced); in h265e_slice_init()
326 RK_U8 find_matching_ltrp(H265eSlice* slice, RK_U32 *ltrpsIndex, RK_S32 ltrpPOC, RK_U32 usedFlag) in find_matching_ltrp() argument
328 RK_U32 lsb = ltrpPOC % (1 << slice->m_sps->m_bitsForPOC); in find_matching_ltrp()
330 for (k = 0; k < slice->m_sps->m_numLongTermRefPicSPS; k++) { in find_matching_ltrp()
331 …if ((lsb == slice->m_sps->m_ltRefPicPocLsbSps[k]) && (usedFlag == slice->m_sps->m_usedByCurrPicLtS… in find_matching_ltrp()
354 void h265e_code_slice_header(H265eSlice *slice, MppWriteCtx *bitIf, in h265e_code_slice_header() argument
359 H265eSps *sps = slice->m_sps; in h265e_code_slice_header()
367 mpp_writer_put_ue(bitIf, slice->m_ppsId); in h265e_code_slice_header()
377 H265eReferencePictureSet* rps = slice->m_rps; in h265e_code_slice_header()
378 slice->m_enableTMVPFlag = 0; in h265e_code_slice_header()
379 if (!slice->m_dependentSliceSegmentFlag) { in h265e_code_slice_header()
380 for (i = 0; i < (RK_U32)slice->m_pps->m_numExtraSliceHeaderBits; i++) { in h265e_code_slice_header()
381 mpp_writer_put_bits(bitIf, (slice->slice_reserved_flag >> i) & 0x1, 1); in h265e_code_slice_header()
384 mpp_writer_put_ue(bitIf, slice->m_sliceType); in h265e_code_slice_header()
386 if (slice->m_pps->m_outputFlagPresentFlag) { in h265e_code_slice_header()
387 mpp_writer_put_bits(bitIf, slice->m_picOutputFlag ? 1 : 0, 1); in h265e_code_slice_header()
390 if (slice->m_sliceType != I_SLICE) { // skip frame can't iDR in h265e_code_slice_header()
391 …RK_S32 picOrderCntLSB = (slice->poc - slice->last_idr + (1 << slice->m_sps->m_bitsForPOC)) % (1 <<… in h265e_code_slice_header()
392 mpp_writer_put_bits(bitIf, picOrderCntLSB, slice->m_sps->m_bitsForPOC); in h265e_code_slice_header()
393 if (slice->m_bdIdx < 0) { in h265e_code_slice_header()
395 … code_st_refpic_set(bitIf, rps, slice->m_sps->m_RPSList.m_numberOfReferencePictureSets); in h265e_code_slice_header()
399 while ((1 << numBits) < slice->m_sps->m_RPSList.m_numberOfReferencePictureSets) { in h265e_code_slice_header()
404 mpp_writer_put_bits(bitIf, slice->m_bdIdx, numBits); in h265e_code_slice_header()
407 if (slice->m_sps->m_bLongTermRefsPresent) { in h265e_code_slice_header()
416 if (find_matching_ltrp(slice, &ltrpIndex, rps->poc[k], rps->m_used[k])) { in h265e_code_slice_header()
427 while (slice->m_sps->m_numLongTermRefPicSPS > (RK_U32)(1 << bitsForLtrpInSPS)) { in h265e_code_slice_header()
431 if (slice->m_sps->m_numLongTermRefPicSPS > 0) { in h265e_code_slice_header()
445 mpp_writer_put_bits(bitIf, rps->m_pocLSBLT[k], slice->m_sps->m_bitsForPOC); in h265e_code_slice_header()
465 if (slice->m_sps->m_TMVPFlagsPresent) { in h265e_code_slice_header()
466 mpp_writer_put_bits(bitIf, slice->m_enableTMVPFlag ? 1 : 0, 1); in h265e_code_slice_header()
470 if (slice->m_sps->m_bUseSAO) { //skip frame close sao in h265e_code_slice_header()
477 if (slice->m_sliceType != I_SLICE) { in h265e_code_slice_header()
478 … RK_U32 overrideFlag = (slice->m_numRefIdx[0] != (RK_S32)slice->m_pps->m_numRefIdxL0DefaultActive); in h265e_code_slice_header()
481 mpp_writer_put_ue(bitIf, slice->m_numRefIdx[0] - 1); in h265e_code_slice_header()
482 slice->m_numRefIdx[1] = 0; in h265e_code_slice_header()
486 if (slice->m_pps->m_listsModificationPresentFlag && get_num_rps_cur_templist(rps) > 1) { in h265e_code_slice_header()
487 H265eRefPicListModification* refPicListModification = &slice->m_RefPicListModification; in h265e_code_slice_header()
497 for (i = 0; i < (RK_U32)slice->m_numRefIdx[0]; i++) { in h265e_code_slice_header()
504 if (slice->m_pps->m_cabacInitPresentFlag) { in h265e_code_slice_header()
505 mpp_writer_put_bits(bitIf, slice->m_cabacInitFlag, 1); in h265e_code_slice_header()
508 if (slice->m_enableTMVPFlag) { in h265e_code_slice_header()
510 if (slice->m_sliceType != I_SLICE && in h265e_code_slice_header()
511 ((slice->m_colFromL0Flag == 1 && slice->m_numRefIdx[0] > 1) || in h265e_code_slice_header()
512 (slice->m_colFromL0Flag == 0 && slice->m_numRefIdx[1] > 1))) { in h265e_code_slice_header()
513 mpp_writer_put_ue(bitIf, slice->m_colRefIdx); in h265e_code_slice_header()
517 if (slice->m_sliceType != I_SLICE) { in h265e_code_slice_header()
518 RK_S32 flag = MRG_MAX_NUM_CANDS - slice->m_maxNumMergeCand; in h265e_code_slice_header()
522 RK_S32 code = slice->m_sliceQp - (slice->m_pps->m_picInitQPMinus26 + 26); in h265e_code_slice_header()
524 if (slice->m_pps->m_bSliceChromaQpFlag) { in h265e_code_slice_header()
525 code = slice->m_sliceQpDeltaCb; in h265e_code_slice_header()
527 code = slice->m_sliceQpDeltaCr; in h265e_code_slice_header()
530 if (slice->m_pps->m_deblockingFilterControlPresentFlag) { in h265e_code_slice_header()
531 if (slice->m_pps->m_deblockingFilterOverrideEnabledFlag) { in h265e_code_slice_header()
532 mpp_writer_put_bits(bitIf, slice->m_deblockingFilterOverrideFlag, 1); in h265e_code_slice_header()
534 if (slice->m_deblockingFilterOverrideFlag) { in h265e_code_slice_header()
535 mpp_writer_put_bits(bitIf, slice->m_deblockingFilterDisable, 1); in h265e_code_slice_header()
536 if (!slice->m_deblockingFilterDisable) { in h265e_code_slice_header()
537 mpp_writer_put_se(bitIf, slice->m_deblockingFilterBetaOffsetDiv2); in h265e_code_slice_header()
538 mpp_writer_put_se(bitIf, slice->m_deblockingFilterTcOffsetDiv2); in h265e_code_slice_header()
543 if (slice->m_pps->m_tiles_enabled_flag) { in h265e_code_slice_header()
546 if (slice->m_pps->m_sliceHeaderExtensionPresentFlag) { in h265e_code_slice_header()
547 mpp_writer_put_ue(bitIf, slice->slice_header_extension_length); in h265e_code_slice_header()
548 for (i = 0; i < slice->slice_header_extension_length; i++) { in h265e_code_slice_header()
555 void code_skip_flag(H265eSlice *slice, RK_U32 abs_part_idx, DataCu *cu) in code_skip_flag() argument
558 H265eCabacCtx *cabac_ctx = &slice->m_cabac; in code_skip_flag()
559 H265eSps *sps = slice->m_sps; in code_skip_flag()
574 h265e_cabac_encodeBin(cabac_ctx, &slice->m_contextModels[OFF_SKIP_FLAG_CTX + ctxSkip], 1); in code_skip_flag()
577 static void code_merge_index(H265eSlice *slice) in code_merge_index() argument
579 H265eCabacCtx *cabac_ctx = &slice->m_cabac; in code_merge_index()
581 h265e_cabac_encodeBin(cabac_ctx, &slice->m_contextModels[OFF_MERGE_IDX_EXT_CTX], 0); in code_merge_index()
584 static void code_split_flag(H265eSlice *slice, RK_U32 abs_part_idx, RK_U32 depth, DataCu *cu) in code_split_flag() argument
586 H265eSps *sps = slice->m_sps; in code_split_flag()
588 if (depth == slice->m_sps->m_maxCUDepth - slice->m_sps->m_addCUDepth) in code_split_flag()
593 H265eCabacCtx *cabac_ctx = &slice->m_cabac; in code_split_flag()
596 h265e_cabac_encodeBin(cabac_ctx, &slice->m_contextModels[OFF_SPLIT_FLAG_CTX], currSplitFlag); in code_split_flag()
599 static void encode_cu(H265eSlice *slice, RK_U32 abs_part_idx, RK_U32 depth, DataCu *cu) in encode_cu() argument
601 H265eSps *sps = slice->m_sps; in encode_cu()
612 code_split_flag(slice, abs_part_idx, depth, cu); in encode_cu()
630 encode_cu(slice, abs_part_idx, depth + 1, cu); in encode_cu()
637 code_skip_flag(slice, abs_part_idx, cu); in encode_cu()
639 code_merge_index(slice); in encode_cu()
706 static void proc_ctu64(H265eSlice *slice, DataCu *cu) in proc_ctu64() argument
708 H265eSps *sps = slice->m_sps; in proc_ctu64()
764 static void proc_ctu32(H265eSlice *slice, DataCu *cu) in proc_ctu32() argument
766 H265eSps *sps = slice->m_sps; in proc_ctu32()
799 static void h265e_code_skip_tile(void *ctx, H265eSlice *slice, MppWriteCtx *bitIf, TileInfo *tile) in h265e_code_skip_tile() argument
805 H265eCabacCtx *cabac_ctx = &slice->m_cabac; in h265e_code_skip_tile()
817 h265e_write_nal(bitIf, slice->temporal_id); in h265e_code_skip_tile()
818 h265e_code_slice_header(slice, bitIf, tile->ctu_addr); in h265e_code_skip_tile()
820 h265e_reset_enctropy((void*)slice); in h265e_code_skip_tile()
823 slice->is_referenced = 0; in h265e_code_skip_tile()
831 proc_ctu(slice, &cu); in h265e_code_skip_tile()
832 encode_cu(slice, 0, 0, &cu); in h265e_code_skip_tile()
844 proc_ctu(slice, &cu); in h265e_code_skip_tile()
845 encode_cu(slice, 0, 0, &cu); in h265e_code_skip_tile()
851 RK_S32 h265e_code_slice_skip_frame(void *ctx, H265eSlice *slice, RK_U8 *buf, RK_S32 len) in h265e_code_slice_skip_frame() argument
882 h265e_code_skip_tile(ctx, slice, &bitIf, &tile); in h265e_code_slice_skip_frame()
892 h265e_code_skip_tile(ctx, slice, &bitIf, &tile); in h265e_code_slice_skip_frame()