diff --git a/source/Lib/CommonLib/AdaptiveLoopFilter.cpp b/source/Lib/CommonLib/AdaptiveLoopFilter.cpp index 332f2e13216b5d4509afd36013faf0745b8cf5a7..eb28dd449a14145b501ee7072bc813d8ca52210e 100644 --- a/source/Lib/CommonLib/AdaptiveLoopFilter.cpp +++ b/source/Lib/CommonLib/AdaptiveLoopFilter.cpp @@ -127,7 +127,7 @@ bool AdaptiveLoopFilter::isCrossedByVirtualBoundaries( const CodingStructure& cs const Position currCtuPos(xPos, yPos); const CodingUnit *currCtu = cs.getCU(currCtuPos, CHANNEL_TYPE_LUMA); #if JVET_O1143_LPF_ACROSS_SUBPIC_BOUNDARY - SubPic curSubPic = slice.getPPS()->getSubPicFromPos(currCtuPos); + const SubPic& curSubPic = slice.getPPS()->getSubPicFromPos(currCtuPos); bool loopFilterAcrossSubPicEnabledFlag = curSubPic.getloopFilterAcrossEnabledFlag(); #endif //top diff --git a/source/Lib/CommonLib/Mv.cpp b/source/Lib/CommonLib/Mv.cpp index e95ee8f1a9337a0e78a132d8a8c36d79c19daaa6..5587cbecfd66592a5459203335e512728c9e39d2 100644 --- a/source/Lib/CommonLib/Mv.cpp +++ b/source/Lib/CommonLib/Mv.cpp @@ -67,7 +67,7 @@ void clipMv( Mv& rcMv, const Position& pos, const struct Size& size, const SPS& int iVerMax = ( pps.getPicHeightInLumaSamples() + iOffset - (int)pos.y - 1 ) << iMvShift; int iVerMin = ( -( int ) sps.getMaxCUHeight() - iOffset - ( int ) pos.y + 1 ) << iMvShift; #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY - SubPic curSubPic = pps.getSubPicFromPos(pos); + const SubPic& curSubPic = pps.getSubPicFromPos(pos); if (curSubPic.getTreatedAsPicFlag()) { iHorMax = ((curSubPic.getSubPicRight() + 1) + iOffset - (int)pos.x - 1 ) << iMvShift; diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index 7ab3aabfffc4b0f5631e7b421a6b265612d69555..3731b840ec1219b0ae397892145e0cfe1cc6aa0e 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -3411,7 +3411,7 @@ void PPS::initSubPic(const SPS &sps) } } -SubPic PPS::getSubPicFromPos(const Position& pos) const +const SubPic& PPS::getSubPicFromPos(const Position& pos) const { for (int i = 0; i< m_numSubPics; i++) { @@ -3423,7 +3423,7 @@ SubPic PPS::getSubPicFromPos(const Position& pos) const return m_subPics[0]; } -SubPic PPS::getSubPicFromCU(const CodingUnit& cu) const +const SubPic& PPS::getSubPicFromCU(const CodingUnit& cu) const { const Position lumaPos = cu.Y().valid() ? cu.Y().pos() : recalcPosition(cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, cu.blocks[cu.chType].pos()); return getSubPicFromPos(lumaPos); diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index 6254ec6d969ab77295e7378a5c252614069e9168..f7ed56e5e778621c977562cd7357d83eea42987b 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -2335,8 +2335,8 @@ public: SubPic getSubPic(uint32_t idx) const { return m_subPics[idx]; } #endif void initSubPic(const SPS &sps); - SubPic getSubPicFromPos(const Position& pos) const; - SubPic getSubPicFromCU (const CodingUnit& cu) const; + const SubPic& getSubPicFromPos(const Position& pos) const; + const SubPic& getSubPicFromCU (const CodingUnit& cu) const; #endif void initRasterSliceMap( std::vector<uint32_t> sizes ); void checkSliceMap(); diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp index fb4e57b9c3e444f49eb94589b1b227404678139e..bab812f74866016b2b9fa2dcc29b1e3b1aa7ac05 100644 --- a/source/Lib/CommonLib/UnitTools.cpp +++ b/source/Lib/CommonLib/UnitTools.cpp @@ -1123,7 +1123,7 @@ void PU::getInterMergeCandidates( const PredictionUnit &pu, MergeCtx& mrgCtx, bool C0Avail = false; #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY bool boundaryCond = ((posRB.x + pcv.minCUWidth) < pcv.lumaWidth) && ((posRB.y + pcv.minCUHeight) < pcv.lumaHeight); - SubPic curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); + const SubPic& curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); if (curSubPic.getTreatedAsPicFlag()) { boundaryCond = ((posRB.x + pcv.minCUWidth) <= curSubPic.getSubPicRight() && @@ -1467,7 +1467,7 @@ bool PU::getColocatedMVP(const PredictionUnit &pu, const RefPicList &eRefPicList #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY // Check the position of colocated block is within a subpicture - SubPic curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); + const SubPic &curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); if (curSubPic.getTreatedAsPicFlag()) { if (!curSubPic.isContainingPos(pos)) @@ -1860,7 +1860,7 @@ void PU::fillMvpCand(PredictionUnit &pu, const RefPicList &eRefPicList, const in #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY bool boundaryCond = ((posRB.x + pcv.minCUWidth) < pcv.lumaWidth) && ((posRB.y + pcv.minCUHeight) < pcv.lumaHeight); - SubPic curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); + const SubPic &curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); if (curSubPic.getTreatedAsPicFlag()) { boundaryCond = ((posRB.x + pcv.minCUWidth) <= curSubPic.getSubPicRight() && @@ -2186,7 +2186,7 @@ void PU::fillAffineMvpCand(PredictionUnit &pu, const RefPicList &eRefPicList, co Mv cColMv; #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY bool boundaryCond = ((posRB.x + pcv.minCUWidth) < pcv.lumaWidth) && ((posRB.y + pcv.minCUHeight) < pcv.lumaHeight); - SubPic curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); + const SubPic &curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); if (curSubPic.getTreatedAsPicFlag()) { boundaryCond = ((posRB.x + pcv.minCUWidth) <= curSubPic.getSubPicRight() && @@ -2787,7 +2787,7 @@ void PU::getAffineMergeCand( const PredictionUnit &pu, AffineMergeCtx& affMrgCtx #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY bool boundaryCond = ((posRB.x + pcv.minCUWidth) < pcv.lumaWidth) && ((posRB.y + pcv.minCUHeight) < pcv.lumaHeight); - SubPic curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); + const SubPic &curSubPic = pu.cs->slice->getPPS()->getSubPicFromPos(pu.lumaPos()); if (curSubPic.getTreatedAsPicFlag()) { boundaryCond = ((posRB.x + pcv.minCUWidth) <= curSubPic.getSubPicRight() && @@ -2988,7 +2988,7 @@ void clipColPos(int& posX, int& posY, const PredictionUnit& pu) int ctuY = ((puPos.y >> log2CtuSize) << log2CtuSize); #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY int horMax; - SubPic curSubPic = pu.cu->slice->getPPS()->getSubPicFromPos(puPos); + const SubPic &curSubPic = pu.cu->slice->getPPS()->getSubPicFromPos(puPos); if (curSubPic.getTreatedAsPicFlag()) { horMax = std::min((int)curSubPic.getSubPicRight(), ctuX + (int)pu.cs->sps->getCTUSize() + 3); diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index 9f523a8acda7963b8cb4cf6cf6015c6ffc040b77..86545c8e90f24ea9bf985d5201533a6eed0484c1 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -2779,7 +2779,7 @@ void DecLib::xCheckMixedNalUnit(Slice* pcSlice, SPS *sps, InputNALUnit &nalu) const unsigned ctuYPosInCtus = ctuRsAddr / pcSlice->getPPS()->getPicWidthInCtu(); const unsigned maxCUSize = sps->getMaxCUWidth(); Position pos(ctuXPosInCtus*maxCUSize, ctuYPosInCtus*maxCUSize); - SubPic curSubPic = pcSlice->getPPS()->getSubPicFromPos(pos); + const SubPic &curSubPic = pcSlice->getPPS()->getSubPicFromPos(pos); // check subpicture constraints if ((pcSlice->getNalUnitType() >= NAL_UNIT_CODED_SLICE_IDR_W_RADL) && (pcSlice->getNalUnitType() <= NAL_UNIT_CODED_SLICE_CRA)) diff --git a/source/Lib/DecoderLib/DecSlice.cpp b/source/Lib/DecoderLib/DecSlice.cpp index 42418bb80697e847ce6113863f2d9272922500b5..9bb2b66c9019c858d3e01d73d266b01dd49a93ba 100644 --- a/source/Lib/DecoderLib/DecSlice.cpp +++ b/source/Lib/DecoderLib/DecSlice.cpp @@ -149,7 +149,7 @@ void DecSlice::decompressSlice( Slice* slice, InputBitstream* bitstream, int deb Position pos( ctuXPosInCtus*maxCUSize, ctuYPosInCtus*maxCUSize) ; UnitArea ctuArea(cs.area.chromaFormat, Area( pos.x, pos.y, maxCUSize, maxCUSize ) ); #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY - SubPic curSubPic = slice->getPPS()->getSubPicFromPos(pos); + const SubPic &curSubPic = slice->getPPS()->getSubPicFromPos(pos); // padding/restore at slice level if (slice->getPPS()->getNumSubPics()>=2 && curSubPic.getTreatedAsPicFlag() && ctuIdx==0) { diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index a7d4ff101af1d26fe4eb5a3f66992da7b515b1ae..b5824a67535255612d6c8a9d65140b2543019972 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -1476,7 +1476,7 @@ void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, cons } #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY - SubPic curSubPic = pcSlice->getPPS()->getSubPicFromPos(pos); + const SubPic &curSubPic = pcSlice->getPPS()->getSubPicFromPos(pos); // padding/restore at slice level if (pcSlice->getPPS()->getNumSubPics() >= 2 && curSubPic.getTreatedAsPicFlag() && ctuIdx == 0) { diff --git a/source/Lib/EncoderLib/InterSearch.cpp b/source/Lib/EncoderLib/InterSearch.cpp index 35ba55a6bbea9871b2b734bc7d61baa88f6b6448..aa95e566d5e18088ec4943bd3742dc1c80c8ec9c 100644 --- a/source/Lib/EncoderLib/InterSearch.cpp +++ b/source/Lib/EncoderLib/InterSearch.cpp @@ -8072,7 +8072,7 @@ void InterSearch::xClipMv( Mv& rcMv, const Position& pos, const struct Size& siz int verMax = ( pps.getPicHeightInLumaSamples() + offset - (int)pos.y - 1 ) << mvShift; int verMin = ( -( int ) sps.getMaxCUHeight() - offset - ( int ) pos.y + 1 ) << mvShift; #if JVET_O1143_MV_ACROSS_SUBPIC_BOUNDARY - SubPic curSubPic = pps.getSubPicFromPos(pos); + const SubPic &curSubPic = pps.getSubPicFromPos(pos); if (curSubPic.getTreatedAsPicFlag()) { horMax = ((curSubPic.getSubPicRight() + 1) + offset - (int)pos.x - 1) << mvShift;