diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index 80e3ee3a402a1bb26f8286cbdccaa8cef0ae5c94..c702a804eb0c38347c742e0c4988b660786e8670 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -4389,7 +4389,6 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal if ( calDist ) { - const UnitArea currCsArea = clipArea( CS::getArea( cs, cs.area, partitioner.chType ), *cs.picture ); ComponentID compStr = ( cu->isSepTree() && !isLuma( partitioner.chType ) ) ? COMPONENT_Cb : COMPONENT_Y; ComponentID compEnd = ( cu->isSepTree() && isLuma( partitioner.chType ) ) ? COMPONENT_Y : COMPONENT_Cr; Distortion finalDistortion = 0; @@ -4398,7 +4397,7 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal const ComponentID compID = ComponentID( comp ); CPelBuf org = cs.getOrgBuf( compID ); CPelBuf reco = cs.getRecoBuf( compID ); - finalDistortion += getDistortionDb( cs, org, reco, compID, currCsArea.block( compID ), false ); + finalDistortion += getDistortionDb(cs, org, reco, compID, cs.area.block(COMPONENT_Y), false); } //updated distortion cs.dist = finalDistortion; @@ -4409,7 +4408,7 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal ComponentID compStr = ( cu->isSepTree() && !isLuma( partitioner.chType ) ) ? COMPONENT_Cb : COMPONENT_Y; ComponentID compEnd = ( cu->isSepTree() && isLuma( partitioner.chType ) ) ? COMPONENT_Y : COMPONENT_Cr; - const UnitArea currCsArea = clipArea( CS::getArea( cs, cs.area, partitioner.chType ), *cs.picture ); + const UnitArea currCsArea = clipArea(cs.area, *cs.picture); PelStorage& picDbBuf = m_pcLoopFilter->getDbEncPicYuvBuffer(); @@ -4474,7 +4473,7 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal ComponentID compId = (ComponentID)compIdx; CPelBuf reco = picDbBuf.getBuf( currCsArea.block( compId ) ); CPelBuf org = cs.getOrgBuf( compId ); - distCur += getDistortionDb( cs, org, reco, compId, currCsArea.block( compId ), true ); + distCur += getDistortionDb(cs, org, reco, compId, currCsArea.block(COMPONENT_Y), true); } //calculate difference between DB_before_SSE and DB_after_SSE for neighbouring CUs @@ -4488,8 +4487,8 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal CPelBuf org = cs.picture->getOrigBuf( compArea ); CPelBuf reco = cs.picture->getRecoBuf( compArea ); CPelBuf recoDb = picDbBuf.getBuf( compArea ); - distBeforeDb += getDistortionDb( cs, org, reco, compId, compArea, false ); - distAfterDb += getDistortionDb( cs, org, recoDb, compId, compArea, true ); + distBeforeDb += getDistortionDb(cs, org, reco, compId, areaLeft.block(COMPONENT_Y), false); + distAfterDb += getDistortionDb(cs, org, recoDb, compId, areaLeft.block(COMPONENT_Y), true); } if ( topEdgeAvai ) { @@ -4497,8 +4496,8 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal CPelBuf org = cs.picture->getOrigBuf( compArea ); CPelBuf reco = cs.picture->getRecoBuf( compArea ); CPelBuf recoDb = picDbBuf.getBuf( compArea ); - distBeforeDb += getDistortionDb( cs, org, reco, compId, compArea, false ); - distAfterDb += getDistortionDb( cs, org, recoDb, compId, compArea, true ); + distBeforeDb += getDistortionDb(cs, org, reco, compId, areaTop.block(COMPONENT_Y), false); + distAfterDb += getDistortionDb(cs, org, recoDb, compId, areaTop.block(COMPONENT_Y), true); } } @@ -4518,9 +4517,10 @@ Distortion EncCu::getDistortionDb( CodingStructure &cs, CPelBuf org, CPelBuf rec #if WCG_EXT m_pcRdCost->setChromaFormat(cs.sps->getChromaFormatIdc()); #if JVET_AB0068_AC0328_NNLF_RDO - CPelBuf orgLuma = cs.picture->getOrigBuf(clipArea(cs.area.blocks[COMPONENT_Y], cs.picture->blocks[COMPONENT_Y])); + // CPelBuf orgLuma = cs.picture->getOrigBuf(clipArea(cs.area.blocks[COMPONENT_Y], cs.picture->blocks[COMPONENT_Y])); + CPelBuf orgLuma = cs.picture->getOrigBuf(clipArea(compArea, cs.picture->blocks[COMPONENT_Y])); #else - CPelBuf orgLuma = cs.picture->getOrigBuf( cs.area.blocks[COMPONENT_Y] ); + CPelBuf orgLuma = CPelBuf orgLuma = cs.picture->getOrigBuf(compArea); #endif if (m_pcEncCfg->getLumaLevelToDeltaQPMapping().isEnabled() || ( m_pcEncCfg->getLmcs() && (cs.slice->getLmcsEnabledFlag() && m_pcReshape->getCTUFlag())))