Opened 6 years ago
Closed 6 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 6 years ago by yjpiao
- Component changed from 360Lib to BMS
comment:2 Changed 6 years ago by ksuehring
- Milestone set to VTM-3.0
- Resolution set to duplicate
- Status changed from new to closed
#104 was a duplicate. Fixed in
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/89