diff --git a/source/App/DecoderApp/DecApp.cpp b/source/App/DecoderApp/DecApp.cpp
index b25aa8cf0c0dc9e272fd07aa62a3cb97c0e1da18..b4c4d2c830193e5ad7d95bce1b370df8d3b0ffc8 100644
--- a/source/App/DecoderApp/DecApp.cpp
+++ b/source/App/DecoderApp/DecApp.cpp
@@ -181,11 +181,7 @@ uint32_t DecApp::decode()
               bPicSkipped = false;
             }
           }
-#if JVET_P0288_PIC_OUTPUT
           m_cDecLib.decode(nalu, m_iSkipFrame, m_iPOCLastDisplay, m_targetOlsIdx);
-#else
-          m_cDecLib.decode(nalu, m_iSkipFrame, m_iPOCLastDisplay);
-#endif
           if (nalu.m_nalUnitType == NAL_UNIT_VPS)
           {
             m_cDecLib.deriveTargetOutputLayerSet( m_targetOlsIdx );
diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h
index 68e208d2c5b9a83022552ed0a8783c41d9294025..9facbabd06315263669cd501803ba699896682cc 100644
--- a/source/Lib/CommonLib/Slice.h
+++ b/source/Lib/CommonLib/Slice.h
@@ -1003,10 +1003,8 @@ public:
 
   GeneralHrdParams*          getGeneralHrdParameters() { return &m_generalHrdParams; }
   const GeneralHrdParams*    getGeneralHrdParameters() const { return &m_generalHrdParams; }
-#if JVET_P0288_PIC_OUTPUT
   int               getTargetOlsIdx() { return m_targetOlsIdx; }
   void              setTargetOlsIdx(uint32_t t) { m_targetOlsIdx = t; }
-#endif
 
   int               getMaxDecPicBuffering( int temporalId ) const        { return m_dpbParameters[m_olsDpbParamsIdx[m_targetOlsIdx]].m_maxDecPicBuffering[temporalId]; }
   int               getNumReorderPics( int temporalId ) const            { return m_dpbParameters[m_olsDpbParamsIdx[m_targetOlsIdx]].m_numReorderPics[temporalId]; }
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index fd171a057057fd0bdde12c80be3f14cbc47b3fca..83360a46d1eeb61d72ff1d9453d78abd22fc9ae1 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -121,7 +121,6 @@
 
 
 
-#define JVET_P0288_PIC_OUTPUT                             1 // JVET-P0288: Set the value of PictureOutputFlag
 
 #define JVET_Q0695_CHROMA_TS_JCCR                         1 // JVET-Q0695: Enabling the RD checking of chroma transform-skip mode for JCCR at encoder
 #define JVET_Q0500_CCLM_REF_PADDING                       1 // JVET-Q0500: Reference samples padding for CCLM
diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp
index 4494eb0a7dd8834c09280087e76b19643143c244..0610dc8b642f88712724c697ed3ed824099bda58 100644
--- a/source/Lib/DecoderLib/DecLib.cpp
+++ b/source/Lib/DecoderLib/DecLib.cpp
@@ -131,11 +131,7 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri
         read( nalu );
         int iSkipFrame = 0;
 
-#if JVET_P0288_PIC_OUTPUT
         bNewPicture = pcDecLib->decode(nalu, iSkipFrame, iPOCLastDisplay, 0);
-#else
-        bNewPicture = pcDecLib->decode(nalu, iSkipFrame, iPOCLastDisplay);
-#endif
         if( bNewPicture )
         {
           bitstreamFile->clear();
@@ -1788,7 +1784,6 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl
     }
   }
 
-#if JVET_P0288_PIC_OUTPUT
   {
     PPS *pps = m_parameterSetManager.getPPS(m_picHeader.getPPSId());
     CHECK(pps == 0, "No PPS present");
@@ -1804,7 +1799,6 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl
       }
     }
   }
-#endif
 
   //Reset POC MSB when CRA or GDR has NoOutputBeforeRecoveryFlag equal to 1
   if( !pps->getMixedNaluTypesInPicFlag() && ( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_GDR ) && m_lastNoOutputBeforeRecoveryFlag )
@@ -2264,11 +2258,7 @@ void DecLib::xDecodeAPS(InputNALUnit& nalu)
   // thus, storing it must be last action.
   m_parameterSetManager.storeAPS(aps, nalu.getBitstream().getFifo());
 }
-#if JVET_P0288_PIC_OUTPUT
 bool DecLib::decode(InputNALUnit& nalu, int& iSkipFrame, int& iPOCLastDisplay, int iTargetOlsIdx)
-#else
-bool DecLib::decode(InputNALUnit& nalu, int& iSkipFrame, int& iPOCLastDisplay)
-#endif
 {
   bool ret;
   // ignore all NAL units of layers > 0
@@ -2279,9 +2269,7 @@ bool DecLib::decode(InputNALUnit& nalu, int& iSkipFrame, int& iPOCLastDisplay)
   {
     case NAL_UNIT_VPS:
       xDecodeVPS( nalu );
-#if JVET_P0288_PIC_OUTPUT
       m_vps->m_targetOlsIdx = iTargetOlsIdx;
-#endif
       return false;
     case NAL_UNIT_DCI:
       xDecodeDCI( nalu );
diff --git a/source/Lib/DecoderLib/DecLib.h b/source/Lib/DecoderLib/DecLib.h
index 7a9248def23142f92ea3b38e1c3e584d0117fd06..2c4af72f0ae709231107b46ec9fb4a42b834b2e6 100644
--- a/source/Lib/DecoderLib/DecLib.h
+++ b/source/Lib/DecoderLib/DecLib.h
@@ -184,11 +184,7 @@ public:
     const std::string& cacheCfgFileName
 #endif
   );
-#if JVET_P0288_PIC_OUTPUT
   bool  decode(InputNALUnit& nalu, int& iSkipFrame, int& iPOCLastDisplay, int iTargetOlsIdx);
-#else
-  bool  decode(InputNALUnit& nalu, int& iSkipFrame, int& iPOCLastDisplay);
-#endif
   void  deletePicBuffer();
 
   void  executeLoopFilters();