diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index 7e6d305a1236dd48a4fd82550c19fd840b018c9b..18fd83b6fcbbccbd5af29e38cd328436f0fda928 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -1873,6 +1873,9 @@ SPS::SPS() , m_bPCMFilterDisableFlag (false) , m_sbtmvpEnabledFlag (false) , m_bdofEnabledFlag (false) +#if JVET_M0255_FRACMMVD_SWITCH +, m_disFracMmvdEnabledFlag ( false ) +#endif , m_uiBitsForPOC ( 8) , m_numLongTermRefPicSPS ( 0) , m_uiMaxTrSize ( 32) diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index 3298cd8406fc3666eb195c941dab7c1ff0c87b0a..673ba9937b3f22db0f58c949d02f71e14c21a99f 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -919,10 +919,6 @@ public: bool getUseTriangle () const { return m_Triangle; } void setIBCMode (unsigned IBCMode) { m_IBCMode = IBCMode; } unsigned getIBCMode () const { return m_IBCMode; } -#if JVET_M0255_FRACMMVD_SWITCH - void setAllowDisFracMMVD ( bool b ) { allowDisFracMMVD = b; } - bool getAllowDisFracMMVD () const { return allowDisFracMMVD; } -#endif }; @@ -997,7 +993,9 @@ private: bool m_sbtmvpEnabledFlag; bool m_bdofEnabledFlag; - +#if JVET_M0255_FRACMMVD_SWITCH + bool m_disFracMmvdEnabledFlag; +#endif uint32_t m_uiBitsForPOC; uint32_t m_numLongTermRefPicSPS; uint32_t m_ltRefPicPocLsbSps[MAX_NUM_LONG_TERM_REF_PICS]; @@ -1200,6 +1198,11 @@ public: void setBDOFEnabledFlag(bool b) { m_bdofEnabledFlag = b; } bool getBDOFEnabledFlag() const { return m_bdofEnabledFlag; } +#if JVET_M0255_FRACMMVD_SWITCH + bool getDisFracMmvdEnabledFlag() const { return m_disFracMmvdEnabledFlag; } + void setDisFracMmvdEnabledFlag( bool b ) { m_disFracMmvdEnabledFlag = b; } +#endif + uint32_t getMaxTLayers() const { return m_uiMaxTLayers; } void setMaxTLayers( uint32_t uiMaxTLayers ) { CHECK( uiMaxTLayers > MAX_TLAYER, "Invalid number T-layers" ); m_uiMaxTLayers = uiMaxTLayers; } diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 53c2b7cc38408311b5476901fb10083363dd936c..94b555869904b70a7f95e1705f277fa1c903028a 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -818,9 +818,6 @@ void HLSyntaxReader::parseSPSNext( SPSNext& spsNext, const bool usePCM ) } READ_FLAG( symbol, "mtt_enabled_flag" ); spsNext.setMTTMode ( symbol ); READ_FLAG( symbol, "mhintra_flag" ); spsNext.setUseMHIntra ( symbol != 0 ); -#if JVET_M0255_FRACMMVD_SWITCH - READ_FLAG( symbol, "sps_fracmmvd_disabled_flag" ); spsNext.setAllowDisFracMMVD ( symbol != 0 ); -#endif READ_FLAG( symbol, "triangle_flag" ); spsNext.setUseTriangle ( symbol != 0 ); #if ENABLE_WPP_PARALLELISM READ_FLAG( symbol, "next_dqp_enabled_flag" ); spsNext.setUseNextDQP ( symbol != 0 ); @@ -1050,7 +1047,10 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) } READ_FLAG( uiCode, "sps_bdof_enable_flag" ); pcSPS->setBDOFEnabledFlag ( uiCode != 0 ); - +#if JVET_M0255_FRACMMVD_SWITCH + READ_FLAG( uiCode, "sps_fracmmvd_disabled_flag" ); pcSPS->setDisFracMmvdEnabledFlag ( uiCode != 0 ); +#endif + #if HEVC_USE_SCALING_LISTS READ_FLAG( uiCode, "scaling_list_enabled_flag" ); pcSPS->setScalingListFlag ( uiCode ); if(pcSPS->getScalingListFlag()) @@ -1771,7 +1771,7 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, ParameterSetManager *para pcSlice->setMaxNumAffineMergeCand( AFFINE_MRG_MAX_NUM_CANDS - uiCode ); } #if JVET_M0255_FRACMMVD_SWITCH - if ( sps->getSpsNext().getAllowDisFracMMVD() ) + if ( sps->getDisFracMmvdEnabledFlag() ) { READ_FLAG( uiCode, "tile_group_fracmmvd_disabled_flag" ); pcSlice->setDisFracMMVD( uiCode ? true : false ); diff --git a/source/Lib/EncoderLib/EncCu.h b/source/Lib/EncoderLib/EncCu.h index 0d4d0d2b56711742ed500b76d8237f98251ec20d..f6abe2736cd9727c69596fc5d9c232707d3622fe 100644 --- a/source/Lib/EncoderLib/EncCu.h +++ b/source/Lib/EncoderLib/EncCu.h @@ -160,7 +160,7 @@ public: void setMergeBestSATDCost(double cost) { m_mergeBestSATDCost = cost; } double getMergeBestSATDCost() { return m_mergeBestSATDCost; } #if JVET_M0255_FRACMMVD_SWITCH - IbcHashMap& getCprHashMap() { return m_ibcHashMap; } + IbcHashMap& getIbcHashMap() { return m_ibcHashMap; } EncCfg* getEncCfg() const { return m_pcEncCfg; } #endif diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index bbf61d5839316b212182d9662dc98a9ab8dc3b78..e3fa09d81e87633dda9bc6cd79bc73259dda47cf 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -892,7 +892,7 @@ void EncLib::xInitSPS(SPS &sps) sps.getSpsNext().setUseMHIntra ( m_MHIntra ); sps.getSpsNext().setUseTriangle ( m_Triangle ); #if JVET_M0255_FRACMMVD_SWITCH - sps.getSpsNext().setAllowDisFracMMVD ( m_allowDisFracMMVD ); + sps.setDisFracMmvdEnabledFlag ( m_allowDisFracMMVD ); #endif sps.getSpsNext().setIBCMode ( m_IBCMode ); diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index 44bca844fc0e1d485274e811ad2c37a8cbee5007..35f64d3868e15c9e14c68fa5f0efeb3f0cab7541 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -1401,7 +1401,7 @@ void EncSlice::checkDisFracMmvd( Picture* pcPic, uint32_t startCtuTsAddr, uint32 uint32_t totalCtu = 0; uint32_t hashRatio = 0; - if ( !pcSlice->getSPS()->getSpsNext().getAllowDisFracMMVD() ) + if ( !pcSlice->getSPS()->getDisFracMmvdEnabledFlag() ) { return; } @@ -1419,7 +1419,7 @@ void EncSlice::checkDisFracMmvd( Picture* pcPic, uint32_t startCtuTsAddr, uint32 const Position pos ( ctuXPosInCtus * pcv.maxCUWidth, ctuYPosInCtus * pcv.maxCUHeight ); const UnitArea ctuArea( cs.area.chromaFormat, Area( pos.x, pos.y, pcv.maxCUWidth, pcv.maxCUHeight ) ); - hashRatio += m_pcCuEncoder->getCprHashMap().getHashHitRatio( ctuArea.Y() ); + hashRatio += m_pcCuEncoder->getIbcHashMap().getHashHitRatio( ctuArea.Y() ); totalCtu++; } @@ -1480,10 +1480,10 @@ void EncSlice::encodeCtus( Picture* pcPic, const bool bCompressEntireSlice, cons } #endif #if JVET_M0255_FRACMMVD_SWITCH - if ( pcSlice->getSPS()->getSpsNext().getAllowDisFracMMVD() || + if ( pcSlice->getSPS()->getDisFracMmvdEnabledFlag() || ( pcSlice->getSPS()->getSpsNext().getIBCMode() && m_pcCuEncoder->getEncCfg()->getIBCHashSearch() ) ) { - m_pcCuEncoder->getCprHashMap().rebuildPicHashMap( cs.picture->getOrigBuf() ); + m_pcCuEncoder->getIbcHashMap().rebuildPicHashMap( cs.picture->getOrigBuf() ); } checkDisFracMmvd( pcPic, startCtuTsAddr, boundingCtuTsAddr ); #endif diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 531a6693536ba5640f5b423ed553d4e409067e44..5d4ea024ffd108d353f9f38b3971d13b22eff878 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -559,9 +559,6 @@ void HLSWriter::codeSPSNext( const SPSNext& spsNext, const bool usePCM ) WRITE_FLAG( spsNext.getMTTEnabled() ? 1 : 0, "mtt_enabled_flag" ); WRITE_FLAG( spsNext.getUseMHIntra() ? 1 : 0, "mhintra_flag" ); -#if JVET_M0255_FRACMMVD_SWITCH - WRITE_FLAG( spsNext.getAllowDisFracMMVD() ? 1 : 0, "sps_fracmmvd_disabled_flag" ); -#endif WRITE_FLAG( spsNext.getUseTriangle() ? 1: 0, "triangle_flag" ); #if ENABLE_WPP_PARALLELISM WRITE_FLAG( spsNext.getUseNextDQP(), "next_dqp_enabled_flag" ); @@ -724,6 +721,9 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) } WRITE_FLAG( pcSPS->getBDOFEnabledFlag() ? 1 : 0, "sps_bdof_enabled_flag" ); +#if JVET_M0255_FRACMMVD_SWITCH + WRITE_FLAG( pcSPS->getDisFracMmvdEnabledFlag() ? 1 : 0, "sps_fracmmvd_disabled_flag" ); +#endif #if HEVC_USE_SCALING_LISTS WRITE_FLAG( pcSPS->getScalingListFlag() ? 1 : 0, "scaling_list_enabled_flag" ); @@ -1289,7 +1289,7 @@ void HLSWriter::codeSliceHeader ( Slice* pcSlice ) WRITE_UVLC( AFFINE_MRG_MAX_NUM_CANDS - pcSlice->getMaxNumAffineMergeCand(), "five_minus_max_num_affine_merge_cand" ); } #if JVET_M0255_FRACMMVD_SWITCH - if ( pcSlice->getSPS()->getSpsNext().getAllowDisFracMMVD() ) + if ( pcSlice->getSPS()->getDisFracMmvdEnabledFlag() ) { WRITE_FLAG( pcSlice->getDisFracMMVD(), "tile_group_fracmmvd_disabled_flag" ); }