diff --git a/source/Lib/CommonLib/MotionInfo.h b/source/Lib/CommonLib/MotionInfo.h index 4b89dade0c12af8e8e1a0bebb8036f13ffa639bf..61a7ca645e48a920d2a1335c2d66f523f1d9f362 100644 --- a/source/Lib/CommonLib/MotionInfo.h +++ b/source/Lib/CommonLib/MotionInfo.h @@ -209,9 +209,9 @@ public: }; #endif #if JVET_L0266_HMVP -struct LuTMotionCand +struct LutMotionCand { - MotionInfo* m_MotionCand; + MotionInfo* motionCand; int currCnt; }; #endif diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index f51ef38985416363b46350c3eb6e346dfd764305..778b83c766d3ef6d3274b2f6d924cd0c1a239c85 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -129,7 +129,7 @@ Slice::Slice() , m_dProcessingTime ( 0 ) , m_uiMaxBTSize ( 0 ) #if JVET_L0266_HMVP -, m_MotionCandLuTs (NULL) +, m_MotionCandLut (NULL) #endif { for(uint32_t i=0; i<NUM_REF_PIC_LIST_01; i++) @@ -1567,58 +1567,58 @@ void Slice::stopProcessingTimer() #if JVET_L0266_HMVP void Slice::initMotionLUTs() { - m_MotionCandLuTs = new LuTMotionCand; - m_MotionCandLuTs->currCnt = 0; - m_MotionCandLuTs->m_MotionCand = nullptr; - m_MotionCandLuTs->m_MotionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; + m_MotionCandLut = new LutMotionCand; + m_MotionCandLut->currCnt = 0; + m_MotionCandLut->motionCand = nullptr; + m_MotionCandLut->motionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; } void Slice::destroyMotionLUTs() { - delete[] m_MotionCandLuTs->m_MotionCand; - m_MotionCandLuTs->m_MotionCand = nullptr; - delete[] m_MotionCandLuTs; - m_MotionCandLuTs = NULL; + delete[] m_MotionCandLut->motionCand; + m_MotionCandLut->motionCand = nullptr; + delete[] m_MotionCandLut; + m_MotionCandLut = NULL; } void Slice::resetMotionLUTs() { - m_MotionCandLuTs->currCnt = 0; + m_MotionCandLut->currCnt = 0; } MotionInfo Slice::getMotionInfoFromLUTs(int MotCandIdx) const { - return m_MotionCandLuTs->m_MotionCand[MotCandIdx]; + return m_MotionCandLut->motionCand[MotCandIdx]; } -void Slice::addMotionInfoToLUTs(LuTMotionCand* lutMC, MotionInfo newMi) +void Slice::addMotionInfoToLUTs(LutMotionCand* lutMC, MotionInfo newMi) { int currCnt = lutMC->currCnt ; - bool bPruned = false; + bool pruned = false; int sameCandIdx = -1; for (int idx = 0; idx < currCnt; idx++) { - if (lutMC->m_MotionCand[idx] == newMi) + if (lutMC->motionCand[idx] == newMi) { sameCandIdx = idx; - bPruned = true; + pruned = true; break; } } - if (bPruned || lutMC->currCnt == MAX_NUM_HMVP_CANDS) + if (pruned || lutMC->currCnt == MAX_NUM_HMVP_CANDS) { - int startIdx = bPruned ? sameCandIdx : 0; - memmove(&lutMC->m_MotionCand[startIdx], &lutMC->m_MotionCand[startIdx+1], sizeof(MotionInfo)*(currCnt - sameCandIdx - 1)); - memcpy(&lutMC->m_MotionCand[lutMC->currCnt-1], &newMi, sizeof(MotionInfo)); + int startIdx = pruned ? sameCandIdx : 0; + memmove(&lutMC->motionCand[startIdx], &lutMC->motionCand[startIdx+1], sizeof(MotionInfo)*(currCnt - sameCandIdx - 1)); + memcpy(&lutMC->motionCand[lutMC->currCnt-1], &newMi, sizeof(MotionInfo)); } else { - memcpy(&lutMC->m_MotionCand[lutMC->currCnt++], &newMi, sizeof(MotionInfo)); + memcpy(&lutMC->motionCand[lutMC->currCnt++], &newMi, sizeof(MotionInfo)); } } -void Slice::updateMotionLUTs(LuTMotionCand* lutMC, CodingUnit & cu) +void Slice::updateMotionLUTs(LutMotionCand* lutMC, CodingUnit & cu) { PredictionUnit *selectedPU = cu.firstPU; if (cu.affine) { return; } @@ -1627,9 +1627,9 @@ void Slice::updateMotionLUTs(LuTMotionCand* lutMC, CodingUnit & cu) addMotionInfoToLUTs(lutMC, newMi); } -void Slice::copyMotionLUTs(LuTMotionCand* Src, LuTMotionCand* Dst) +void Slice::copyMotionLUTs(LutMotionCand* Src, LutMotionCand* Dst) { - memcpy(Dst->m_MotionCand, Src->m_MotionCand, sizeof(MotionInfo)*(std::min(Src->currCnt, MAX_NUM_HMVP_CANDS))); + memcpy(Dst->motionCand, Src->motionCand, sizeof(MotionInfo)*(std::min(Src->currCnt, MAX_NUM_HMVP_CANDS))); Dst->currCnt = Src->currCnt; } #endif diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index f66d5f5a7bdd1e2b50452c25dda856630a1c18bf..6120af34762e0cea4c2b3f53beccf07ab4c0dfd8 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -1557,7 +1557,7 @@ private: AlfSliceParam m_alfSliceParam; #if JVET_L0266_HMVP - LuTMotionCand* m_MotionCandLuTs; + LutMotionCand* m_MotionCandLut; #endif public: @@ -1820,15 +1820,15 @@ public: void initMotionLUTs (); void destroyMotionLUTs (); void resetMotionLUTs(); - int getAvailableLUTMrgNum() const { return m_MotionCandLuTs->currCnt; } + int getAvailableLUTMrgNum() const { return m_MotionCandLut->currCnt; } MotionInfo getMotionInfoFromLUTs(int MotCandIdx) const; - LuTMotionCand* getMotionLUTs() { return m_MotionCandLuTs; } + LutMotionCand* getMotionLUTs() { return m_MotionCandLut; } - void addMotionInfoToLUTs(LuTMotionCand* lutMC, MotionInfo newMi); + void addMotionInfoToLUTs(LutMotionCand* lutMC, MotionInfo newMi); - void updateMotionLUTs(LuTMotionCand* lutMC, CodingUnit & cu); - void copyMotionLUTs(LuTMotionCand* Src, LuTMotionCand* Dst); + void updateMotionLUTs(LutMotionCand* lutMC, CodingUnit & cu); + void copyMotionLUTs(LutMotionCand* Src, LutMotionCand* Dst); #endif protected: diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp index 68f916b0e0e74710b89193fe9e7b3a19e7011de5..046c6285d2b0c0986e86a706eb8cc6bd14e3964c 100644 --- a/source/Lib/CommonLib/UnitTools.cpp +++ b/source/Lib/CommonLib/UnitTools.cpp @@ -507,8 +507,8 @@ bool PU::xCheckSimilarMotion(const int mergeCandIndex, const int prevCnt, const { if (mergeCandList.interDirNeighbours[ui] == 3) { - int offset0 = (ui << 1); - int offset1 = (mergeCandIndex << 1); + int offset0 = (ui * 2); + int offset1 = (mergeCandIndex * 2); if (mergeCandList.mvFieldNeighbours[offset0].refIdx == mergeCandList.mvFieldNeighbours[offset1].refIdx && mergeCandList.mvFieldNeighbours[offset0 + 1].refIdx == mergeCandList.mvFieldNeighbours[offset1 + 1].refIdx && mergeCandList.mvFieldNeighbours[offset0].mv == mergeCandList.mvFieldNeighbours[offset1].mv && @@ -521,8 +521,8 @@ bool PU::xCheckSimilarMotion(const int mergeCandIndex, const int prevCnt, const } else { - int offset0 = (ui << 1) + mergeCandList.interDirNeighbours[ui] - 1; - int offset1 = (mergeCandIndex << 1) + mergeCandList.interDirNeighbours[ui] - 1; + int offset0 = (ui * 2) + mergeCandList.interDirNeighbours[ui] - 1; + int offset1 = (mergeCandIndex * 2) + mergeCandList.interDirNeighbours[ui] - 1; if (mergeCandList.mvFieldNeighbours[offset0].refIdx == mergeCandList.mvFieldNeighbours[offset1].refIdx && mergeCandList.mvFieldNeighbours[offset0].mv == mergeCandList.mvFieldNeighbours[offset1].mv ) @@ -544,7 +544,7 @@ bool PU::addMergeHMVPCand(const Slice &slice, MergeCtx& mrgCtx, bool isCandInter { MotionInfo miNeighbor; bool hasPruned[MRG_MAX_NUM_CANDS]; - memset(hasPruned, false, MRG_MAX_NUM_CANDS * sizeof(bool)); + memset(hasPruned, 0, MRG_MAX_NUM_CANDS * sizeof(bool)); if (isAvailableSubPu) { hasPruned[subPuMvpPos] = true; @@ -989,7 +989,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, co isCandInter [uiArrayAddr] = true; #endif #if JVET_L0646_GBI - mrgCtx.GBiIdx[uiArrayAddr] = GBI_DEFAULT; + mrgCtx.GBiIdx[uiArrayAddr] = GBI_DEFAULT; #endif if( mrgCandIdx == cnt && canFastExit ) { @@ -2100,7 +2100,7 @@ void PU::addAMVPHMVPCand(const PredictionUnit &pu, const RefPicList eRefPicList, } neibMi = slice.getMotionInfoFromLUTs(num_avai_candInLUT - mrgIdx); - for (int predictorSource = 0; predictorSource < 2; predictorSource++) // examine the indicated reference picture list, then if not available, examine the other list. + for (int predictorSource = 0; predictorSource < 2; predictorSource++) { const RefPicList eRefPicListIndex = (predictorSource == 0) ? eRefPicList : eRefPicList2nd; const int neibRefIdx = neibMi.refIdx[eRefPicListIndex]; diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index 52bc9d955e8f1d3af52fe56762abdb3ae90e6f7e..97885adb89e0d43a58bdd5ffb00e74bf0536f086 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -1093,7 +1093,7 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl pcSlice->checkCRA(pcSlice->getRPS(), m_pocCRA, m_associatedIRAPType, m_cListPic ); // Set reference list pcSlice->setRefPicList( m_cListPic, true, true ); - + if (!pcSlice->isIntra()) { bool bLowDelay = true; diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp index ca0941b80afcb6547b217e671bc1bbe0597b3058..2ea4b4b69aa263af685908e409f9a16a770ca7b8 100644 --- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp +++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp @@ -744,8 +744,8 @@ int EncAdaptiveLoopFilter::getNonFilterCoeffRate( AlfSliceParam& alfSliceParam ) int len = 1 // filter_type + 1 // alf_coefficients_delta_flag #endif - + lengthTruncatedUnary( 0, 3 ) // chroma_idc = 0, it is signalled when ALF is enabled for luma - + getTBlength( alfSliceParam.numLumaFilters - 1, MAX_NUM_ALF_CLASSES ); //numLumaFilters + + lengthTruncatedUnary( 0, 3 ) // chroma_idc = 0, it is signalled when ALF is enabled for luma + + getTBlength( alfSliceParam.numLumaFilters - 1, MAX_NUM_ALF_CLASSES ); //numLumaFilters if( alfSliceParam.numLumaFilters > 1 ) { @@ -842,8 +842,8 @@ int EncAdaptiveLoopFilter::getCostFilterCoeffForce0( AlfFilterShape& alfShape, i // Coding parameters int len = kMin //min_golomb_order - + maxGolombIdx //golomb_order_increase_flag - + numFilters; //filter_coefficient_flag[i] + + maxGolombIdx //golomb_order_increase_flag + + numFilters; //filter_coefficient_flag[i] // Filter coefficients for( int ind = 0; ind < numFilters; ++ind ) diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index 1030f4050aa563fe1f37c6959aa860946fd3faa5..3cfcd864d069e91902ff26eb32c3187d2a23848c 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -79,9 +79,9 @@ void EncCu::create( EncCfg* encCfg ) m_pBestCS = new CodingStructure** [numWidths]; #if JVET_L0266_HMVP - m_pTempMotLUTs = new LuTMotionCand**[numWidths]; - m_pBestMotLUTs = new LuTMotionCand**[numWidths]; - m_pSplitTempMotLUTs = new LuTMotionCand**[numWidths]; + m_pTempMotLUTs = new LutMotionCand**[numWidths]; + m_pBestMotLUTs = new LutMotionCand**[numWidths]; + m_pSplitTempMotLUTs = new LutMotionCand**[numWidths]; #endif for( unsigned w = 0; w < numWidths; w++ ) @@ -89,9 +89,9 @@ void EncCu::create( EncCfg* encCfg ) m_pTempCS[w] = new CodingStructure* [numHeights]; m_pBestCS[w] = new CodingStructure* [numHeights]; #if JVET_L0266_HMVP - m_pTempMotLUTs[w] = new LuTMotionCand*[numHeights]; - m_pBestMotLUTs[w] = new LuTMotionCand*[numHeights]; - m_pSplitTempMotLUTs[w] = new LuTMotionCand*[numHeights]; + m_pTempMotLUTs[w] = new LutMotionCand*[numHeights]; + m_pBestMotLUTs[w] = new LutMotionCand*[numHeights]; + m_pSplitTempMotLUTs[w] = new LutMotionCand*[numHeights]; #endif for( unsigned h = 0; h < numHeights; h++ ) @@ -107,20 +107,20 @@ void EncCu::create( EncCfg* encCfg ) m_pTempCS[w][h]->create( chromaFormat, Area( 0, 0, width, height ), false ); m_pBestCS[w][h]->create( chromaFormat, Area( 0, 0, width, height ), false ); #if JVET_L0266_HMVP - m_pTempMotLUTs[w][h] = new LuTMotionCand ; - m_pBestMotLUTs[w][h] = new LuTMotionCand ; - m_pSplitTempMotLUTs[w][h] = new LuTMotionCand; + m_pTempMotLUTs[w][h] = new LutMotionCand ; + m_pBestMotLUTs[w][h] = new LutMotionCand ; + m_pSplitTempMotLUTs[w][h] = new LutMotionCand; m_pSplitTempMotLUTs[w][h]->currCnt = 0; - m_pSplitTempMotLUTs[w][h]->m_MotionCand = nullptr; - m_pSplitTempMotLUTs[w][h]->m_MotionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; + m_pSplitTempMotLUTs[w][h]->motionCand = nullptr; + m_pSplitTempMotLUTs[w][h]->motionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; m_pTempMotLUTs[w][h]->currCnt = 0; - m_pTempMotLUTs[w][h]->m_MotionCand = nullptr; - m_pTempMotLUTs[w][h]->m_MotionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; + m_pTempMotLUTs[w][h]->motionCand = nullptr; + m_pTempMotLUTs[w][h]->motionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; m_pBestMotLUTs[w][h]->currCnt = 0; - m_pBestMotLUTs[w][h]->m_MotionCand = nullptr; - m_pBestMotLUTs[w][h]->m_MotionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; + m_pBestMotLUTs[w][h]->motionCand = nullptr; + m_pBestMotLUTs[w][h]->motionCand = new MotionInfo[MAX_NUM_HMVP_CANDS]; #endif } else @@ -215,21 +215,21 @@ void EncCu::destroy() #if JVET_L0266_HMVP if (m_pTempMotLUTs[w][h]) { - delete[] m_pTempMotLUTs[w][h]->m_MotionCand; - m_pTempMotLUTs[w][h]->m_MotionCand = nullptr; + delete[] m_pTempMotLUTs[w][h]->motionCand; + m_pTempMotLUTs[w][h]->motionCand = nullptr; delete[] m_pTempMotLUTs[w][h]; } if (m_pBestMotLUTs[w][h]) { - delete[] m_pBestMotLUTs[w][h]->m_MotionCand; - m_pBestMotLUTs[w][h]->m_MotionCand = nullptr; + delete[] m_pBestMotLUTs[w][h]->motionCand; + m_pBestMotLUTs[w][h]->motionCand = nullptr; delete[] m_pBestMotLUTs[w][h]; } if (m_pSplitTempMotLUTs[w][h]) { - delete[] m_pSplitTempMotLUTs[w][h]->m_MotionCand; - m_pSplitTempMotLUTs[w][h]->m_MotionCand = nullptr; + delete[] m_pSplitTempMotLUTs[w][h]->motionCand; + m_pSplitTempMotLUTs[w][h]->motionCand = nullptr; delete[] m_pSplitTempMotLUTs[w][h]; } #endif @@ -356,8 +356,8 @@ void EncCu::compressCtu( CodingStructure& cs, const UnitArea& area, const unsign CodingStructure *tempCS = m_pTempCS[gp_sizeIdxInfo->idxFrom( area.lumaSize().width )][gp_sizeIdxInfo->idxFrom( area.lumaSize().height )]; CodingStructure *bestCS = m_pBestCS[gp_sizeIdxInfo->idxFrom( area.lumaSize().width )][gp_sizeIdxInfo->idxFrom( area.lumaSize().height )]; #if JVET_L0266_HMVP - LuTMotionCand *tempMotCandLUTs = m_pTempMotLUTs[gp_sizeIdxInfo->idxFrom(area.lumaSize().width)][gp_sizeIdxInfo->idxFrom(area.lumaSize().height)]; - LuTMotionCand *bestMotCandLUTs = m_pBestMotLUTs[gp_sizeIdxInfo->idxFrom(area.lumaSize().width)][gp_sizeIdxInfo->idxFrom(area.lumaSize().height)]; + LutMotionCand *tempMotCandLUTs = m_pTempMotLUTs[gp_sizeIdxInfo->idxFrom(area.lumaSize().width)][gp_sizeIdxInfo->idxFrom(area.lumaSize().height)]; + LutMotionCand *bestMotCandLUTs = m_pBestMotLUTs[gp_sizeIdxInfo->idxFrom(area.lumaSize().width)][gp_sizeIdxInfo->idxFrom(area.lumaSize().height)]; cs.slice->copyMotionLUTs(cs.slice->getMotionLUTs(), tempMotCandLUTs); cs.slice->copyMotionLUTs(cs.slice->getMotionLUTs(), bestMotCandLUTs); #endif @@ -554,7 +554,7 @@ void EncCu::xCheckBestMode( CodingStructure *&tempCS, CodingStructure *&bestCS, #endif { #if JVET_L0266_HMVP - bool bSwitch = false; + bool CSUpdated = false; #endif if( !tempCS->cus.empty() ) @@ -588,7 +588,7 @@ void EncCu::xCheckBestMode( CodingStructure *&tempCS, CodingStructure *&bestCS, // store temp best CI for next CU coding m_CurrCtx->best = m_CABACEstimator->getCtx(); #if JVET_L0266_HMVP - bSwitch = true; + CSUpdated = true; #endif } } @@ -596,15 +596,15 @@ void EncCu::xCheckBestMode( CodingStructure *&tempCS, CodingStructure *&bestCS, // reset context states m_CABACEstimator->getCtx() = m_CurrCtx->start; #if JVET_L0266_HMVP - return bSwitch; + return CSUpdated; #endif } void EncCu::xCompressCU( CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &partitioner #if JVET_L0266_HMVP - , LuTMotionCand* &tempMotCandLUTs - , LuTMotionCand* &bestMotCandLUTs + , LutMotionCand* &tempMotCandLUTs + , LutMotionCand* &bestMotCandLUTs #endif ) { @@ -660,10 +660,10 @@ void EncCu::xCompressCU( CodingStructure *&tempCS, CodingStructure *&bestCS, Par return; } #if JVET_L0266_HMVP - if (!slice.isIntra()) - { - tempCS->slice->copyMotionLUTs(tempMotCandLUTs, tempCS->slice->getMotionLUTs()); - } + if (!slice.isIntra()) + { + tempCS->slice->copyMotionLUTs(tempMotCandLUTs, tempCS->slice->getMotionLUTs()); + } #endif DTRACE_UPDATE( g_trace_ctx, std::make_pair( "cux", uiLPelX ) ); @@ -1013,8 +1013,8 @@ void EncCu::copyState( EncCu* other, Partitioner& partitioner, const UnitArea& c void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &partitioner, const EncTestMode& encTestMode #if JVET_L0266_HMVP - , LuTMotionCand* &tempMotCandLUTs - , LuTMotionCand* &bestMotCandLUTs + , LutMotionCand* &tempMotCandLUTs + , LutMotionCand* &bestMotCandLUTs , UnitArea parArea #endif ) @@ -1094,8 +1094,8 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, tempCS->initSubStructure( *tempSubCS, partitioner.chType, subCUArea, false ); tempCS->initSubStructure( *bestSubCS, partitioner.chType, subCUArea, false ); #if JVET_L0266_HMVP - LuTMotionCand *tempSubMotCandLUTs = m_pTempMotLUTs[wIdx][hIdx]; - LuTMotionCand *bestSubMotCandLUTs = m_pBestMotLUTs[wIdx][hIdx]; + LutMotionCand *tempSubMotCandLUTs = m_pTempMotLUTs[wIdx][hIdx]; + LutMotionCand *bestSubMotCandLUTs = m_pBestMotLUTs[wIdx][hIdx]; tempCS->slice->copyMotionLUTs(tempMotCandLUTs, tempSubMotCandLUTs); tempCS->slice->copyMotionLUTs(tempMotCandLUTs, bestSubMotCandLUTs); #endif @@ -1114,12 +1114,12 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, m_CurrCtx--; partitioner.exitCurrSplit(); #if JVET_L0266_HMVP - bool bUpdate = + bool CSUpdated = #endif xCheckBestMode( tempCS, bestCS, partitioner, encTestMode ); #if JVET_L0266_HMVP - if (bUpdate) + if (CSUpdated) { std::swap(tempMotCandLUTs, bestMotCandLUTs); } @@ -1236,19 +1236,19 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, // RD check for sub partitioned coding structure. #if JVET_L0266_HMVP - bool bUpdate = + bool CSUpdated = #endif xCheckBestMode( tempCS, bestCS, partitioner, encTestMode ); #if JVET_L0266_HMVP - if (!slice.isIntra()) - { - if (bUpdate) - { - std::swap(tempMotCandLUTs, bestMotCandLUTs); - } - tempCS->slice->copyMotionLUTs(m_pSplitTempMotLUTs[wParIdx][hParIdx], tempMotCandLUTs); - } + if (!slice.isIntra()) + { + if (CSUpdated) + { + std::swap(tempMotCandLUTs, bestMotCandLUTs); + } + tempCS->slice->copyMotionLUTs(m_pSplitTempMotLUTs[wParIdx][hParIdx], tempMotCandLUTs); + } #endif tempCS->releaseIntermediateData(); diff --git a/source/Lib/EncoderLib/EncCu.h b/source/Lib/EncoderLib/EncCu.h index 8269b83611d264ea6699558dec19556dd9cd5671..f268d076ca71308452bd8b0303b442046b517299 100644 --- a/source/Lib/EncoderLib/EncCu.h +++ b/source/Lib/EncoderLib/EncCu.h @@ -96,9 +96,9 @@ private: CodingStructure ***m_pTempCS; CodingStructure ***m_pBestCS; #if JVET_L0266_HMVP - LuTMotionCand ***m_pTempMotLUTs; - LuTMotionCand ***m_pBestMotLUTs; - LuTMotionCand ***m_pSplitTempMotLUTs; + LutMotionCand ***m_pTempMotLUTs; + LutMotionCand ***m_pBestMotLUTs; + LutMotionCand ***m_pSplitTempMotLUTs; #endif // Access channel EncCfg* m_pcEncCfg; @@ -174,8 +174,8 @@ protected: void xCompressCU ( CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &pm #if JVET_L0266_HMVP - , LuTMotionCand* &tempMotCandLUTs - , LuTMotionCand* &bestMotCandLUTs + , LutMotionCand* &tempMotCandLUTs + , LutMotionCand* &bestMotCandLUTs #endif ); #if ENABLE_SPLIT_PARALLELISM @@ -192,8 +192,8 @@ protected: void xCheckModeSplit ( CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &pm, const EncTestMode& encTestMode #if JVET_L0266_HMVP - , LuTMotionCand* &tempMotCandLUTs - , LuTMotionCand* &bestMotCandLUTs + , LutMotionCand* &tempMotCandLUTs + , LutMotionCand* &bestMotCandLUTs , UnitArea parArea #endif ); diff --git a/source/Lib/EncoderLib/EncModeCtrl.cpp b/source/Lib/EncoderLib/EncModeCtrl.cpp index db0ef5bf6b7d7b56b9aaafd1edfb1007e80262f6..72b5adac300723cc5461e793784004324eaae9ac 100644 --- a/source/Lib/EncoderLib/EncModeCtrl.cpp +++ b/source/Lib/EncoderLib/EncModeCtrl.cpp @@ -1206,7 +1206,7 @@ bool EncModeCtrlMTnoRQT::tryMode( const EncTestMode& encTestmode, const CodingSt CHECK( !slice.isIntra() && !cuECtx.bestTU, "No possible non-intra encoding for a P- or B-slice found" ); if( !( slice.isIRAP() || bestMode.type == ETM_INTRA || - ( ( !m_pcEncCfg->getDisableIntraPUsInInterSlices() ) && !relatedCU.isInter && ( + ( ( !m_pcEncCfg->getDisableIntraPUsInInterSlices() ) && !relatedCU.isInter && ( ( cuECtx.bestTU->cbf[0] != 0 ) || ( ( numComp > COMPONENT_Cb ) && cuECtx.bestTU->cbf[1] != 0 ) || ( ( numComp > COMPONENT_Cr ) && cuECtx.bestTU->cbf[2] != 0 ) // avoid very complex intra if it is unlikely