diff --git a/source/App/DecoderApp/DecApp.cpp b/source/App/DecoderApp/DecApp.cpp index 655713809b5be7a55969441b3eb2be64281374ab..cf9965ee2a8c77b19a0c2a4975fabc4d6e62e9cc 100644 --- a/source/App/DecoderApp/DecApp.cpp +++ b/source/App/DecoderApp/DecApp.cpp @@ -122,11 +122,7 @@ uint32_t DecApp::decode() } // main decoder loop -#if JVET_P0125_EOS_LAYER_SPECIFIC bool loopFiltered[MAX_VPS_LAYERS] = { false }; -#else - bool loopFiltered = false; -#endif bool bPicSkipped = false; @@ -216,33 +212,17 @@ uint32_t DecApp::decode() } } -#if JVET_P0125_EOS_LAYER_SPECIFIC if ((bNewPicture || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS) && !m_cDecLib.getFirstSliceInSequence(nalu.m_nuhLayerId) && !bPicSkipped) -#else - if ((bNewPicture || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS) && !m_cDecLib.getFirstSliceInSequence() && !bPicSkipped) -#endif { -#if JVET_P0125_EOS_LAYER_SPECIFIC if (!loopFiltered[nalu.m_nuhLayerId] || bitstreamFile) -#else - if (!loopFiltered || bitstreamFile) -#endif { m_cDecLib.executeLoopFilters(); m_cDecLib.finishPicture( poc, pcListPic ); } -#if JVET_P0125_EOS_LAYER_SPECIFIC loopFiltered[nalu.m_nuhLayerId] = (nalu.m_nalUnitType == NAL_UNIT_EOS); -#else - loopFiltered = (nalu.m_nalUnitType == NAL_UNIT_EOS); -#endif if (nalu.m_nalUnitType == NAL_UNIT_EOS) { -#if JVET_P0125_EOS_LAYER_SPECIFIC m_cDecLib.setFirstSliceInSequence(true, nalu.m_nuhLayerId); -#else - m_cDecLib.setFirstSliceInSequence(true); -#endif } #if JVET_P0978_RPL_RESTRICTIONS @@ -250,11 +230,7 @@ uint32_t DecApp::decode() #endif } else if ( (bNewPicture || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS ) && -#if JVET_P0125_EOS_LAYER_SPECIFIC m_cDecLib.getFirstSliceInSequence(nalu.m_nuhLayerId)) -#else - m_cDecLib.getFirstSliceInSequence () ) -#endif { m_cDecLib.setFirstSliceInPicture (true); } diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 29f9a06abb3a95fd2aec8bfb0e2b0d12ff520a9b..cf56823e5a321f7ea7bd157b701afe0d6601b6a8 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -72,7 +72,6 @@ -#define JVET_P0125_EOS_LAYER_SPECIFIC 1 // JVET-P0125: Specify EOS NAL units to be layer specific #define JVET_Q0482_REMOVE_CONSTANT_PARAMS 1 // JVET-Q0482: Remove constant slice header parameter settings in PPS diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index f094c7ecc58016ad039ed98d85c161cc638bc79d..1b1f3c8bf435f84839d9bb95c95cbd21a0133807 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -65,11 +65,7 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri PicList* pcListPic = NULL; static bool bFirstCall = true; /* TODO: MT */ -#if JVET_P0125_EOS_LAYER_SPECIFIC static bool loopFiltered[MAX_VPS_LAYERS] = { false }; /* TODO: MT */ -#else - static bool loopFiltered = false; /* TODO: MT */ -#endif static int iPOCLastDisplay = -MAX_INT; /* TODO: MT */ static std::ifstream* bitstreamFile = nullptr; /* TODO: MT */ @@ -154,17 +150,9 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri } } -#if JVET_P0125_EOS_LAYER_SPECIFIC if ((bNewPicture || !*bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS) && !pcDecLib->getFirstSliceInSequence(nalu.m_nuhLayerId)) -#else - if( ( bNewPicture || !*bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS ) && !pcDecLib->getFirstSliceInSequence() ) -#endif { -#if JVET_P0125_EOS_LAYER_SPECIFIC if (!loopFiltered[nalu.m_nuhLayerId] || *bitstreamFile) -#else - if( !loopFiltered || *bitstreamFile ) -#endif { pcDecLib->finishPictureLight( poc, pcListPic ); @@ -359,26 +347,14 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri } -#if JVET_P0125_EOS_LAYER_SPECIFIC loopFiltered[nalu.m_nuhLayerId] = (nalu.m_nalUnitType == NAL_UNIT_EOS); -#else - loopFiltered = ( nalu.m_nalUnitType == NAL_UNIT_EOS ); -#endif if( nalu.m_nalUnitType == NAL_UNIT_EOS ) { -#if JVET_P0125_EOS_LAYER_SPECIFIC pcDecLib->setFirstSliceInSequence(true, nalu.m_nuhLayerId); -#else - pcDecLib->setFirstSliceInSequence( true ); -#endif } } -#if JVET_P0125_EOS_LAYER_SPECIFIC else if ((bNewPicture || !*bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS) && pcDecLib->getFirstSliceInSequence(nalu.m_nuhLayerId)) -#else - else if( ( bNewPicture || !*bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS ) && pcDecLib->getFirstSliceInSequence() ) -#endif { pcDecLib->setFirstSliceInPicture( true ); } @@ -396,14 +372,10 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri pcDecLib = nullptr; } bFirstCall = true; -#if JVET_P0125_EOS_LAYER_SPECIFIC for (int i = 0; i < MAX_VPS_LAYERS; i++) { loopFiltered[i] = false; } -#else - loopFiltered = false; -#endif iPOCLastDisplay = -MAX_INT; if( bytestream ) @@ -461,11 +433,7 @@ DecLib::DecLib() , m_prevPOC(MAX_INT) , m_prevTid0POC(0) , m_bFirstSliceInPicture(true) -#if JVET_P0125_EOS_LAYER_SPECIFIC , m_firstSliceInSequence{ true } -#else - , m_bFirstSliceInSequence(true) -#endif , m_firstSliceInBitstream(true) , m_prevSliceSkipped(false) , m_skippedPOC(0) @@ -1895,15 +1863,9 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl //For inference of NoOutputOfPriorPicsFlag if (m_apcSlicePilot->getRapPicFlag() || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_GDR) { -#if JVET_P0125_EOS_LAYER_SPECIFIC if ((m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA && m_bFirstSliceInSequence[nalu.m_nuhLayerId]) || (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA && m_apcSlicePilot->getHandleCraAsCvsStartFlag()) || (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_GDR && m_bFirstSliceInSequence[nalu.m_nuhLayerId])) -#else - if ((m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA && m_bFirstSliceInSequence) || - (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA && m_apcSlicePilot->getHandleCraAsCvsStartFlag()) || - (m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_GDR && m_bFirstSliceInSequence)) -#endif { m_apcSlicePilot->setNoIncorrectPicOutputFlag(true); } @@ -2041,11 +2003,7 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl m_prevSliceSkipped = false; //we should only get a different poc for a new picture (with CTU address==0) -#if JVET_P0125_EOS_LAYER_SPECIFIC if (m_apcSlicePilot->getPOC() != m_prevPOC && !m_firstSliceInSequence[nalu.m_nuhLayerId] && (m_apcSlicePilot->getFirstCtuRsAddrInSlice() != 0)) -#else - if(m_apcSlicePilot->getPOC() != m_prevPOC && !m_bFirstSliceInSequence && (m_apcSlicePilot->getFirstCtuRsAddrInSlice() != 0)) -#endif { msg( WARNING, "Warning, the first slice of a picture might have been lost!\n"); } @@ -2119,11 +2077,7 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl // actual decoding starts here xActivateParameterSets( nalu.m_nuhLayerId ); -#if JVET_P0125_EOS_LAYER_SPECIFIC m_firstSliceInSequence[nalu.m_nuhLayerId] = false; -#else - m_bFirstSliceInSequence = false; -#endif m_firstSliceInBitstream = false; Slice* pcSlice = m_pcPic->slices[m_uiSliceSegmentIdx]; diff --git a/source/Lib/DecoderLib/DecLib.h b/source/Lib/DecoderLib/DecLib.h index af2c3d508b70ff088fa634afb55b73b13c2a8fe6..d2be98fea375c961615f1a5e76c7b931acceb9b8 100644 --- a/source/Lib/DecoderLib/DecLib.h +++ b/source/Lib/DecoderLib/DecLib.h @@ -117,11 +117,7 @@ private: int m_prevPOC; int m_prevTid0POC; bool m_bFirstSliceInPicture; -#if JVET_P0125_EOS_LAYER_SPECIFIC bool m_firstSliceInSequence[MAX_VPS_LAYERS]; -#else - bool m_bFirstSliceInSequence; -#endif bool m_firstSliceInBitstream; bool m_prevSliceSkipped; int m_skippedPOC; @@ -217,13 +213,8 @@ public: void setNoOutputPriorPicsFlag (bool val) { m_isNoOutputPriorPics = val; } void setFirstSliceInPicture (bool val) { m_bFirstSliceInPicture = val; } bool getFirstSliceInPicture () const { return m_bFirstSliceInPicture; } -#if JVET_P0125_EOS_LAYER_SPECIFIC bool getFirstSliceInSequence(int layerId) const { return m_firstSliceInSequence[layerId]; } void setFirstSliceInSequence(bool val, int layerId) { m_firstSliceInSequence[layerId] = val; } -#else - bool getFirstSliceInSequence () const { return m_bFirstSliceInSequence; } - void setFirstSliceInSequence (bool val) { m_bFirstSliceInSequence = val; } -#endif void setDecodedSEIMessageOutputStream(std::ostream *pOpStream) { m_pDecodedSEIOutputStream = pOpStream; } uint32_t getNumberOfChecksumErrorsDetected() const { return m_numberOfChecksumErrorsDetected; }