Opened 2 years ago

Closed 2 years ago

#88 closed defect (duplicate)

Bug in setMaxMinDepth() in VTM and BMS

Reported by: yjpiao Owned by:
Priority: minor Milestone: VTM-3.0
Component: BMS Version: BMS-2.0.1
Keywords: Cc: vzakharc, yuwenhe, jvet@…

Description

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.


#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



#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

Change history (2)

comment:1 Changed 2 years ago by yjpiao

  • Component changed from 360Lib to BMS

comment:2 Changed 2 years ago by ksuehring

  • Milestone set to VTM-3.0
  • Resolution set to duplicate
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.