Skip to content
Snippets Groups Projects
Commit 52ee451b authored by Wei Jia's avatar Wei Jia Committed by Karsten Suehring
Browse files

JVET-AE0128 item 2: Update the constraint on when an NNPFC SEI message shall...

JVET-AE0128 item 2: Update the constraint on when an NNPFC SEI message shall be a repetition of the first NNPFC SEI message in the CLVS
parent 5adc42f6
No related branches found
No related tags found
1 merge request!2658JVET-AE0128 item 2: Update the constraint on when an NNPFC SEI message shall be a repetition of the first NNPFC SEI message in the CLVS
......@@ -1119,6 +1119,77 @@ SEINeuralNetworkPostFilterCharacteristics::SEINeuralNetworkPostFilterCharacteris
m_inputPicOutputFlag = sei.m_inputPicOutputFlag;
}
#if JVET_AE0128_CONSTRAINT_UPDATE
bool SEINeuralNetworkPostFilterCharacteristics::operator == (const SEINeuralNetworkPostFilterCharacteristics& sei)
{
bool result =
m_id == sei.m_id &&
m_modeIdc == sei.m_modeIdc &&
m_propertyPresentFlag == sei.m_propertyPresentFlag &&
m_purpose == sei.m_purpose &&
m_outSubCFlag == sei.m_outSubCFlag &&
m_outSubWidthC == sei.m_outSubWidthC &&
m_outSubHeightC == sei.m_outSubHeightC &&
m_outColourFormatIdc == sei.m_outColourFormatIdc &&
m_picWidthNumeratorMinus1 == sei.m_picWidthNumeratorMinus1 &&
m_picWidthDenominatorMinus1 == sei.m_picWidthDenominatorMinus1 &&
m_picHeightNumeratorMinus1 == sei.m_picHeightNumeratorMinus1 &&
m_picHeightDenominatorMinus1 == sei.m_picHeightDenominatorMinus1 &&
m_picWidthInLumaSamples == sei.m_picWidthInLumaSamples &&
m_picHeightInLumaSamples == sei.m_picHeightInLumaSamples &&
m_inpTensorBitDepthLumaMinus8 == sei.m_inpTensorBitDepthLumaMinus8 &&
m_inpTensorBitDepthChromaMinus8 == sei.m_inpTensorBitDepthChromaMinus8 &&
m_outTensorBitDepthLumaMinus8 == sei.m_outTensorBitDepthLumaMinus8 &&
m_outTensorBitDepthChromaMinus8 == sei.m_outTensorBitDepthChromaMinus8 &&
m_componentLastFlag == sei.m_componentLastFlag &&
m_inpFormatIdc == sei.m_inpFormatIdc &&
m_auxInpIdc == sei.m_auxInpIdc &&
m_sepColDescriptionFlag == sei.m_sepColDescriptionFlag &&
#if JVET_AD0067_INCLUDE_SYNTAX
m_fullRangeFlag == sei.m_fullRangeFlag &&
#endif
m_colPrimaries == sei.m_colPrimaries &&
m_transCharacteristics == sei.m_transCharacteristics &&
m_matrixCoeffs == sei.m_matrixCoeffs &&
m_inpOrderIdc == sei.m_inpOrderIdc &&
m_outFormatIdc == sei.m_outFormatIdc &&
m_outOrderIdc == sei.m_outOrderIdc &&
m_constantPatchSizeFlag == sei.m_constantPatchSizeFlag &&
m_patchWidthMinus1 == sei.m_patchWidthMinus1 &&
m_patchHeightMinus1 == sei.m_patchHeightMinus1 &&
m_extendedPatchWidthCdDeltaMinus1 == sei.m_extendedPatchWidthCdDeltaMinus1 &&
m_extendedPatchHeightCdDeltaMinus1 == sei.m_extendedPatchHeightCdDeltaMinus1 &&
m_overlap == sei.m_overlap &&
m_paddingType == sei.m_paddingType &&
m_lumaPadding == sei.m_lumaPadding &&
m_cbPadding == sei.m_cbPadding &&
m_crPadding == sei.m_crPadding &&
m_complexityInfoPresentFlag == sei.m_complexityInfoPresentFlag &&
m_uriTag == sei.m_uriTag &&
m_uri == sei.m_uri &&
m_parameterTypeIdc == sei.m_parameterTypeIdc &&
m_log2ParameterBitLengthMinus3 == sei.m_log2ParameterBitLengthMinus3 &&
m_numParametersIdc == sei.m_numParametersIdc &&
m_numKmacOperationsIdc == sei.m_numKmacOperationsIdc &&
m_totalKilobyteSize == sei.m_totalKilobyteSize &&
m_numberInputDecodedPicturesMinus1 == sei.m_numberInputDecodedPicturesMinus1 &&
m_numberInterpolatedPictures == sei.m_numberInterpolatedPictures &&
m_inputPicOutputFlag == sei.m_inputPicOutputFlag &&
m_payloadLength == sei.m_payloadLength;
if (m_payloadByte && sei.m_payloadByte && m_payloadLength == sei.m_payloadLength)
{
result &= !std::strncmp(m_payloadByte, sei.m_payloadByte, m_payloadLength);
}
else if ((m_payloadByte && !sei.m_payloadByte) || (!m_payloadByte && sei.m_payloadByte))
{
result = false;
}
return result;
}
#endif
SEINeuralNetworkPostFilterActivation::SEINeuralNetworkPostFilterActivation(
const SEINeuralNetworkPostFilterActivation& sei)
{
......
......@@ -1259,6 +1259,10 @@ public:
{}
SEINeuralNetworkPostFilterCharacteristics(const SEINeuralNetworkPostFilterCharacteristics& sei);
#if JVET_AE0128_CONSTRAINT_UPDATE
bool operator == (const SEINeuralNetworkPostFilterCharacteristics& sei);
#endif
~SEINeuralNetworkPostFilterCharacteristics() override
{
if (m_payloadByte)
......
......@@ -105,15 +105,19 @@ void SEINeuralNetworkPostFiltering::filterPictures(PicList& picList)
{
m_clvsNnpfcSEIs = getSeisByType(currCodedPic->SEIs, SEI::PayloadType::NEURAL_NETWORK_POST_FILTER_CHARACTERISTICS);
#if JVET_AE0142_NNPF_CONSTRAINT_BUGFIXES
#if JVET_AE0128_CONSTRAINT_UPDATE || JVET_AE0142_NNPF_CONSTRAINT_BUGFIXES
for (std::list<SEI*>::iterator it = m_clvsNnpfcSEIs.begin(); it != m_clvsNnpfcSEIs.end(); it++)
{
SEINeuralNetworkPostFilterCharacteristics *nnpfcSEI = (SEINeuralNetworkPostFilterCharacteristics*)(*it);
for (std::list<SEI*>::iterator it2 = it; it2 != m_clvsNnpfcSEIs.end(); it2++)
{
#if JVET_AE0128_CONSTRAINT_UPDATE
SEINeuralNetworkPostFilterCharacteristics *nnpfcSEI2 = (SEINeuralNetworkPostFilterCharacteristics*)(*it2);
CHECK(nnpfcSEI->m_id == nnpfcSEI2->m_id && nnpfcSEI->m_baseFlag && nnpfcSEI2->m_baseFlag && !(*nnpfcSEI == *nnpfcSEI2), "All NNPFC SEI messages in a CLVS that have a particular nnpfc_id value and nnpfc_base_flag equal to 1 shall have identical SEI payload content.");
#endif
#if JVET_AE0142_NNPF_CONSTRAINT_BUGFIXES
CHECK(nnpfcSEI->m_id == nnpfcSEI2->m_id && nnpfcSEI->m_purpose != nnpfcSEI2->m_purpose, "All NNPFC SEI messages with a particular value of nnpfc_id within a CLVS shall have the same value of nnpfc_purpose.");
#endif
}
}
#endif
......
......@@ -67,6 +67,8 @@
#define JVET_AE0141_NNPFC_BUGFIX_COLOURIZATION 1 // JVET-AE0141: Fix a bug in NNPFC SEI message for colourization
#define JVET_AE0128_CONSTRAINT_UPDATE 1 // JVET_AE0128 item 2: Update the constraint on when an NNPFC SEI message shall be a repetition of the first NNPFC SEI message in the CLVS
#define JVET_AE0142_NNPF_CONSTRAINT_BUGFIXES 1 // JVET_AE0142 item 3 and item 4: Fix two bugs including an added condition and a nnpfc_purpose related constraint.
#define JVET_AE0135_NNPF_PIC_RATE_UPSAMPLING_CONSTRAINT 1 // JVET_AE0135 item2: On NNPF picture rate upsampling constraint
......
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