diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index e8162268ba5e1cd8aac9cc8f94643fa855238589..8cd66cfbc6b9549cb7e8a038b48c70e17e322f01 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -1188,11 +1188,16 @@ void EncApp::xInitLibCfg( int layerIdx ) for (int i = 0; i < m_nnPostFilterSEICharacteristicsNumFilters; i++) { m_cEncLib.setNNPostFilterSEICharacteristicsId (m_nnPostFilterSEICharacteristicsId[i], i); +#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG + m_cEncLib.setNNPostFilterSEICharacteristicsBaseFlag (m_nnPostFilterSEICharacteristicsBaseFlag[i], i); +#endif m_cEncLib.setNNPostFilterSEICharacteristicsModeIdc (m_nnPostFilterSEICharacteristicsModeIdc[i], i); m_cEncLib.setNNPostFilterSEICharacteristicsPropertyPresentFlag( m_nnPostFilterSEICharacteristicsPropertyPresentFlag[i], i); if (m_cEncLib.getNNPostFilterSEICharacteristicsPropertyPresentFlag(i)) { +#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG m_cEncLib.setNNPostFilterSEICharacteristicsBaseFlag (m_nnPostFilterSEICharacteristicsBaseFlag[i], i); +#endif if (!m_nnPostFilterSEICharacteristicsBaseFlag[i]) { bool baseFilterExist = false; diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 96205a71ecf8875a138f4688e280234d24de1d66..cfc0f32a3b19c6655b00a70cc9a575bc6b1d7c15 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -67,6 +67,8 @@ #define JVET_AD0067_SWAP_SYNTAX 1 // Swap the two syntax elements: nnpfc_auxiliary_inp_idc and nnpfc_inp_order_idc +#define JVET_AD0056_MOVE_NNPFC_BASE_FLAG 1 + #define JVET_AD0054_NNPFC_ABSENT_INPUT_PIC_ZERO_FLAG 1 #define JVET_AD0141_NNPFA_NONOUTPUTPIC 1 //Check that NNPFA is present in pic that is not a non-output picture diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp index a832e3c6d1d695066360ff1661ce38413c913337..97a7217a0ec98667d1d7624703c656a0d90c9426 100644 --- a/source/Lib/DecoderLib/SEIread.cpp +++ b/source/Lib/DecoderLib/SEIread.cpp @@ -2785,6 +2785,11 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC sei.m_id = val; CHECK((sei.m_id >= 256 && sei.m_id <= 511) || (sei.m_id >= (1<<31) && sei.m_id <= MAX_NNPFC_ID), "Reserved nnpfc_id value, shall ignore the SEI message"); +#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG + sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_base_flag"); + sei.m_baseFlag = val; +#endif + sei_read_uvlc( pDecodedMessageOutputStream, val, "nnpfc_mode_idc" ); sei.m_modeIdc = val; @@ -2810,9 +2815,10 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC if (sei.m_propertyPresentFlag) { +#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_base_flag"); sei.m_baseFlag = val; - +#endif ChromaFormat chromaFormatIdc = sps->getChromaFormatIdc(); uint8_t subWidthC; uint8_t subHeightC; diff --git a/source/Lib/EncoderLib/SEIEncoder.cpp b/source/Lib/EncoderLib/SEIEncoder.cpp index 6b7c80a883cf8519ec315fd171e44f9a7c11920b..5d4f931ffc7132abbcc6d947b5f177053fa4b0b8 100644 --- a/source/Lib/EncoderLib/SEIEncoder.cpp +++ b/source/Lib/EncoderLib/SEIEncoder.cpp @@ -1307,6 +1307,9 @@ void SEIEncoder::initSEINeuralNetworkPostFilterCharacteristics(SEINeuralNetworkP CHECK(!(sei != nullptr), "Unspecified error"); sei->m_purpose = m_pcCfg->getNNPostFilterSEICharacteristicsPurpose(filterIdx); sei->m_id = m_pcCfg->getNNPostFilterSEICharacteristicsId(filterIdx); +#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG + sei->m_baseFlag = m_pcCfg->getNNPostFilterSEICharacteristicsBaseFlag(filterIdx); +#endif sei->m_modeIdc = m_pcCfg->getNNPostFilterSEICharacteristicsModeIdc(filterIdx); if (sei->m_modeIdc == POST_FILTER_MODE::URI) { @@ -1316,8 +1319,9 @@ void SEIEncoder::initSEINeuralNetworkPostFilterCharacteristics(SEINeuralNetworkP sei->m_propertyPresentFlag = m_pcCfg->getNNPostFilterSEICharacteristicsPropertyPresentFlag(filterIdx); if (sei->m_propertyPresentFlag) { +#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG sei->m_baseFlag = m_pcCfg->getNNPostFilterSEICharacteristicsBaseFlag(filterIdx); - +#endif sei->m_numberInputDecodedPicturesMinus1 = m_pcCfg->getNNPostFilterSEICharacteristicsNumberInputDecodedPicturesMinus1(filterIdx); CHECK(sei->m_numberInputDecodedPicturesMinus1 > 63, "m_numberInputDecodedPicturesMinus1 shall be in the range of 0 to 63"); diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp index 3328556e237fdb932a7be216a0caf0705c7c4375..dd09f77721534823cc8a8d2c31b8c0a8cd3d1d48 100644 --- a/source/Lib/EncoderLib/SEIwrite.cpp +++ b/source/Lib/EncoderLib/SEIwrite.cpp @@ -1683,6 +1683,9 @@ void SEIWriter::xWriteSEINeuralNetworkPostFilterCharacteristics(const SEINeuralN { xWriteCode(sei.m_purpose, 16, "nnpfc_purpose"); xWriteUvlc(sei.m_id, "nnpfc_id"); +#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG + xWriteFlag(sei.m_baseFlag, "nnpfc_base_flag"); +#endif xWriteUvlc(sei.m_modeIdc, "nnpfc_mode_idc"); if (sei.m_modeIdc == POST_FILTER_MODE::URI) { @@ -1696,7 +1699,9 @@ void SEIWriter::xWriteSEINeuralNetworkPostFilterCharacteristics(const SEINeuralN xWriteFlag(sei.m_propertyPresentFlag, "nnpfc_property_present_flag"); if (sei.m_propertyPresentFlag) { +#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG xWriteFlag(sei.m_baseFlag, "nnpfc_base_flag"); +#endif xWriteUvlc(sei.m_numberInputDecodedPicturesMinus1, "nnpfc_number_of_input_pictures_minus1"); #if JVET_AD0056_NNPFC_INPUT_PIC_OUTPUT_FLAG