Skip to content
Snippets Groups Projects
Commit f7f7a601 authored by Guichun's avatar Guichun
Browse files

In MR 1361, intra chroma minQT size are configured in chroma samples and...

In MR 1361, intra chroma minQT size are configured in chroma samples and converted in luma samle units in software, change the equation to align with the change; Added notes about the MinQTChromaISlice setting in software manual
parent 4874f30f
No related branches found
No related tags found
No related merge requests found
......@@ -1204,6 +1204,11 @@ Defines the initial maximum depth of the multi-type tree in dual tree for luma c
%\ShortOption{\None} &
\Default{4} &
Defines the initial minimum size of the quad tree in dual tree for chroma components.
Note: this size is defined in chroma sample unit in configuration, and it is converted
into luma sample unit according to the horizontal chroma subsampling ratio when applied
in the software. In chroma format 4:2:2 case, this value shall be set to the value of
the height of minimum chroma QT node in chroma samples.
\\
\Option{MinQTISlice} &
......
......@@ -391,12 +391,9 @@ void QTBTPartitioner::canSplit( const CodingStructure &cs, bool& canNo, bool& ca
// don't allow QT-splitting below a BT split
if( lastSplit != CTU_LEVEL && lastSplit != CU_QUAD_SPLIT ) canQt = false;
#if JVET_Q0471_CHROMA_QT_SPLIT_ON_HEIGHT
#if JVET_Q0438_MONOCHROME_BUGFIXES
SizeType side = (chType == CHANNEL_TYPE_CHROMA) ? areaC->height : area.height;
#else
SizeType side = chType == CHANNEL_TYPE_CHROMA ? areaC.height : area.height;
#endif
if (side <= minQtSize) canQt = false;
// minQtSize is in luma samples unit
const unsigned minQTThreshold = minQtSize >> ((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
......@@ -574,8 +571,9 @@ PartSplit QTBTPartitioner::getImplicitSplit( const CodingStructure &cs )
#endif
const unsigned minQtSize = cs.pcv->getMinQtSize( *cs.slice, chType );
#if JVET_Q0471_CHROMA_QT_SPLIT_ON_HEIGHT
SizeType side = chType == CHANNEL_TYPE_CHROMA ? currArea().Cb().height : area.height;
const bool isQtAllowed = side > minQtSize && currBtDepth == 0;
// minQtSize is in luma samples unit
const unsigned minQTThreshold = minQtSize >> ((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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment