diff --git a/source/Lib/DecoderLib/DecCu.cpp b/source/Lib/DecoderLib/DecCu.cpp index 21bafe3a0afdc429aed3b9ca9517f764b37cdde5..7a3603b43c1e6e3dc21798152460145e1c68691a 100644 --- a/source/Lib/DecoderLib/DecCu.cpp +++ b/source/Lib/DecoderLib/DecCu.cpp @@ -818,6 +818,19 @@ void DecCu::xDeriveCUMV( CodingUnit &cu ) printf( "DECODER: pu motion vector across tile boundaries (%d,%d,%d,%d)\n", pu.lx(), pu.ly(), pu.lwidth(), pu.lheight() ); } } + if (CU::isIBC(cu)) + { + const int cuPelX = pu.Y().x; + const int cuPelY = pu.Y().y; + int roiWidth = pu.lwidth(); + int roiHeight = pu.lheight(); + const int picWidth = pu.cs->slice->getSPS()->getPicWidthInLumaSamples(); + const int picHeight = pu.cs->slice->getSPS()->getPicHeightInLumaSamples(); + const unsigned int lcuWidth = pu.cs->slice->getSPS()->getMaxCUWidth(); + int xPred = pu.bv.getHor(); + int yPred = pu.bv.getVer(); + CHECK(!PU::isBlockVectorValid(pu, cuPelX, cuPelY, roiWidth, roiHeight, picWidth, picHeight, 0, 0, xPred, yPred, lcuWidth), "invalid block vector for IBC detected."); + } } } //! \}