mirror of
https://github.com/rockchip-linux/mpp.git
synced 2024-11-26 19:43:35 +08:00
fix[265e]:Fix the st refernce frame err in tsvc
This is a bug caused by the mark and use of ltr frames, when presence of multiple short temporal refenence frame, may lead to errors in reference relationships. Change-Id: I1962d81e39b704086a51b4e4098ba3feb64c47c6 Signed-off-by: Yanjun Liao <yanjun.liao@rock-chips.com>
This commit is contained in:
parent
74758e7ee9
commit
86cf93a028
@ -63,10 +63,10 @@ MPP_RET calc_ref_pic_set_idxl0(H265eDpb *dpb, H265eSlice *slice, RK_S32 ref_idx)
|
||||
}
|
||||
}
|
||||
|
||||
RpsList->m_RefPicListModification->m_RefPicSetIdxL0[0] = 0;
|
||||
RpsList->m_RefPicListModification->m_RefPicSetIdxL0[0] = ref_idx;
|
||||
for (i = 0; i < numPocLtCurr; i++) {
|
||||
if (poc_idx == refPicSetLtCurr[i]->poc)
|
||||
RpsList->m_RefPicListModification->m_RefPicSetIdxL0[0] = i;
|
||||
RpsList->m_RefPicListModification->m_RefPicSetIdxL0[0] = rps->m_numberOfPictures - rps->num_long_term_pic + i;
|
||||
}
|
||||
|
||||
return MPP_OK;
|
||||
|
@ -169,8 +169,7 @@ void h265e_slice_set_ref_list(H265eDpbFrm *frame_list, H265eSlice *slice)
|
||||
for ( rIdx = 0; rIdx < slice->m_numRefIdx[0]; rIdx++) {
|
||||
cIdx = slice->m_RefPicListModification.m_refPicListModificationFlagL0 ? slice->m_RefPicListModification.m_RefPicSetIdxL0[rIdx] : (RK_U32)rIdx % numPocTotalCurr;
|
||||
mpp_assert(cIdx >= 0 && cIdx < numPocTotalCurr);
|
||||
slice->m_refPicList[0][rIdx] = slice->m_RefPicListModification.m_refPicListModificationFlagL0 ?
|
||||
rpsCurrList0[cIdx + numPocStCurr0] : rpsCurrList0[0];
|
||||
slice->m_refPicList[0][rIdx] = rpsCurrList0[cIdx];
|
||||
slice->m_bIsUsedAsLongTerm[0][rIdx] = (cIdx >= numPocStCurr0 + numPocStCurr1);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user