diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index b5c80aabc2f2a4d56157828e778e94c0a572bc53..2c5ff290992c997a4933f3f582d8dc68d9730078 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -253,7 +253,7 @@ void EncApp::xInitLibCfg() #endif #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO m_cEncLib.setUseEncNnlfOpt (m_encNnlfOpt); m_cEncLib.setRdoCnnlfInterLumaModelNameNNFilter0 (m_rdoCnnlfInterLumaModelNameNNFilter0); m_cEncLib.setRdoCnnlfIntraLumaModelNameNNFilter0 (m_rdoCnnlfIntraLumaModelNameNNFilter0); diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 473cf7dd4120fb459e9f0de30f783ad8a840c253..694e1c9633a61eec1ecd093fc7adc6979cdb97e7 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -1457,7 +1457,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) #endif #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO ( "EncNnlfOpt", m_encNnlfOpt, false, "Encoder optimization with NN-based loop filter") #if NN_FIXED_POINT_IMPLEMENTATION ( "RdoCnnlfInterLumaModelNNFilter0", m_rdoCnnlfInterLumaModelNameNNFilter0, default_model_path + string("RDO_B_y_model_int16.sadl"), "Cnnlf inter luma model name") @@ -2473,7 +2473,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) } #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO m_encNnlfOpt = (m_nnlfSet0 || m_nnlfSet1) ? m_encNnlfOpt : false; #endif @@ -4226,7 +4226,7 @@ void EncAppCfg::xPrintParameter() #if NN_FILTERING_SET_1 msg( VERBOSE, "NNLFSET1:%d ", (m_nnlfSet1)?(1):(0)); #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO msg( VERBOSE, "EncNnlfOpt:%d ", m_encNnlfOpt ? 1 : 0); #endif #if JVET_AC0196_NNSR diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index aef6a5a51f9af03361dcb49f5436c8b76ca1c68d..a4c6a1c58d39107166d8f2c47323fcc2381695d7 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -99,7 +99,7 @@ protected: #endif #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO std::string m_rdoCnnlfInterLumaModelNameNNFilter0; ///< inter luma nnlf set0 model std::string m_rdoCnnlfIntraLumaModelNameNNFilter0; ///< intra luma nnlf set0 model std::string m_rdoCnnlfInterLumaModelNameNNFilter1; ///< inter luma nnlf set1 model @@ -777,7 +777,7 @@ protected: #endif #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO bool m_encNnlfOpt; #endif diff --git a/source/Lib/CommonLib/CodingStructure.cpp b/source/Lib/CommonLib/CodingStructure.cpp index eb8f6f4f5ca5a47a77cb23ba914c276887bbd6dc..92b4741aa80c2d9d8ca18bbe22f1697d24b18413 100644 --- a/source/Lib/CommonLib/CodingStructure.cpp +++ b/source/Lib/CommonLib/CodingStructure.cpp @@ -1187,7 +1187,7 @@ void CodingStructure::initSubStructure( CodingStructure& subStruct, const Channe subStruct.useDbCost = false; subStruct.costDbOffset = 0; -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO subStruct.useNnCost = false; subStruct.costNnOffset = 0; #endif @@ -1488,7 +1488,7 @@ void CodingStructure::initStructData( const int &QP, const bool &skipMotBuf ) lumaCost = MAX_DOUBLE; costDbOffset = 0; useDbCost = false; -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO costNnOffset = 0; useNnCost = false; #endif diff --git a/source/Lib/CommonLib/CodingStructure.h b/source/Lib/CommonLib/CodingStructure.h index 413323aed2908b3493829a6ea74f9ece1ceca1be..ca6ab60882f7dc8245544fabf356f24e95ed7447 100644 --- a/source/Lib/CommonLib/CodingStructure.h +++ b/source/Lib/CommonLib/CodingStructure.h @@ -184,7 +184,7 @@ public: double cost; bool useDbCost; double costDbOffset; -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO bool useNnCost; double costNnOffset; #endif diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index f3802920e2f48d11d0c34d9a97d79feb1cde3502..c3cae8ce23842fce75f7c8085ee72eb1f0e28eb9 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -106,8 +106,6 @@ using TypeSadl = float; #define JVET_AB0083_QPADJ 1 // JVET-AB0083: EE1-1.8: More refinements on NN based in-loop filter with a single model (Test 1) #endif -#define JVET_AC0328_NNLF_RDO 1 // JVET-AC0328: EE1-1.2: encoder-only optimization for NN based in-loop filter with a single model - // nn filter set 1 #define NN_FILTERING_SET_1 1 // options set 1 @@ -122,6 +120,8 @@ using TypeSadl = float; #define JVET_AC0177_FLIP_INPUT 1 // JVET-AC0177: flip input and output of NN filter model #endif +#define JVET_AB0068_AC0328_NNLF_RDO 1 // JVET-AB0068: EE1-1.6: RDO considering deep in-loop filtering (nnlf set 0), JVET-AC0328: EE1-1.2: encoder-only optimization for NN based in-loop filter with a single model (nnlf set 1) + #define JVET_AC0196_NNSR 1 // JVET-AC0196: EE1-2.2: GOP Level Adaptive Resampling with CNN-based Super Resolution #if JVET_AC0196_NNSR #define ADAPTIVE_RPR 1 // JVET-AC0196: GOP Level Adaptive Resampling diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index 12b010aab9167afa95cfe9db54e639fe78467e15..9136c0a804cfe5da4c92c647c30bc8aef18a32ef 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -168,7 +168,7 @@ protected: #endif #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO bool m_encNnlfOpt; std::string m_rdoCnnlfInterLumaModelNameNNFilter0; ///< inter luma nnlf set0 model std::string m_rdoCnnlfIntraLumaModelNameNNFilter0; ///< intra luma nnlf set0 model @@ -897,7 +897,7 @@ public: #endif #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO std::string getRdoCnnlfInterLumaModelNameNNFilter0() { return m_rdoCnnlfInterLumaModelNameNNFilter0; } std::string getRdoCnnlfIntraLumaModelNameNNFilter0() { return m_rdoCnnlfIntraLumaModelNameNNFilter0; } void setRdoCnnlfInterLumaModelNameNNFilter0(std::string s) { m_rdoCnnlfInterLumaModelNameNNFilter0 = s; } @@ -2159,7 +2159,7 @@ public: #if NN_FILTERING_SET_0 void setUseNnlfSet0(bool b) { m_nnlfSet0 = b; } -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO bool getUseNnlfSet0() const { return m_nnlfSet0; } #endif #endif diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index 4510bb28ed91bc5cf9c2587dc470624875523785..80e3ee3a402a1bb26f8286cbdccaa8cef0ae5c94 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -235,7 +235,7 @@ void EncCu::init( EncLib* pcEncLib, const SPS& sps PARL_PARAM( const int tId ) ) m_pcEncLib = pcEncLib; m_dataId = tId; #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO m_pcCNNLFEncoder = pcEncLib->getGOPEncoder()->getEncCnnFilter(); #endif m_pcLoopFilter = pcEncLib->getLoopFilter(); @@ -1335,7 +1335,7 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, tempCS->cost = MAX_DOUBLE; tempCS->costDbOffset = 0; tempCS->useDbCost = m_pcEncCfg->getUseEncDbOpt(); -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO tempCS->costNnOffset = 0; tempCS->useNnCost = false; #endif @@ -1381,7 +1381,7 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, tempCS->cost = MAX_DOUBLE; tempCS->costDbOffset = 0; tempCS->useDbCost = m_pcEncCfg->getUseEncDbOpt(); -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO tempCS->costNnOffset = 0; tempCS->useNnCost = false; #endif @@ -1574,7 +1574,7 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, } } -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO UnitArea unitArea = clipArea(bestCS->area, *bestCS->picture); bool useEncNnOpt = false; @@ -1672,7 +1672,7 @@ void EncCu::xCheckModeSplit(CodingStructure *&tempCS, CodingStructure *&bestCS, tempCS->prevQP[partitioner.chType] = oldPrevQp; } -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO void EncCu::xCheckCnnlf(CodingStructure& cs, UnitArea unitArea) { if (cs.useNnCost) @@ -4517,7 +4517,7 @@ Distortion EncCu::getDistortionDb( CodingStructure &cs, CPelBuf org, CPelBuf rec Distortion dist = 0; #if WCG_EXT m_pcRdCost->setChromaFormat(cs.sps->getChromaFormatIdc()); -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO CPelBuf orgLuma = cs.picture->getOrigBuf(clipArea(cs.area.blocks[COMPONENT_Y], cs.picture->blocks[COMPONENT_Y])); #else CPelBuf orgLuma = cs.picture->getOrigBuf( cs.area.blocks[COMPONENT_Y] ); @@ -4856,7 +4856,7 @@ void EncCu::xEncodeInterResidual( CodingStructure *&tempCS if( bestCost == bestCS->cost ) //The first EMT pass didn't become the bestCS, so we clear the TUs generated { tempCS->clearTUs(); -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO cu = tempCS->getCU(partitioner.chType); #endif } @@ -4882,7 +4882,7 @@ void EncCu::xEncodeInterResidual( CodingStructure *&tempCS tempCS->cost = MAX_DOUBLE; cu->skip = false; -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO tempCS->useNnCost = false; tempCS->costNnOffset = 0; #endif diff --git a/source/Lib/EncoderLib/EncCu.h b/source/Lib/EncoderLib/EncCu.h index 78444f2c97674c5cf8640a75245d2fb1c477e48e..8545fc7c8041d15396dc95a0c3ad80c8f607307c 100644 --- a/source/Lib/EncoderLib/EncCu.h +++ b/source/Lib/EncoderLib/EncCu.h @@ -55,7 +55,7 @@ #include "InterSearch.h" #include "RateCtrl.h" #include "EncModeCtrl.h" -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO #include "EncNNFilter.h" #endif //! \ingroup EncoderLib @@ -184,7 +184,7 @@ private: TrQuant* m_pcTrQuant; RdCost* m_pcRdCost; EncSlice* m_pcSliceEncoder; -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO EncNNFilter* m_pcCNNLFEncoder; #endif LoopFilter* m_pcLoopFilter; @@ -263,7 +263,7 @@ protected: xCheckBestMode ( CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &pm, const EncTestMode& encTestmode ); void xCheckModeSplit ( CodingStructure *&tempCS, CodingStructure *&bestCS, Partitioner &pm, const EncTestMode& encTestMode, const ModeType modeTypeParent, bool &skipInterPass ); -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO void xCheckCnnlf ( CodingStructure& cs, UnitArea unitArea ); #endif diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp index bcc6e8eadda5701c0a795ec973969c34a2a5bac4..fae656f181f8f8dcff8366a44b3b74f0ce0614a4 100644 --- a/source/Lib/EncoderLib/EncGOP.cpp +++ b/source/Lib/EncoderLib/EncGOP.cpp @@ -202,7 +202,7 @@ void EncGOP::destroy() delete m_picOrig; m_picOrig = NULL; } -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO m_cCNNLFEncoder.destroyEnc(); #endif #if NN_FILTERING_SET_1 @@ -222,7 +222,7 @@ void EncGOP::init ( EncLib* pcEncLib ) m_pcSAO = pcEncLib->getSAO(); m_pcALF = pcEncLib->getALF(); -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO m_cCNNLFEncoder.createEnc(m_pcCfg->getSourceWidth(), m_pcCfg->getSourceHeight(), m_pcCfg->getMaxCUWidth(), m_pcCfg->getMaxCUHeight(), m_pcCfg->getChromaFormatIdc(), m_pcCfg->getNnlfSet1MaxNumParams()); #endif @@ -2853,7 +2853,7 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic, { m_pcSliceEncoder->setJointCbCrModes(*pcPic->cs, Position(0, 0), pcPic->cs->area.lumaSize()); } -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO if (m_pcEncLib->getUseNnlfSet0()) m_cCNNLFEncoder.initEnc(m_pcEncLib->getUseEncNnlfOpt() ? 1 : 0, m_pcEncLib->getUseNnlfSet0(), m_pcEncLib->getRdoCnnlfInterLumaModelNameNNFilter0(), m_pcEncLib->getRdoCnnlfIntraLumaModelNameNNFilter0()); else diff --git a/source/Lib/EncoderLib/EncGOP.h b/source/Lib/EncoderLib/EncGOP.h index 709b452e49f378dca3d88f8b55834d193957157d..d8519fff1d1607c640c14b949db1f13b42e47805 100644 --- a/source/Lib/EncoderLib/EncGOP.h +++ b/source/Lib/EncoderLib/EncGOP.h @@ -73,7 +73,7 @@ #include <chrono> #endif -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO #include "EncNNFilter.h" #endif @@ -177,7 +177,7 @@ private: EncSampleAdaptiveOffset* m_pcSAO; EncAdaptiveLoopFilter* m_pcALF; -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO EncNNFilter m_cCNNLFEncoder; #endif #if NN_FILTERING_SET_0 @@ -271,7 +271,7 @@ public: void setLastLTRefPoc(int iLastLTRefPoc) { m_lastLTRefPoc = iLastLTRefPoc; } int getLastLTRefPoc() const { return m_lastLTRefPoc; } -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO EncNNFilter* getEncCnnFilter() { return &m_cCNNLFEncoder; } #endif diff --git a/source/Lib/EncoderLib/EncModeCtrl.cpp b/source/Lib/EncoderLib/EncModeCtrl.cpp index 6db41edb1339b5a79668176ab1ecc9760222a4bb..9670df6f984ca855ac3bcb6f02de6af9b6105064 100644 --- a/source/Lib/EncoderLib/EncModeCtrl.cpp +++ b/source/Lib/EncoderLib/EncModeCtrl.cpp @@ -2097,7 +2097,7 @@ bool EncModeCtrlMTnoRQT::useModeResult( const EncTestMode& encTestmode, CodingSt } // for now just a simple decision based on RD-cost or choose tempCS if bestCS is not yet coded -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO bool useTemp = false; if (tempCS->features[ENC_FT_RD_COST] != MAX_DOUBLE) { diff --git a/source/Lib/EncoderLib/EncNNFilter.cpp b/source/Lib/EncoderLib/EncNNFilter.cpp index ca767f5f42c869414f23e07ab6a60464545f1385..29a02209e0d760aef83a46789418e55fd2b2dec4 100644 --- a/source/Lib/EncoderLib/EncNNFilter.cpp +++ b/source/Lib/EncoderLib/EncNNFilter.cpp @@ -38,7 +38,7 @@ #include "EncNNFilter.h" #include <sadl/model.h> -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO void EncNNFilter::createEnc(const int picWidth, const int picHeight, const int maxCuWidth, const int maxCuHeight, const ChromaFormat format, const int nnlfSet1NumParams) { if (m_tempBuf.getOrigin(0) == NULL) diff --git a/source/Lib/EncoderLib/EncNNFilter.h b/source/Lib/EncoderLib/EncNNFilter.h index 8bd7a110fd2fe5da9f283cca6aab0488a4809f48..1c17bbefcef27d5cb9b4fa2029f618ae2c9ca6fb 100644 --- a/source/Lib/EncoderLib/EncNNFilter.h +++ b/source/Lib/EncoderLib/EncNNFilter.h @@ -44,7 +44,7 @@ #include "CommonLib/CommonDef.h" -#if JVET_AC0328_NNLF_RDO +#if JVET_AB0068_AC0328_NNLF_RDO #include "Picture.h" #include <fstream>