diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index 59d4167e8a7d3b17a1b3e8ad8a0cebdec804ef92..2052685ab3a793ccf4d4ed7bb98c1eb5e2e4eeb1 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -836,9 +836,7 @@ void EncApp::xInitLibCfg( int layerIdx ) m_cEncLib.setLog2MinCodingBlockSize ( m_log2MinCuSize ); m_cEncLib.setLog2MaxTbSize ( m_log2MaxTbSize ); m_cEncLib.setUseEncDbOpt(m_encDbOpt); -#if JVET_AF0122_ALF_LAMBDA_OPT m_cEncLib.setUseAlfLambdaOpt(m_encALFOpt); -#endif m_cEncLib.setUseFastLCTU ( m_useFastLCTU ); m_cEncLib.setFastInterSearchMode ( m_fastInterSearchMode ); m_cEncLib.setUseEarlyCU ( m_bUseEarlyCU ); diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 46988f21da63b51231d43cb641106fbbb73e733a..2fd8845528eb1e565e019189a650680c0c4cc3d8 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -1068,9 +1068,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("VirtualBoundariesPosX", cfg_virtualBoundariesPosX, cfg_virtualBoundariesPosX, "Locations of the vertical virtual boundaries in units of luma samples") ("VirtualBoundariesPosY", cfg_virtualBoundariesPosY, cfg_virtualBoundariesPosY, "Locations of the horizontal virtual boundaries in units of luma samples") ("EncDbOpt", m_encDbOpt, false, "Encoder optimization with deblocking filter") -#if JVET_AF0122_ALF_LAMBDA_OPT ("AlfLambdaOpt", m_encALFOpt, false, "Encoder optimization with adaptive loop filter") -#endif ("LMCSEnable", m_lmcsEnabled, false, "Enable LMCS (luma mapping with chroma scaling") ("LMCSSignalType", m_reshapeSignalType, 0u, "Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG") ("LMCSUpdateCtrl", m_updateCtrl, 0, "LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP") @@ -5609,9 +5607,7 @@ void EncAppCfg::xPrintParameter() msg(VERBOSE, "MRL:%d ", m_MRL); msg(VERBOSE, "MIP:%d ", m_MIP); msg(VERBOSE, "EncDbOpt:%d ", m_encDbOpt); -#if JVET_AF0122_ALF_LAMBDA_OPT msg(VERBOSE, "AlfLambdaOpt:%d ", m_encALFOpt); -#endif msg( VERBOSE, "\nFAST TOOL CFG: " ); msg( VERBOSE, "LCTUFast:%d ", m_useFastLCTU ); msg( VERBOSE, "FastMrg:%d ", m_useFastMrg ); diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index b155d5cdc7d18ea54b9d58e03515b0ab28a0bb5a..e640cabaf63daf315b7759fa8741452b98882b93 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -417,9 +417,7 @@ protected: uint32_t m_initialCW; int m_CSoffset; bool m_encDbOpt; -#if JVET_AF0122_ALF_LAMBDA_OPT bool m_encALFOpt; -#endif unsigned m_maxCuWidth; ///< max. CU width in pixel unsigned m_maxCuHeight; ///< max. CU height in pixel unsigned m_log2MinCuSize; ///< min. CU size log2 diff --git a/source/Lib/CommonLib/CommonDef.h b/source/Lib/CommonLib/CommonDef.h index d6632af38306e1c5778bf80e71c73d7ea8d9ad71..f45a3a48f578bdc460850a0bc9ee514ce737a789 100644 --- a/source/Lib/CommonLib/CommonDef.h +++ b/source/Lib/CommonLib/CommonDef.h @@ -203,10 +203,8 @@ static constexpr int CCALF_BITS_PER_COEFF_LEVEL = 3; static constexpr int ALF_FIXED_FILTER_NUM = 64; -#if JVET_AF0122_ALF_LAMBDA_OPT static constexpr double ALF_CHROMA_LAMBDA_SCALE_LOW = 0.4; static constexpr int ALF_HISAPSNUM_LIMITED = 4; -#endif static constexpr int MAX_BDOF_APPLICATION_REGION = 16; diff --git a/source/Lib/CommonLib/SequenceParameterSet.h b/source/Lib/CommonLib/SequenceParameterSet.h index 4a6a55e762e28c9b5afbb6b46f0a809cddf3b843..78057524e57497e8847a910aaf53fa9b3a8a3aeb 100644 --- a/source/Lib/CommonLib/SequenceParameterSet.h +++ b/source/Lib/CommonLib/SequenceParameterSet.h @@ -494,9 +494,7 @@ private: bool m_alfEnabledFlag; bool m_ccalfEnabledFlag; -#if JVET_AF0122_ALF_LAMBDA_OPT bool m_alfOptEnabledFlag; -#endif bool m_wrapAroundEnabledFlag; bool m_ibcFlag; bool m_useColorTrans; @@ -763,10 +761,8 @@ public: void setALFEnabledFlag(bool val) { m_alfEnabledFlag = val; } bool getALFEnabledFlag() const { return m_alfEnabledFlag; } -#if JVET_AF0122_ALF_LAMBDA_OPT void setALFOptEnabledFlag( bool b ) { m_alfOptEnabledFlag = b; } bool getALFOptEnabledFlag() const { return m_alfOptEnabledFlag; } -#endif void setCCALFEnabledFlag(bool val) { m_ccalfEnabledFlag = val; } bool getCCALFEnabledFlag() const { return m_ccalfEnabledFlag; } diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 2d695bb86954e76d8c4f3f807ce93017c1897136..b851fdb70bf1170f5eeda53946b29c359c589a86 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -57,7 +57,6 @@ //########### place macros to be removed in next cycle below this line ############### -#define JVET_AF0122_ALF_LAMBDA_OPT 1 // JVET-AF0122: Lagrange multiplier optimization for chroma ALF and CCALF #define JVET_AF0061_ADDITION_PO_ID 1 // JVET-AF0061, JVET-AF0174, JVET-AF0067, and JVET-AF0310: add po_id in the SEI processing order (SPO) SEI message diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp index 7ed3378a210c83e8f33ef1b9ab56cf2751ac15b7..2fbc1e11c7a9938ffc7176d047a10a4d9f51f9f9 100644 --- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp +++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp @@ -2667,9 +2667,7 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar double costMin = MAX_DOUBLE; reconstructCoeffAPSs(cs, true, false, true); -#if JVET_AF0122_ALF_LAMBDA_OPT m_lumaNewAps = 0; -#endif for (bool useNewFilter: { false, true }) { @@ -2929,12 +2927,10 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar if (alfParamNewFiltersBest.newFilterFlag[ChannelType::LUMA]) { -#if JVET_AF0122_ALF_LAMBDA_OPT if (cs.slice->getSliceType() != I_SLICE) { m_lumaNewAps = 1; } -#endif APS *newAPS = m_apsMap->getPS(newApsId); if (newAPS == nullptr) { @@ -2997,7 +2993,6 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar } } -#if JVET_AF0122_ALF_LAMBDA_OPT int chromaHisApsNums = 0; for (int curApsId = 0; curApsId < ALF_CTB_MAX_NUM_APS; curApsId++) { @@ -3020,7 +3015,6 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar } setLambdaFactor(cs, chromaHisApsNums, m_lumaNewAps); -#endif for (int curApsId = m_encCfg->getALFAPSIDShift(); curApsId < m_encCfg->getALFAPSIDShift() + m_encCfg->getMaxNumALFAPS(); curApsId++) { @@ -3031,20 +3025,12 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar continue; } APS *curAPS = m_apsMap->getPS(curApsId); -#if JVET_AF0122_ALF_LAMBDA_OPT double curCost = m_lambda[COMPONENT_Cb] * m_lambdaFactor * 3; -#else - double curCost = m_lambda[COMPONENT_Cb] * 3; -#endif if (!reuseExistingAPS) { m_alfParamTemp = alfParamNewFilters; -#if JVET_AF0122_ALF_LAMBDA_OPT curCost += m_lambda[COMPONENT_Cb] * m_lambdaFactor * m_bitsNewFilter[ChannelType::CHROMA]; -#else - curCost += m_lambda[COMPONENT_Cb] * m_bitsNewFilter[ChannelType::CHROMA]; -#endif } else if (curAPS && curAPS->getTemporalId() <= cs.slice->getTLayer() && curAPS->getLayerId() == cs.slice->getPic()->layerId @@ -3075,20 +3061,11 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar // ctb flag m_CABACEstimator->codeAlfCtuEnableFlag(cs, ctbIdx, compId, &m_alfParamTemp); double rateOn = FRAC_BITS_SCALE * m_CABACEstimator->getEstFracBits(); -#if JVET_AF0122_ALF_LAMBDA_OPT #if ENABLE_QPA const double ctuLambda = lambdaChromaWeight > 0.0 ? cs.picture->m_uEnerHpCtu[ctbIdx] / lambdaChromaWeight : m_lambda[compId] * m_lambdaFactor; #else const double ctuLambda = m_lambda[compId] * m_lambdaFactor; -#endif -#else -#if ENABLE_QPA - const double ctuLambda = - lambdaChromaWeight > 0.0 ? cs.picture->m_uEnerHpCtu[ctbIdx] / lambdaChromaWeight : m_lambda[compId]; -#else - const double ctuLambda = m_lambda[compId]; -#endif #endif double dist = MAX_DOUBLE; int numAlts = m_alfParamTemp.numAlternativesChroma; @@ -3139,11 +3116,7 @@ void EncAdaptiveLoopFilter::alfEncoderCtb(CodingStructure& cs, AlfParam& alfPar m_CABACEstimator->resetBits(); m_CABACEstimator->codeAlfCtuEnableFlag(cs, ctbIdx, compId, &m_alfParamTemp); // cost -#if JVET_AF0122_ALF_LAMBDA_OPT double costOff = distUnfilterCtu + m_lambda[compId] * m_lambdaFactor * FRAC_BITS_SCALE * m_CABACEstimator->getEstFracBits(); -#else - double costOff = distUnfilterCtu + m_lambda[compId] * FRAC_BITS_SCALE * m_CABACEstimator->getEstFracBits(); -#endif if (costOn < costOff) { m_CABACEstimator->getCtx() = AlfCtx(ctxTempBest); @@ -3793,12 +3766,8 @@ void EncAdaptiveLoopFilter::deriveCcAlfFilter( CodingStructure& cs, ComponentID unfilteredDistortion += (uint64_t) m_alfCovarianceCcAlf[compID - 1][0][ctbIdx].pixAcc; } -#if JVET_AF0122_ALF_LAMBDA_OPT setLambdaFactor(cs, (int) (getAvailableCcAlfApsIds(cs, compID).size()), m_lumaNewAps); double bestUnfilteredTotalCost = 1 * m_lambda[compID] * m_lambdaFactor + unfilteredDistortion; // 1 bit is for gating flag -#else - double bestUnfilteredTotalCost = 1 * m_lambda[compID] + unfilteredDistortion; // 1 bit is for gating flag -#endif bool ccAlfFilterIdxEnabled[MAX_NUM_CC_ALF_FILTERS]; AlfCoeff ccAlfFilterCoeff[MAX_NUM_CC_ALF_FILTERS][MAX_NUM_CC_ALF_CHROMA_COEFF]; @@ -3934,11 +3903,7 @@ void EncAdaptiveLoopFilter::deriveCcAlfFilter( CodingStructure& cs, ComponentID // terminating bit/byte alignment bits) } -#if JVET_AF0122_ALF_LAMBDA_OPT double curTotalCost = curTotalRate * m_lambda[compID] * m_lambdaFactor + curTotalDistortion; -#else - double curTotalCost = curTotalRate * m_lambda[compID] + curTotalDistortion; -#endif if (curTotalCost < prevTotalCost) { diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h index 27b5b0d684f9da764d9092ba3053d9372f46e224..e876f6b28d46a9acdeecdfb703e3d2c30b9b25c2 100644 --- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h +++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h @@ -354,11 +354,9 @@ public: const BitDepths& internalBitDepth); void destroy(); void setApsIdStart( int i) { m_apsIdStart = i; } -#if JVET_AF0122_ALF_LAMBDA_OPT bool m_lumaNewAps; double m_lambdaFactor; void setLambdaFactor( CodingStructure &cs, const int chromaHisApsNums, const bool m_lumaNewAps){ m_lambdaFactor = (cs.sps->getALFOptEnabledFlag() && chromaHisApsNums < ALF_HISAPSNUM_LIMITED && cs.slice->getSliceType() != I_SLICE && m_lumaNewAps == 1) ? ALF_CHROMA_LAMBDA_SCALE_LOW : 1.0 ;}; -#endif private: void firstPass(CodingStructure &cs, AlfParam &alfParam, const PelUnitBuf &orgUnitBuf, const PelUnitBuf &recExtBuf, diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index b16723383c1845627aa393a8f0de9c41e61993cd..19ca9263bb945f202cf052a59e010a12a5a62766 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -404,9 +404,7 @@ protected: ReshapeCW m_reshapeCW; int m_CSoffset; bool m_encDbOpt; -#if JVET_AF0122_ALF_LAMBDA_OPT bool m_encALFOpt; -#endif bool m_useFastLCTU; bool m_useFastMrg; int m_maxMergeRdCandNumTotal; @@ -1583,10 +1581,8 @@ public: int getLog2MinCodingBlockSize () const { return m_log2MinCUSize;} void setUseEncDbOpt ( bool n ) { m_encDbOpt = n; } bool getUseEncDbOpt () const { return m_encDbOpt; } -#if JVET_AF0122_ALF_LAMBDA_OPT void setUseAlfLambdaOpt (bool n) { m_encALFOpt = n; } bool getUseAlfLambdaOpt () const { return m_encALFOpt; } -#endif void setUseFastLCTU ( bool n ) { m_useFastLCTU = n; } bool getUseFastLCTU () const { return m_useFastLCTU; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index a3ff50517198bb7c57f4fda31e0733f06c33e96a..e128a5be343dda35450500510884b717d5554a2d 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -1584,9 +1584,7 @@ void EncLib::xInitSPS( SPS& sps ) } sps.setALFEnabledFlag( m_alf ); sps.setCCALFEnabledFlag( m_ccalf ); -#if JVET_AF0122_ALF_LAMBDA_OPT sps.setALFOptEnabledFlag(m_encALFOpt); -#endif sps.setFieldSeqFlag(m_fieldSeqFlag); sps.setVuiParametersPresentFlag(getVuiParametersPresentFlag());