diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index 44c25f9a587c13d7a6052492451e4e91abb74159..70e8cc32f8a04efeaf78598bac09b9750f88a804 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -99,6 +99,9 @@ Slice::Slice() , m_pcPicHeader ( NULL ) , m_colFromL0Flag ( true ) , m_colRefIdx ( 0 ) +#if JVET_AA0093_DIVERSITY_CRITERION_FOR_ARMC +, m_costForARMC ( MAX_UINT ) +#endif #if INTER_LIC , m_UseLIC ( false ) #endif @@ -184,6 +187,9 @@ void Slice::initSlice() m_colourPlaneId = 0; #endif m_colRefIdx = 0; +#if JVET_AA0093_DIVERSITY_CRITERION_FOR_ARMC + m_costForARMC = MAX_UINT; +#endif m_lmcsEnabledFlag = 0; m_explicitScalingListUsed = 0; initEqualRef(); diff --git a/source/Lib/DecoderLib/DecCu.cpp b/source/Lib/DecoderLib/DecCu.cpp index c12ece7c450269dfa6b4f95323e091b86885f926..dc3afe71d5ce453dc02432fa6863b36eab44a20e 100644 --- a/source/Lib/DecoderLib/DecCu.cpp +++ b/source/Lib/DecoderLib/DecCu.cpp @@ -1974,13 +1974,23 @@ void DecCu::xDeriveCUMV( CodingUnit &cu ) if (pu.ibcMbvdMergeFlag) { int fPosIBCBaseIdx = pu.ibcMbvdMergeIdx / IBC_MBVD_MAX_REFINE_NUM; - PU::getIBCMergeCandidates(pu, mrgCtx); #if JVET_Y0058_IBC_LIST_MODIFY && JVET_W0090_ARMC_TM + if (pu.cs->sps->getUseAML()) + { #if JVET_Z0075_IBC_HMVP_ENLARGE - m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx, 0, IBC_MRG_MAX_NUM_CANDS_MEM); + PU::getIBCMergeCandidates(pu, mrgCtx); + m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx, 0, IBC_MRG_MAX_NUM_CANDS_MEM); #else - m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx); + PU::getIBCMergeCandidates(pu, mrgCtx, (((fPosIBCBaseIdx / ADAPTIVE_IBC_SUB_GROUP_SIZE + 1) * ADAPTIVE_IBC_SUB_GROUP_SIZE < pu.cs->sps->getMaxNumIBCMergeCand()) || (fPosIBCBaseIdx / ADAPTIVE_IBC_SUB_GROUP_SIZE) == 0) ? fPosIBCBaseIdx / ADAPTIVE_IBC_SUB_GROUP_SIZE * ADAPTIVE_IBC_SUB_GROUP_SIZE + ADAPTIVE_IBC_SUB_GROUP_SIZE - 1 : fPosIBCBaseIdx); + m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx, fPosIBCBaseIdx); +#endif + } + else + { #endif + PU::getIBCMergeCandidates(pu, mrgCtx, fPosIBCBaseIdx); +#if JVET_Y0058_IBC_LIST_MODIFY && JVET_W0090_ARMC_TM + } #endif PU::getIbcMbvdMergeCandidates(pu, mrgCtx, fPosIBCBaseIdx + 1); diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index dfdf218d3035342eaa2d1f0dde0b7e4c8e1c480c..1aa38fb6ae48f40547a649ee3055a6225d9ade4f 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -10627,11 +10627,14 @@ void EncCu::xCheckRDCostIBCModeMerge2Nx2N(CodingStructure *&tempCS, CodingStruct pu.mergeFlag = false; #if JVET_Y0058_IBC_LIST_MODIFY && JVET_W0090_ARMC_TM + if (pu.cs->sps->getUseAML()) + { #if JVET_Z0075_IBC_HMVP_ENLARGE - m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp, 0, IBC_MRG_MAX_NUM_CANDS_MEM); + m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp, 0, IBC_MRG_MAX_NUM_CANDS_MEM); #else - m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp); + m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp); #endif + } #endif pu.ibcMbvdMergeFlag = false; #endif