Opened 5 years ago
Closed 5 years ago
#991 closed defect (fixed)
mismatch with spec and Encoder bug related to JVET_Q0471_CHROMA_QT_SPLIT
Reported by: | hanhuang | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | VTM | Version: | VTM-8.0 |
Keywords: | Cc: | ksuehring, XiangLi, fbossen, jvet@… |
Description
Luma minimum QT size is mistakenly reduced by half in 4:2:2 format coding due to the integration of JVET_Q0471_CHROMA_QT_SPLIT. In the following quoted code, CHANNEL_TYPE_CHROMA should be replaced by chType.
#if JVET_Q0471_CHROMA_QT_SPLIT
minQtSize is in luma samples unit
const unsigned minQTThreshold = minQtSize >> ((area.chromaFormat == CHROMA_400) ? 0 : ((int) getChannelTypeScaleX(CHANNEL_TYPE_CHROMA, area.chromaFormat) - (int) getChannelTypeScaleY(CHANNEL_TYPE_CHROMA, area.chromaFormat)));
if( area.width <= minQTThreshold ) canQt = false;
#else
if( area.width <= minQtSize ) canQt = false;
#endif
#if JVET_Q0471_CHROMA_QT_SPLIT
minQtSize is in luma samples unit
const unsigned minQTThreshold = minQtSize >> ((area.chromaFormat == CHROMA_400) ? 0 : ((int) getChannelTypeScaleX(CHANNEL_TYPE_CHROMA, area.chromaFormat) - (int) getChannelTypeScaleY(CHANNEL_TYPE_CHROMA, area.chromaFormat)));
const bool isQtAllowed = area.width > minQTThreshold && currBtDepth == 0;
#else
const bool isQtAllowed = area.width > minQtSize && area.height > minQtSize && currBtDepth == 0;
#endif
Also, some encoder fast algorithm that determine the min and max QT split depth also depends on the minimum Qt size, which is not correctly changed accordingly.
A patch is attached to fix the issues.
Attachments (1)
Change history (3)
Changed 5 years ago by hanhuang
comment:1 Changed 5 years ago by hanhuang
- Summary changed from Encoder bug related to JVET_Q0471_CHROMA_QT_SPLIT to mismatch with spec and Encoder bug related to JVET_Q0471_CHROMA_QT_SPLIT
comment:2 Changed 5 years ago by hanhuang
- Resolution set to fixed
- Status changed from new to closed
fixed by JVET-R0131