diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp index f4e45ad728a9ac3fe4e9333b36c36062eea1dd35..62ff927bae9c8648d10fe4bf74073a3cf35937bd 100644 --- a/source/Lib/CommonLib/UnitTools.cpp +++ b/source/Lib/CommonLib/UnitTools.cpp @@ -663,7 +663,7 @@ int PU::getWideAngIntraMode( const TransformUnit &tu, const uint32_t dirMode, co } -bool PU::addMergeHMVPCand(const CodingStructure &cs, MergeCtx& mrgCtx, const bool canFastExit, const int& mrgCandIdx, const uint32_t maxNumMergeCandMin1, int &cnt +bool PU::addMergeHMVPCand(const CodingStructure &cs, MergeCtx& mrgCtx, const int& mrgCandIdx, const uint32_t maxNumMergeCandMin1, int &cnt , const bool isAvailableA1, const MotionInfo miLeft, const bool isAvailableB1, const MotionInfo miAbove , const bool ibcFlag #if !JVET_P0400_REMOVE_SHARED_MERGE_LIST @@ -701,7 +701,7 @@ bool PU::addMergeHMVPCand(const CodingStructure &cs, MergeCtx& mrgCtx, const boo mrgCtx.mvFieldNeighbours[(cnt << 1) + 1].setMvField(miNeighbor.mv[1], miNeighbor.refIdx[1]); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return true; } @@ -731,7 +731,6 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const #else const uint32_t maxNumMergeCand = slice.getMaxNumIBCMergeCand(); #endif - const bool canFastExit = true; for (uint32_t ui = 0; ui < maxNumMergeCand; ++ui) { @@ -776,7 +775,7 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const mrgCtx.interDirNeighbours[cnt] = miLeft.interDir; // get Mv from Left mrgCtx.mvFieldNeighbours[cnt << 1].setMvField(miLeft.mv[0], miLeft.refIdx[0]); - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -806,7 +805,7 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const mrgCtx.interDirNeighbours[cnt] = miAbove.interDir; // get Mv from Above mrgCtx.mvFieldNeighbours[cnt << 1].setMvField(miAbove.mv[0], miAbove.refIdx[0]); - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -826,7 +825,7 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const #if !JVET_P0400_REMOVE_SHARED_MERGE_LIST bool isShared = ((pu.Y().lumaSize().width != pu.shareParentSize.width) || (pu.Y().lumaSize().height != pu.shareParentSize.height)); #endif - bool bFound = addMergeHMVPCand(cs, mrgCtx, canFastExit, mrgCandIdx, maxNumMergeCand, cnt + bool bFound = addMergeHMVPCand(cs, mrgCtx, mrgCandIdx, maxNumMergeCand, cnt , isAvailableA1, miLeft, isAvailableB1, miAbove , true #if !JVET_P0400_REMOVE_SHARED_MERGE_LIST @@ -848,7 +847,7 @@ void PU::getIBCMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, const mrgCtx.mvFieldNeighbours[cnt * 2].setMvField(Mv(0, 0), MAX_NUM_REF); mrgCtx.interDirNeighbours[cnt] = 1; cnt++; - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -868,8 +867,6 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, #else const uint32_t maxNumMergeCand = slice.getMaxNumMergeCand(); #endif - const bool canFastExit = true; - for (uint32_t ui = 0; ui < maxNumMergeCand; ++ui) { @@ -912,7 +909,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, { mrgCtx.mvFieldNeighbours[(cnt << 1) + 1].setMvField(miAbove.mv[1], miAbove.refIdx[1]); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -948,7 +945,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, { mrgCtx.mvFieldNeighbours[(cnt << 1) + 1].setMvField(miLeft.mv[1], miLeft.refIdx[1]); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -978,7 +975,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, { mrgCtx.mvFieldNeighbours[(cnt << 1) + 1].setMvField(miLeft.mv[1], miLeft.refIdx[1]); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -1016,7 +1013,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, { mrgCtx.mvFieldNeighbours[( cnt << 1 ) + 1].setMvField( miAbove.mv[1], miAbove.refIdx[1] ); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -1056,7 +1053,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, mrgCtx.mvFieldNeighbours[( cnt << 1 ) + 1].setMvField( miAboveRight.mv[1], miAboveRight.refIdx[1] ); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -1094,7 +1091,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, mrgCtx.mvFieldNeighbours[( cnt << 1 ) + 1].setMvField( miBelowLeft.mv[1], miBelowLeft.refIdx[1] ); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -1135,7 +1132,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, mrgCtx.mvFieldNeighbours[( cnt << 1 ) + 1].setMvField( miAboveLeft.mv[1], miAboveLeft.refIdx[1] ); } - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -1205,7 +1202,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, mrgCtx.interDirNeighbours[uiArrayAddr] = dir; mrgCtx.GBiIdx[uiArrayAddr] = GBI_DEFAULT; mrgCtx.useAltHpelIf[uiArrayAddr] = false; - if (mrgCandIdx == cnt && canFastExit) + if (mrgCandIdx == cnt) { return; } @@ -1230,7 +1227,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, #if JVET_P0400_REMOVE_SHARED_MERGE_LIST bool isGt4x4 = true; #endif - bool bFound = addMergeHMVPCand(cs, mrgCtx, canFastExit, mrgCandIdx, maxNumMergeCandMin1, cnt + bool bFound = addMergeHMVPCand(cs, mrgCtx, mrgCandIdx, maxNumMergeCandMin1, cnt , isAvailableA1, miLeft, isAvailableB1, miAbove , CU::isIBC(*pu.cu) #if !JVET_P0400_REMOVE_SHARED_MERGE_LIST @@ -1608,14 +1605,12 @@ bool PU::isDiffMER(const PredictionUnit &pu1, const PredictionUnit &pu2) const unsigned xP = pu2.lumaPos().x; const unsigned yP = pu2.lumaPos().y; - unsigned const plevel = 2; - - if ((xN >> plevel) != (xP >> plevel)) + if ((xN >> 2) != (xP >> 2)) { return true; } - if ((yN >> plevel) != (yP >> plevel)) + if ((yN >> 2) != (yP >> 2)) { return true; } diff --git a/source/Lib/CommonLib/UnitTools.h b/source/Lib/CommonLib/UnitTools.h index 49747d61a254b7624c6cf4962735ece4ecd0c8a2..590d7c599d94c2eb24a462346aa3a66d89084fe1 100644 --- a/source/Lib/CommonLib/UnitTools.h +++ b/source/Lib/CommonLib/UnitTools.h @@ -154,7 +154,7 @@ namespace PU void fillAffineMvpCand ( PredictionUnit &pu, const RefPicList &eRefPicList, const int &refIdx, AffineAMVPInfo &affiAMVPInfo); bool addMVPCandUnscaled (const PredictionUnit &pu, const RefPicList &eRefPicList, const int &iRefIdx, const Position &pos, const MvpDir &eDir, AMVPInfo &amvpInfo); void xInheritedAffineMv ( const PredictionUnit &pu, const PredictionUnit* puNeighbour, RefPicList eRefPicList, Mv rcMv[3] ); - bool addMergeHMVPCand (const CodingStructure &cs, MergeCtx& mrgCtx, const bool canFastExit, const int& mrgCandIdx, const uint32_t maxNumMergeCandMin1, int &cnt + bool addMergeHMVPCand (const CodingStructure &cs, MergeCtx& mrgCtx, const int& mrgCandIdx, const uint32_t maxNumMergeCandMin1, int &cnt , const bool isAvailableA1, const MotionInfo miLeft, const bool isAvailableB1, const MotionInfo miAbove , const bool ibcFlag #if !JVET_P0400_REMOVE_SHARED_MERGE_LIST