id summary reporter owner description type status priority milestone component version resolution keywords cc 88 Bug in setMaxMinDepth() in VTM and BMS yjpiao "In function setMaxMinDepth(), positions of cuBelowLeft and cuAboveRight are not correctly derived. As it is commented in the s/w, position of belowleft should be derived with actual block height instead of minCU size,and position of aboveRight should be derived with actual block width instead of minCU size. ----------------------------- current----------------------------- #if HEVC_TILES_WPP const unsigned curTileIdx = cs.picture->tileMap->getTileIdxMap( currArea().lumaPos() ); const CodingUnit* cuLeft = cs.getCURestricted( pos.offset( -1, 0 ), curSliceIdx, curTileIdx, chType ); const CodingUnit* cuBelowLeft = cs.getCURestricted( pos.offset( -1, cs.pcv->minCUHeight >> getChannelTypeScaleY( chType, cs.pcv->chrFormat ) ), curSliceIdx, curTileIdx, chType ); // should use actual block size instead of minCU size const CodingUnit* cuAbove = cs.getCURestricted( pos.offset( 0, -1 ), curSliceIdx, curTileIdx, chType ); const CodingUnit* cuAboveRight = cs.getCURestricted( pos.offset( cs.pcv->minCUWidth >> getChannelTypeScaleX( chType, cs.pcv->chrFormat ), -1 ), curSliceIdx, curTileIdx, chType ); // should use actual block size instead of minCU size #else const CodingUnit* cuLeft = cs.getCURestricted( pos.offset( -1, 0 ), curSliceIdx, chType ); const CodingUnit* cuBelowLeft = cs.getCURestricted( pos.offset( -1, cs.pcv->minCUHeight >> getChannelTypeScaleY( chType, cs.pcv->chrFormat ) ), curSliceIdx, chType ); // should use actual block size instead of minCU size const CodingUnit* cuAbove = cs.getCURestricted( pos.offset( 0, -1 ), curSliceIdx, chType ); const CodingUnit* cuAboveRight = cs.getCURestricted( pos.offset( cs.pcv->minCUWidth >> getChannelTypeScaleX( chType, cs.pcv->chrFormat ), -1 ), curSliceIdx, chType ); // should use actual block size instead of minCU size #endif ------------------------------------------------------------------ ----------------------------- modified----------------------------- #if HEVC_TILES_WPP const unsigned curTileIdx = cs.picture->tileMap->getTileIdxMap( currArea().lumaPos() ); const CodingUnit* cuLeft = cs.getCURestricted( pos.offset( -1, 0 ), curSliceIdx, curTileIdx, chType ); const CodingUnit* cuBelowLeft = cs.getCURestricted( pos.offset( -1, currArea().blocks[chType].height >> getChannelTypeScaleY( chType, cs.pcv->chrFormat ) ), curSliceIdx, curTileIdx, chType ); // should use actual block size instead of minCU size const CodingUnit* cuAbove = cs.getCURestricted( pos.offset( 0, -1 ), curSliceIdx, curTileIdx, chType ); const CodingUnit* cuAboveRight = cs.getCURestricted( pos.offset( currArea().blocks[chType].width >> getChannelTypeScaleX( chType, cs.pcv->chrFormat ), -1 ), curSliceIdx, curTileIdx, chType ); // should use actual block size instead of minCU size #else const CodingUnit* cuLeft = cs.getCURestricted( pos.offset( -1, 0 ), curSliceIdx, chType ); const CodingUnit* cuBelowLeft = cs.getCURestricted( pos.offset( -1, currArea().blocks[chType].height >> getChannelTypeScaleY( chType, cs.pcv->chrFormat ) ), curSliceIdx, chType ); // should use actual block size instead of minCU size const CodingUnit* cuAbove = cs.getCURestricted( pos.offset( 0, -1 ), curSliceIdx, chType ); const CodingUnit* cuAboveRight = cs.getCURestricted( pos.offset( currArea().blocks[chType].width >> getChannelTypeScaleX( chType, cs.pcv->chrFormat ), -1 ), curSliceIdx, chType ); // should use actual block size instead of minCU size #endif ------------------------------------------------------------------ Please confirm the modification. Yinji" defect closed minor VTM-3.0 BMS BMS-2.0.1 duplicate vzakharc yuwenhe jvet@…