diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index e0a9f3b13ca7c51cacd094e403110fe18aa0e2bd..c3f1ff4ec65bb3b2b473820af64b6f79044cba2a 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -173,12 +173,6 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri pcEncPic->copySAO( *pic, 0 ); } - pcDecLib->executeLoopFilters(); - if ( pic->cs->sps->getUseSAO() ) - { - pcEncPic->copySAO( *pic, 1 ); - } - if( pic->cs->sps->getUseALF() ) { for( int compIdx = 0; compIdx < MAX_NUM_COMPONENT; compIdx++ ) @@ -192,6 +186,12 @@ bool tryDecodePicture( Picture* pcEncPic, const int expectedPoc, const std::stri } } + pcDecLib->executeLoopFilters(); + if ( pic->cs->sps->getUseSAO() ) + { + pcEncPic->copySAO( *pic, 1 ); + } + pcEncPic->cs->copyStructure( *pic->cs, CH_L, true, true ); if( CS::isDualITree( *pcEncPic->cs ) ) @@ -1088,7 +1088,7 @@ bool DecLib::xDecodeSlice(InputNALUnit &nalu, int &iSkipFrame, int iPOCLastDispl pcSlice->checkCRA(pcSlice->getRPS(), m_pocCRA, m_associatedIRAPType, m_cListPic ); // Set reference list pcSlice->setRefPicList( m_cListPic, true, true ); - + if (!pcSlice->isIntra()) { bool bLowDelay = true; diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index 1ebdd446361e692cb7581557e345117aa6e9e862..aa936c70394412be9fd8660a45aa3395fafb2168 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -1919,6 +1919,15 @@ void EncSlice::encodeSlice ( Picture* pcPic, OutputBitstream* pcSubstreams, ui } } #endif + +#if JVET_L0646_GBI + bool updateGbiCodingOrder = cs.slice->getSliceType() == B_SLICE && ctuTsAddr == startCtuTsAddr; + if( updateGbiCodingOrder ) + { + resetGbiCodingOrder(false, cs); + } +#endif + m_CABACWriter->coding_tree_unit( cs, ctuArea, pcPic->m_prevQP, ctuRsAddr ); #if HEVC_TILES_WPP