76 :m_tmctsCheckEnabled(
false)
77 #if DECODER_PARTIAL_CONFORMANCE_CHECK
78 , m_numberOfSlicesInPicture(0)
82 #if DECODER_PARTIAL_CONFORMANCE_CHECK
83 : m_numberOfSlicesInPicture(0)
90 #if DECODER_PARTIAL_CONFORMANCE_CHECK != 0
92 static const UInt64 MAX_CNFUINT64 = std::numeric_limits<UInt64>::max();
96 {
Level::LEVEL1 , 36864, { 350, 0 }, 16, 1, 1, 552960ULL, { 128, 0 }, { 2, 2} },
97 {
Level::LEVEL2 , 122880, { 1500, 0 }, 16, 1, 1, 3686400ULL, { 1500, 0 }, { 2, 2} },
98 {
Level::LEVEL2_1, 245760, { 3000, 0 }, 20, 1, 1, 7372800ULL, { 3000, 0 }, { 2, 2} },
99 {
Level::LEVEL3 , 552960, { 6000, 0 }, 30, 2, 2, 16588800ULL, { 6000, 0 }, { 2, 2} },
100 {
Level::LEVEL3_1, 983040, { 10000, 0 }, 40, 3, 3, 33177600ULL, { 10000, 0 }, { 2, 2} },
101 {
Level::LEVEL4 , 2228224, { 12000, 30000 }, 75, 5, 5, 66846720ULL, { 12000, 30000 }, { 4, 4} },
102 {
Level::LEVEL4_1, 2228224, { 20000, 50000 }, 75, 5, 5, 133693440ULL, { 20000, 50000 }, { 4, 4} },
103 {
Level::LEVEL5 , 8912896, { 25000, 100000 }, 200, 11, 10, 267386880ULL, { 25000, 100000 }, { 6, 4} },
104 {
Level::LEVEL5_1, 8912896, { 40000, 160000 }, 200, 11, 10, 534773760ULL, { 40000, 160000 }, { 8, 4} },
105 {
Level::LEVEL5_2, 8912896, { 60000, 240000 }, 200, 11, 10, 1069547520ULL, { 60000, 240000 }, { 8, 4} },
106 {
Level::LEVEL6 , 35651584, { 60000, 240000 }, 600, 22, 20, 1069547520ULL, { 60000, 240000 }, { 8, 4} },
107 {
Level::LEVEL6_1, 35651584, { 120000, 480000 }, 600, 22, 20, 2139095040ULL, { 120000, 480000 }, { 8, 4} },
108 {
Level::LEVEL6_2, 35651584, { 240000, 800000 }, 600, 22, 20, 4278190080ULL, { 240000, 800000 }, { 6, 4} },
109 {
Level::LEVEL8_5,
MAX_UINT, {
MAX_UINT, MAX_UINT },
MAX_UINT,
MAX_UINT,
MAX_UINT, MAX_CNFUINT64, {
MAX_UINT, MAX_UINT }, { 0, 0} },
115 {
Profile::MAIN,
"Main", 8,
CHROMA_420,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1 ,
false, 256, 64,
false, 1000, 1100, 1500, 10 , mainLevelTierInfo },
116 {
Profile::MAIN10,
"Main10", 10,
CHROMA_420,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1 ,
false, 256, 64,
false, 1000, 1100, 1875, 10 , mainLevelTierInfo },
117 {
Profile::MAIN10,
"Main10 Still Picture", 10,
CHROMA_420,
false,
true,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1 ,
false, 256, 64, true , 1000, 1100, 1875, 10 , mainLevelTierInfo },
118 {
Profile::MAINSTILLPICTURE,
"Main Still Picture", 8,
CHROMA_420,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1 ,
false, 256, 64, true , 1000, 1100, 1500, 10 , mainLevelTierInfo },
119 {
Profile::MAINREXT,
"Monochrome", 8,
CHROMA_400,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 667, 733, 1000, 10 , mainLevelTierInfo },
120 {
Profile::MAINREXT,
"Monochrome 12", 12,
CHROMA_400,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1000, 1100, 1500, 10 , mainLevelTierInfo },
121 {
Profile::MAINREXT,
"Monochrome 16", 16,
CHROMA_400,
false,
false,
ENABLED ,
OPTIONAL,
OPTIONAL,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1333, 1467, 2000, 10 , mainLevelTierInfo },
122 {
Profile::MAINREXT,
"Main 12", 12,
CHROMA_420,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1500, 1650, 2250, 10 , mainLevelTierInfo },
123 {
Profile::MAINREXT,
"Main 4:2:2 10", 10,
CHROMA_422,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1667, 1833, 2500, 5 , mainLevelTierInfo },
124 {
Profile::MAINREXT,
"Main 4:2:2 12", 12,
CHROMA_422,
false,
false,
ENABLED ,
DISABLED,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 2000, 2200, 3000, 5 , mainLevelTierInfo },
125 {
Profile::MAINREXT,
"Main 4:4:4", 8,
CHROMA_444,
false,
false,
ENABLED ,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 2000, 2200, 3000, 5 , mainLevelTierInfo },
126 {
Profile::MAINREXT,
"Main 4:4:4 10", 10,
CHROMA_444,
false,
false,
ENABLED ,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 2500, 2750, 3750, 5 , mainLevelTierInfo },
127 {
Profile::MAINREXT,
"Main 4:4:4 12", 12,
CHROMA_444,
false,
false,
ENABLED ,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 3000, 3300, 4500, 5 , mainLevelTierInfo },
128 {
Profile::MAINREXT,
"Main Intra", 8,
CHROMA_420, true ,
false,
OPTIONAL,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1000, 1100, 1500, 10 , mainLevelTierInfo },
129 {
Profile::MAINREXT,
"Main 10 Intra", 10,
CHROMA_420, true ,
false,
OPTIONAL,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1000, 1100, 1875, 10 , mainLevelTierInfo },
130 {
Profile::MAINREXT,
"Main 12 Intra", 12,
CHROMA_420, true ,
false,
OPTIONAL,
DISABLED,
DISABLED,
DISABLED,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1500, 1650, 2250, 10 , mainLevelTierInfo },
131 {
Profile::MAINREXT,
"Main 4:2:2 10 Intra", 10,
CHROMA_422, true ,
false,
OPTIONAL,
DISABLED,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 1667, 1833, 2500, 5 , mainLevelTierInfo },
132 {
Profile::MAINREXT,
"Main 4:2:2 12 Intra", 12,
CHROMA_422, true ,
false,
OPTIONAL,
DISABLED,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 2000, 2200, 3000, 5 , mainLevelTierInfo },
133 {
Profile::MAINREXT,
"Main 4:4:4 Intra", 8,
CHROMA_444, true ,
false,
OPTIONAL,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 2000, 2200, 3000, 5 , mainLevelTierInfo },
134 {
Profile::MAINREXT,
"Main 4:4:4 10 Intra", 10,
CHROMA_444, true ,
false,
OPTIONAL,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 2500, 2750, 3750, 5 , mainLevelTierInfo },
135 {
Profile::MAINREXT,
"Main 4:4:4 12 Intra", 12,
CHROMA_444, true ,
false,
OPTIONAL,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 3000, 3300, 4500, 5 , mainLevelTierInfo },
136 {
Profile::MAINREXT,
"Main 4:4:4 16 Intra", 16,
CHROMA_444, true ,
false,
OPTIONAL,
OPTIONAL,
OPTIONAL,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64,
false, 4000, 4400, 6000, 5 , mainLevelTierInfo },
137 {
Profile::MAINREXT,
"Main 4:4:4 Still Picture", 8,
CHROMA_444, true , true ,
OPTIONAL,
OPTIONAL,
DISABLED,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64, true , 2000, 2200, 3000, 5 , mainLevelTierInfo },
138 {
Profile::MAINREXT,
"Main 4:4:4 16 Still Picture", 16,
CHROMA_444, true , true ,
OPTIONAL,
OPTIONAL,
OPTIONAL,
OPTIONAL,
DISABLED,
HBR_1_OR_2 ,
false, 256, 64, true , 4000, 4400, 6000, 5 , mainLevelTierInfo },
139 {
Profile::HIGHTHROUGHPUTREXT,
"High Throughput 4:4:4 16 Intra", 16,
CHROMA_444, true ,
false,
OPTIONAL,
OPTIONAL,
OPTIONAL,
OPTIONAL,
ENABLED ,
HBR_12_OR_24 , true , 256, 64,
false, 4000, 4400, 6000, 5 , mainLevelTierInfo },
215 for(
Int row=0; row < numRows; row++)
217 for(
Int col=0; col < numCols; col++)
219 const Int tileIdx = row * numCols + col;
256 checkTiles(sps, pps, pic, features);
289 if (pLTF[i].level == spsLevelName)
304 const UInt rawCtuBits = ctbSizeY*ctbSizeY*bitDepthY+2*(ctbWidthC*ctbHeightC)*bitDepthC;
312 checkToolAvailability(
const TComSPS &sps,
319 const Bool bWantedFlagState = rextToolsEnabled ==
ENABLED;
380 const Bool bFirstSliceInStream,
381 const Bool bFirstSliceInSequence,
382 const Bool bFirstSliceInPicture)
395 getStream() <<
"Unknown profile/constraint flag combination discovered\n";
399 getStream() <<
"Unknown level IDC discovered\n";
412 getStream() <<
"Bad NALU for an intra constrained profile\n";
416 if (bFirstSliceInStream || bFirstSliceInSequence || bFirstSliceInPicture)
418 m_numberOfSlicesInPicture=1;
423 m_numberOfSlicesInPicture++;
426 getStream() <<
"Too many slice segments in the picture\n";
435 getStream() <<
"Entire access unit must fit within the CPB even if split into multiple decoding units (section C.2.2 Timing of decoding unit arrival)\n";
447 getStream() <<
"CTU exceeds maximum RAW CTU bits limits.\n";
Bool getOnePictureOnlyConstraintFlag() const
Int getNumTileRowsMinus1() const
Int getPicInitQPMinus26() const
TRISTATE chromaQpOffsetListEnabledFlag
Bool getPersistentRiceAdaptationEnabledFlag() const
Int getLog2MinCodingBlockSize() const
Int getNumTileColumnsMinus1() const
picture class (symbol + YUV buffers)
const LevelTierFeatures * getLevelTierFeatures() const
static const Int MAX_CU_DEPTH
log2(CTUSize)
const LevelTierFeatures * m_pLevelTier
const TComPPSRExt & getPpsRangeExtension() const
Bool getTransformSkipContextEnabledFlag() const
const TComSPSRExt & getSpsRangeExtension() const
reading functionality for NAL units
UInt getBitDepthConstraint() const
TRISTATE extendedPrecisionProcessingFlag
UInt maxSliceSegmentsPerPicture
slice header and SPS class (header)
Bool generalIntraConstraintFlag
TRISTATE cabacBypassAlignmentEnabledFlag
NalUnitType m_nalUnitType
nal_unit_type
UInt getMaxCUHeight() const
UInt64 getCpbSizeInBits() const
ChromaFormat maxChromaFormat
UInt getLog2MaxTransformSkipBlockSize() const
ChromaFormat getChromaFormatIdc() const
Void activate(const TComSPS &sps)
Level::Tier getTierFlag() const
ProfileTierLevel * getSubLayerPTL(Int i)
UInt getDiffCuChromaQpOffsetDepth() const
Bool getTilesEnabledFlag() const
const ProfileFeatures * m_pProfile
picture symbol class (header)
ProfileTierLevel * getGeneralPTL()
UInt getTileWidthInCtus() const
ChromaFormat getChromaFormatConstraint() const
UInt getLog2SaoOffsetScale(ChannelType type) const
Bool generalOnePictureOnlyConstraintFlag
UInt getPicHeightInLumaSamples() const
Bool getTransformSkipRotationEnabledFlag() const
Bool bWavefrontsAndTilesCanBeUsedSimultaneously
Int getBitDepth(ChannelType type) const
Bool getCabacBypassAlignmentEnabledFlag() const
const LevelTierFeatures * pLevelTiersListInfo
const TComPTL * getPTL() const
UInt getMaxCuDQPDepth() const
const TComPPS * getPPS() const
UInt getPicWidthInLumaSamples() const
Profile::Name getProfileIdc() const
Level::Name getLevelIdc() const
Bool getIntraSmoothingDisabledFlag() const
UInt getTileHeightInCtus() const
Bool getEntropyCodingSyncEnabledFlag() const
Bool onlyIRAPPictures() const
Int getLog2DiffMaxMinCodingBlockSize() const
unsigned long long UInt64
UInt getMaxRawCtuBits() const
UInt getMaxPicHeightInLumaSamples() const
UInt getMaxPicWidthInLumaSamples() const
Bool getRdpcmEnabledFlag(const RDPCMSignallingMode signallingMode) const
TComTile * getTComTile(UInt tileIdx)
UInt getLog2ParallelMergeLevelMinus2() const
UInt getQuadtreeTULog2MaxSize() const
static const UInt MAX_UINT
max. value of unsigned 32-bit integer
Bool getChromaQpOffsetListEnabledFlag() const
const TChar * pNameString
Bool getIntraConstraintFlag() const
const ProfileFeatures * getProfileFeatures() const
TRISTATE generalRExtToolsEnabled
Bool getExtendedPrecisionProcessingFlag() const
UInt minTileColumnWidthInLumaSamples
UInt getMaxCUWidth() const
const TComSPS * getSPS() const
UInt minTileRowHeightInLumaSamples