Opened 8 years ago Closed 8 years ago #1470 closed defect (fixed)Difference between spec and HM in Equation (8-9)
Description
Equation(8-9) in spec: for(rIdx = 0; rIdx <= num_ref_idx_l0_active_minus1; rIdx++) RefPicList0[rIdx] = ref_pic_list_modification_flag_l0 ? RefPicListTemp0[list_entry_l0[rIdx]] : RefPicListTemp0[rIdx] if(pps_curr_pic_ref_enabled_flag && !ref_pic_list_modification_flag_l0 && NumRpsCurrTempList0 > (num_ref_idx_l0_active_minus1 + 1)) RefPicList0[num_ref_idx_l0_active_minus1] = currPic
But function TComSlice::setRefPOCListSliceHeader() in HM16.15_SCM8.4: for (Int rIdx = 0; rIdx < m_aiNumRefIdx[REF_PIC_LIST_0]; rIdx ++) { cIdx = m_RefPicListModification.getRefPicListModificationFlagL0() ? m_RefPicListModification.getRefPicSetIdxL0(rIdx) : rIdx % numPicTotalCurr; assert(cIdx >= 0 && cIdx < numPicTotalCurr); m_aiRefPOCList[REF_PIC_LIST_0][rIdx] = rpsPOCCurrList0[cIdx]; } if ( m_eSliceType != B_SLICE ) { m_aiNumRefIdx[REF_PIC_LIST_1] = 0; } else { // Equation (8-11) for (Int rIdx = 0; rIdx < m_aiNumRefIdx[REF_PIC_LIST_1]; rIdx ++) { cIdx = m_RefPicListModification.getRefPicListModificationFlagL1() ? m_RefPicListModification.getRefPicSetIdxL1(rIdx) : rIdx % numPicTotalCurr; assert(cIdx >= 0 && cIdx < numPicTotalCurr); m_aiRefPOCList[REF_PIC_LIST_1][rIdx] = rpsPOCCurrList1[cIdx]; } }
It is necessary to insert if clause. For example: if (getPPS()->getPpsScreenExtension().getUseIntraBlockCopy() && !m_RefPicListModification.getRefPicListModificationFlagL0() && numPicTotalCurr > m_aiNumRefIdx[REF_PIC_LIST_0]) { m_aiRefPOCList[REF_PIC_LIST_0][m_aiNumRefIdx[REF_PIC_LIST_0]-1] = getPOC(); } Attachments (1)Change History (5)comment:1 follow-up: ↓ 2 Changed 8 years ago by libinChanged 8 years ago by Haruhikocomment:2 in reply to: ↑ 1 Changed 8 years ago by Haruhiko
Replying to libin:
Bitstream attached. It encoded by HM16.15_SCM8.4 with encoder_randomaccess_main_scc.cfg + WeightedPredP = 1, WeightedPredB = 1. comment:3 Changed 8 years ago by libin
Thanks Haruhiko. Your modification looks good to me. It seems that the bug only happens when weighted prediction is used. I will fix it soon. comment:4 Changed 8 years ago by libin
fixed in r4886. Note: See
TracTickets for help on using
tickets. | This list contains all users that will be notified about changes made to this ticket. These roles will be notified: Reporter, Owner, Subscriber, Participant
|
Would you please provide a bitstream with wrong POC derivation at decoder side? It would be helpful for us to dig into this problem. Thanks!