From bf1848314a41293ba5021fa665d73b91dbde02fb Mon Sep 17 00:00:00 2001 From: Karsten Suehring <karsten.suehring@hhi.fraunhofer.de> Date: Fri, 8 Feb 2019 23:55:39 +0100 Subject: [PATCH] SPS cleanup - removal of deprecated SPSNext parameters --- cfg/encoder_intra_vtm.cfg | 2 -- cfg/encoder_lowdelay_P_vtm.cfg | 2 -- cfg/encoder_lowdelay_vtm.cfg | 2 -- cfg/encoder_randomaccess_vtm.cfg | 2 -- source/App/EncoderApp/EncApp.cpp | 6 ---- source/App/EncoderApp/EncAppCfg.cpp | 34 ++------------------ source/App/EncoderApp/EncAppCfg.h | 6 ---- source/Lib/CommonLib/ContextModelling.cpp | 6 +--- source/Lib/CommonLib/Slice.cpp | 7 ---- source/Lib/CommonLib/Slice.h | 23 ------------- source/Lib/CommonLib/UnitPartitioner.cpp | 15 +++------ source/Lib/CommonLib/UnitTools.cpp | 21 +----------- source/Lib/DecoderLib/VLCReader.cpp | 15 +-------- source/Lib/EncoderLib/EncCfg.h | 19 ----------- source/Lib/EncoderLib/EncLib.cpp | 6 ---- source/Lib/EncoderLib/EncModeCtrl.cpp | 39 +++++++++++------------ source/Lib/EncoderLib/VLCWriter.cpp | 20 ++---------- 17 files changed, 31 insertions(+), 194 deletions(-) diff --git a/cfg/encoder_intra_vtm.cfg b/cfg/encoder_intra_vtm.cfg index 7dcb733a..e99cb844 100644 --- a/cfg/encoder_intra_vtm.cfg +++ b/cfg/encoder_intra_vtm.cfg @@ -87,7 +87,6 @@ TemporalSubsampleRatio : 8 #============ NEXT ==================== # General -LargeCTU : 1 # Large CTU CTUSize : 128 LCTUFast : 1 QuadtreeTULog2MaxSize : 6 @@ -99,7 +98,6 @@ MinQTNonISlice : 8 MaxBTDepth : 3 MaxBTDepthISliceL : 3 MaxBTDepthISliceC : 3 -MTT : 1 MTS : 1 MTSIntraMaxCand : 3 diff --git a/cfg/encoder_lowdelay_P_vtm.cfg b/cfg/encoder_lowdelay_P_vtm.cfg index e5fa7ee2..8a8485e0 100644 --- a/cfg/encoder_lowdelay_P_vtm.cfg +++ b/cfg/encoder_lowdelay_P_vtm.cfg @@ -103,7 +103,6 @@ CrQpOffset : 1 #============ NEXT ==================== # General -LargeCTU : 1 # Large CTU CTUSize : 128 LCTUFast : 1 QuadtreeTULog2MaxSize : 6 @@ -115,7 +114,6 @@ MinQTNonISlice : 8 MaxBTDepth : 3 MaxBTDepthISliceL : 3 MaxBTDepthISliceC : 3 -MTT : 1 MTS : 1 MTSIntraMaxCand : 3 diff --git a/cfg/encoder_lowdelay_vtm.cfg b/cfg/encoder_lowdelay_vtm.cfg index dfd58148..982da143 100644 --- a/cfg/encoder_lowdelay_vtm.cfg +++ b/cfg/encoder_lowdelay_vtm.cfg @@ -103,7 +103,6 @@ CrQpOffset : 1 #============ NEXT ==================== # General -LargeCTU : 1 # Large CTU CTUSize : 128 LCTUFast : 1 QuadtreeTULog2MaxSize : 6 @@ -115,7 +114,6 @@ MinQTNonISlice : 8 MaxBTDepth : 3 MaxBTDepthISliceL : 3 MaxBTDepthISliceC : 3 -MTT : 1 MTS : 1 MTSIntraMaxCand : 3 diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg index 397869ad..7757d1db 100644 --- a/cfg/encoder_randomaccess_vtm.cfg +++ b/cfg/encoder_randomaccess_vtm.cfg @@ -117,7 +117,6 @@ CrQpOffset : 1 #============ NEXT ==================== # General -LargeCTU : 1 # Large CTU CTUSize : 128 LCTUFast : 1 QuadtreeTULog2MaxSize : 6 @@ -129,7 +128,6 @@ MinQTNonISlice : 8 MaxBTDepth : 3 MaxBTDepthISliceL : 3 MaxBTDepthISliceC : 3 -MTT : 1 MTS : 1 MTSIntraMaxCand : 3 diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index a4eda30b..26753f94 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -215,20 +215,14 @@ void EncApp::xInitLibCfg() m_cEncLib.setMinQTSizes ( m_uiMinQT ); m_cEncLib.setMaxBTDepth ( m_uiMaxBTDepth, m_uiMaxBTDepthI, m_uiMaxBTDepthIChroma ); m_cEncLib.setDualITree ( m_dualTree ); - m_cEncLib.setLargeCTU ( m_LargeCTU ); m_cEncLib.setSubPuMvpMode ( m_SubPuMvpMode ); m_cEncLib.setAffine ( m_Affine ); m_cEncLib.setAffineType ( m_AffineType ); m_cEncLib.setBIO (m_BIO); - m_cEncLib.setDisableMotionCompression ( m_DisableMotionCompression ); - m_cEncLib.setMTTMode ( m_MTT ); m_cEncLib.setUseLMChroma ( m_LMChroma ); #if JVET_M0142_CCLM_COLLOCATED_CHROMA m_cEncLib.setCclmCollocatedChromaFlag ( m_cclmCollocatedChromaFlag ); #endif -#if ENABLE_WPP_PARALLELISM - m_cEncLib.setUseAltDQPCoding ( m_AltDQPCoding ); -#endif #if JVET_M0464_UNI_MTS m_cEncLib.setIntraMTS ( m_MTS & 1 ); m_cEncLib.setIntraMTSMaxCand ( m_MTSIntraMaxCand ); diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 5ca2c6bd..9fb7f20d 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -799,7 +799,6 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("InterlacedSource", m_interlacedSourceFlag, false, "Indicate that source is interlaced") ("NonPackedSource", m_nonPackedConstraintFlag, false, "Indicate that source does not contain frame packing") ("FrameOnly", m_frameOnlyConstraintFlag, false, "Indicate that the bitstream contains only frames") - ("MTT", m_MTT, 0u, "Multi type tree type (0: off, 1:QTBT + triple split) [default: 0]") ("CTUSize", m_uiCTUSize, 128u, "CTUSize (specifies the CTU size if QTBT is on) [default: 128]") ("EnablePartitionConstraintsOverride", m_SplitConsOverrideEnabledFlag, true, "Enable partition constraints override") ("MinQTISlice", m_uiMinQT[0], 8u, "MinQTISlice") @@ -811,20 +810,15 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("MaxBTDepthISliceL", m_uiMaxBTDepthI, 3u, "MaxBTDepthISliceL") ("MaxBTDepthISliceC", m_uiMaxBTDepthIChroma, 3u, "MaxBTDepthISliceC") ("DualITree", m_dualTree, false, "Use separate QTBT trees for intra slice luma and chroma channel types") - ("LargeCTU", m_LargeCTU, false, "Enable large CTU (0:off, 1:on) [default: off]") ("SubPuMvp", m_SubPuMvpMode, 0, "Enable Sub-PU temporal motion vector prediction (0:off, 1:ATMVP, 2:STMVP, 3:ATMVP+STMVP) [default: off]") ("Affine", m_Affine, false, "Enable affine prediction (0:off, 1:on) [default: off]") ("AffineType", m_AffineType, true, "Enable affine type prediction (0:off, 1:on) [default: on]" ) ("BIO", m_BIO, false, "Enable bi-directional optical flow") - ("DisableMotCompression", m_DisableMotionCompression, false, "Disable motion data compression for all modes") ("IMV", m_ImvMode, 2, "Adaptive MV precision Mode (IMV)\n" "\t0: disabled IMV\n" "\t1: IMV default (Full-Pel)\n" "\t2: IMV Full-Pel and 4-PEL\n") ("IMV4PelFast", m_Imv4PelFast, 1, "Fast 4-Pel Adaptive MV precision Mode 0:disabled, 1:enabled) [default: 1]") -#if ENABLE_WPP_PARALLELISM - ("AltDQPCoding", m_AltDQPCoding, false, "Improved predictive delta-QP coding (0:off, 1:on) [default: off]") -#endif ("LMChroma", m_LMChroma, 1, " LMChroma prediction " "\t0: Disable LMChroma\n" "\t1: Enable LMChroma\n") @@ -1886,9 +1880,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) } #if QP_SWITCHING_FOR_PARALLEL - if( m_LargeCTU && ( m_iQP < 38 ) && ( m_iGOPSize > 4 ) && m_bUsePerceptQPA && !m_bUseAdaptiveQP && ( m_iSourceHeight <= 1280 ) && ( m_iSourceWidth <= 2048 ) ) + if( ( m_iQP < 38 ) && ( m_iGOPSize > 4 ) && m_bUsePerceptQPA && !m_bUseAdaptiveQP && ( m_iSourceHeight <= 1280 ) && ( m_iSourceWidth <= 2048 ) ) #else - if( m_LargeCTU && ( ( int ) m_fQP < 38 ) && ( m_iGOPSize > 4 ) && m_bUsePerceptQPA && !m_bUseAdaptiveQP && ( m_iSourceHeight <= 1280 ) && ( m_iSourceWidth <= 2048 ) ) + if( ( ( int ) m_fQP < 38 ) && ( m_iGOPSize > 4 ) && m_bUsePerceptQPA && !m_bUseAdaptiveQP && ( m_iSourceHeight <= 1280 ) && ( m_iSourceWidth <= 2048 ) ) #endif #else if( false ) @@ -1966,9 +1960,6 @@ bool EncAppCfg::xCheckParameter() xConfirmPara( m_numWppThreads > 1, "WPP-style parallelization only supported with NEXT profile" ); #endif xConfirmPara( m_LMChroma, "LMChroma only allowed with NEXT profile" ); - xConfirmPara( m_LargeCTU, "Large CTU is only allowed with NEXT profile" ); - xConfirmPara( m_DisableMotionCompression, "Disable motion data compression only allowed with NEXT profile" ); - xConfirmPara( m_MTT, "Multi type tree is only allowed with NEXT profile" ); xConfirmPara( m_ImvMode, "IMV is only allowed with NEXT profile" ); xConfirmPara(m_IBCMode, "IBC Mode only allowed with NEXT profile"); #if JVET_M0253_HASH_ME @@ -1994,9 +1985,6 @@ bool EncAppCfg::xCheckParameter() } else { -#if ENABLE_WPP_PARALLELISM - xConfirmPara( !m_AltDQPCoding && ( m_numWppThreads + m_numWppExtraLines ) > 1, "Wavefront parallel encoding only supported with AltDQPCoding" ); -#endif if( m_depQuantEnabledFlag ) { xConfirmPara( !m_useRDOQ || !m_useRDOQTS, "RDOQ and RDOQTS must be equal to 1 if dependent quantization is enabled" ); @@ -2313,13 +2301,6 @@ bool EncAppCfg::xCheckParameter() xConfirmPara( m_quadtreeTULog2MinSize < 2, "QuadtreeTULog2MinSize must be 2 or greater." ); - if( !m_LargeCTU ) - { - xConfirmPara( m_uiMaxCUHeight > 64, "CTU bigger than 64 only allowed with large CTU." ); - xConfirmPara( m_uiMaxCUWidth > 64, "CTU bigger than 64 only allowed with large CTU." ); - xConfirmPara( m_uiCTUSize > 64, "CTU bigger than 64 only allowed with large CTU." ); - } - if( m_profile == Profile::NEXT ) { xConfirmPara( m_quadtreeTULog2MaxSize > 7, "QuadtreeTULog2MaxSize must be 7 or smaller." ); @@ -3184,14 +3165,8 @@ void EncAppCfg::xPrintParameter() } msg(VERBOSE, "SubPuMvp:%d+%d ", m_SubPuMvpMode & 1, (m_SubPuMvpMode & 2) == 2); msg( VERBOSE, "DualITree:%d ", m_dualTree ); - msg( VERBOSE, "LargeCTU:%d ", m_LargeCTU ); msg( VERBOSE, "IMV:%d ", m_ImvMode ); msg( VERBOSE, "BIO:%d ", m_BIO ); - msg( VERBOSE, "DisMDC:%d ", m_DisableMotionCompression ); - msg( VERBOSE, "MTT:%d ", m_MTT ); -#if ENABLE_WPP_PARALLELISM - msg( VERBOSE, "AltDQPCoding:%d ", m_AltDQPCoding ); -#endif msg( VERBOSE, "LMChroma:%d ", m_LMChroma ); #if JVET_M0142_CCLM_COLLOCATED_CHROMA if( m_LMChroma && m_chromaFormatIDC == CHROMA_420 ) @@ -3248,10 +3223,7 @@ void EncAppCfg::xPrintParameter() } #endif msg( VERBOSE, "\nFAST TOOL CFG: " ); - if( m_LargeCTU ) - { - msg( VERBOSE, "LCTUFast:%d ", m_useFastLCTU ); - } + msg( VERBOSE, "LCTUFast:%d ", m_useFastLCTU ); msg( VERBOSE, "FastMrg:%d ", m_useFastMrg ); msg( VERBOSE, "PBIntraFast:%d ", m_usePbIntraFast ); if( m_ImvMode == 2 ) msg( VERBOSE, "IMV4PelFast:%d ", m_Imv4PelFast ); diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index 5b080d5d..45895dc4 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -202,16 +202,10 @@ protected: unsigned m_uiMaxBTDepthI; unsigned m_uiMaxBTDepthIChroma; bool m_dualTree; - bool m_LargeCTU; int m_SubPuMvpMode; bool m_Affine; bool m_AffineType; bool m_BIO; - bool m_DisableMotionCompression; - unsigned m_MTT; -#if ENABLE_WPP_PARALLELISM - bool m_AltDQPCoding; -#endif int m_LMChroma; #if JVET_M0142_CCLM_COLLOCATED_CHROMA bool m_cclmCollocatedChromaFlag; diff --git a/source/Lib/CommonLib/ContextModelling.cpp b/source/Lib/CommonLib/ContextModelling.cpp index 2623b68c..b90718f9 100644 --- a/source/Lib/CommonLib/ContextModelling.cpp +++ b/source/Lib/CommonLib/ContextModelling.cpp @@ -349,11 +349,7 @@ unsigned DeriveCtx::CtxQtCbf( const ComponentID compID, const unsigned trDepth, unsigned DeriveCtx::CtxInterDir( const PredictionUnit& pu ) { - if( pu.cs->sps->getUseLargeCTU() ) - { - return Clip3( 0, 3, 7 - ( ( g_aucLog2[pu.lumaSize().width] + g_aucLog2[pu.lumaSize().height] + 1 ) >> 1 ) ); // VG-ASYMM DONE - } - return pu.cu->qtDepth; + return Clip3( 0, 3, 7 - ( ( g_aucLog2[pu.lumaSize().width] + g_aucLog2[pu.lumaSize().height] + 1 ) >> 1 ) ); // VG-ASYMM DONE } unsigned DeriveCtx::CtxAffineFlag( const CodingUnit& cu ) diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index 2d133ae8..c2b43a4f 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -1967,9 +1967,7 @@ SPS::SPS() , m_lumaReshapeEnable (false) #endif // KJS: BEGIN former SPSNext parameters -, m_LargeCTU ( false ) , m_IMV ( false ) -, m_DisableMotionCompression ( false ) , m_LMChroma ( false ) #if JVET_M0142_CCLM_COLLOCATED_CHROMA , m_cclmCollocatedChromaFlag ( false ) @@ -1983,12 +1981,8 @@ SPS::SPS() #endif , m_Affine ( false ) , m_AffineType ( false ) -, m_MTTEnabled ( false ) , m_MHIntra ( false ) , m_Triangle ( false ) -#if ENABLE_WPP_PARALLELISM -, m_NextDQP ( false ) -#endif #if LUMA_ADAPTIVE_DEBLOCKING_FILTER_QP_OFFSET , m_LadfEnabled ( false ) , m_LadfNumIntervals ( 0 ) @@ -1998,7 +1992,6 @@ SPS::SPS() // default values for additional parameters , m_ImvMode ( IMV_OFF ) -, m_MTTMode ( 0 ) , m_compositeRefEnabled ( false ) #if !JVET_M0483_IBC , m_IBCMode ( 0 ) diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index df6cb19c..c2072178 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -950,9 +950,7 @@ private: bool m_lumaReshapeEnable; #endif // KJS: BEGIN former SPSNext parameters - bool m_LargeCTU; // 5 bool m_IMV; // 9 - bool m_DisableMotionCompression; // 13 bool m_LMChroma; // 17 #if JVET_M0142_CCLM_COLLOCATED_CHROMA bool m_cclmCollocatedChromaFlag; @@ -970,12 +968,8 @@ private: bool m_Affine; bool m_AffineType; bool m_GBi; // - bool m_MTTEnabled; // bool m_MHIntra; bool m_Triangle; -#if ENABLE_WPP_PARALLELISM - bool m_NextDQP; -#endif #if LUMA_ADAPTIVE_DEBLOCKING_FILTER_QP_OFFSET bool m_LadfEnabled; int m_LadfNumIntervals; @@ -985,8 +979,6 @@ private: //===== additional parameters ===== //imv ImvMode m_ImvMode; - // multi type tree (QTBT + triple split) - unsigned m_MTTMode; bool m_compositeRefEnabled; //composite longterm reference #if !JVET_M0483_IBC @@ -1229,21 +1221,12 @@ public: #endif // KJS: BEGIN former SPSNext parameters - void setUseLargeCTU ( bool b ) { m_LargeCTU = b; } - bool getUseLargeCTU () const { return m_LargeCTU; } void setUseIMV ( bool b ) { m_IMV = b; } bool getUseIMV () const { return m_IMV; } void setUseAffine ( bool b ) { m_Affine = b; } bool getUseAffine () const { return m_Affine; } void setUseAffineType ( bool b ) { m_AffineType = b; } bool getUseAffineType () const { return m_AffineType; } - void setDisableMotCompress ( bool b ) { m_DisableMotionCompression = b; } - bool getDisableMotCompress () const { return m_DisableMotionCompression; } - bool getMTTEnabled () const { return m_MTTEnabled; } -#if ENABLE_WPP_PARALLELISM - void setUseNextDQP ( bool b ) { m_NextDQP = b; } - bool getUseNextDQP () const { return m_NextDQP; } -#endif void setUseLMChroma ( bool b ) { m_LMChroma = b; } bool getUseLMChroma () const { return m_LMChroma; } #if JVET_M0142_CCLM_COLLOCATED_CHROMA @@ -1288,10 +1271,6 @@ public: void setImvMode(ImvMode m) { m_ImvMode = m; m_IMV = m != 0; } ImvMode getImvMode () const { return m_ImvMode; } - // multi type tree - unsigned getMTTMode () const { return m_MTTMode; } - void setMTTMode ( unsigned mode ) { m_MTTMode = mode; m_MTTEnabled = ( m_MTTMode != 0 ); } - void setUseCompositeRef(bool b) { m_compositeRefEnabled = b; } bool getUseCompositeRef() const { return m_compositeRefEnabled; } @@ -2261,7 +2240,6 @@ public: PreCalcValues( const SPS& sps, const PPS& pps, bool _isEncoder ) : chrFormat ( sps.getChromaFormatIdc() ) , multiBlock422 ( false ) - , noMotComp ( sps.getDisableMotCompress() ) , maxCUWidth ( sps.getMaxCUWidth() ) , maxCUHeight ( sps.getMaxCUHeight() ) , maxCUWidthMask ( maxCUWidth - 1 ) @@ -2294,7 +2272,6 @@ public: const ChromaFormat chrFormat; const bool multiBlock422; - const bool noMotComp; const unsigned maxCUWidth; const unsigned maxCUHeight; // to get CTU position, use (x & maxCUWidthMask) rather than (x % maxCUWidth) diff --git a/source/Lib/CommonLib/UnitPartitioner.cpp b/source/Lib/CommonLib/UnitPartitioner.cpp index 5f79f8d2..af9fce47 100644 --- a/source/Lib/CommonLib/UnitPartitioner.cpp +++ b/source/Lib/CommonLib/UnitPartitioner.cpp @@ -249,7 +249,6 @@ void QTBTPartitioner::splitCurrArea( const PartSplit split, const CodingStructur break; case CU_TRIH_SPLIT: case CU_TRIV_SPLIT: - CHECK( ( cs.sps->getMTTMode() & 1 ) != 1, "Triple splits are not allowed" ); m_partStack.push_back( PartLevel( split, PartitionerImpl::getCUSubPartitions( currArea(), cs, split ) ) ); break; case TU_MAX_TR_SPLIT: @@ -358,14 +357,12 @@ void QTBTPartitioner::canSplit( const CodingStructure &cs, bool& canNo, bool& ca } if( canBtt && ( area.width <= minBtSize && area.height <= minBtSize ) - && ( ( area.width <= minTtSize && area.height <= minTtSize ) - || cs.sps->getMTTMode() == 0 ) ) + && ( ( area.width <= minTtSize && area.height <= minTtSize ) ) ) { canBtt = false; } if( canBtt && ( area.width > maxBtSize || area.height > maxBtSize ) - && ( ( area.width > maxTtSize || area.height > maxTtSize ) - || cs.sps->getMTTMode() == 0 ) ) + && ( ( area.width > maxTtSize || area.height > maxTtSize ) ) ) { canBtt = false; } @@ -384,12 +381,10 @@ void QTBTPartitioner::canSplit( const CodingStructure &cs, bool& canNo, bool& ca if( area.width <= minBtSize || area.width > maxBtSize ) canBv = false; if( area.width <= MAX_TU_SIZE_FOR_PROFILE && area.height > MAX_TU_SIZE_FOR_PROFILE ) canBv = false; - if( ( cs.sps->getMTTMode() & 1 ) != 1 ) canTh = false; if( area.height <= 2 * minTtSize || area.height > maxTtSize || area.width > maxTtSize ) canTh = false; if( area.width > MAX_TU_SIZE_FOR_PROFILE || area.height > MAX_TU_SIZE_FOR_PROFILE ) canTh = false; - if( ( cs.sps->getMTTMode() & 1 ) != 1 ) canTv = false; if( area.width <= 2 * minTtSize || area.width > maxTtSize || area.height > maxTtSize ) canTv = false; if( area.width > MAX_TU_SIZE_FOR_PROFILE || area.height > MAX_TU_SIZE_FOR_PROFILE ) canTv = false; @@ -515,9 +510,9 @@ bool QTBTPartitioner::canSplit( const PartSplit split, const CodingStructure &cs { if( currMtDepth >= maxBTD ) return false; if( ( area.width <= minBtSize && area.height <= minBtSize ) - && ( ( area.width <= minTtSize && area.height <= minTtSize ) || cs.sps->getMTTMode() == 0 ) ) return false; + && ( ( area.width <= minTtSize && area.height <= minTtSize ) ) ) return false; if( ( area.width > maxBtSize || area.height > maxBtSize ) - && ( ( area.width > maxTtSize || area.height > maxTtSize ) || cs.sps->getMTTMode() == 0 ) ) return false; + && ( ( area.width > maxTtSize || area.height > maxTtSize ) ) ) return false; if (CS::isDualITree(cs) && (area.width > 64 || area.height > 64)) { return false; @@ -543,12 +538,10 @@ bool QTBTPartitioner::canSplit( const PartSplit split, const CodingStructure &cs if( area.width <= MAX_TU_SIZE_FOR_PROFILE && area.height > MAX_TU_SIZE_FOR_PROFILE ) return false; break; case CU_TRIH_SPLIT: - if( ( cs.sps->getMTTMode() & 1 ) != 1 ) return false; if( area.height <= 2 * minTtSize || area.height > maxTtSize || area.width > maxTtSize) return false; if( area.width > MAX_TU_SIZE_FOR_PROFILE || area.height > MAX_TU_SIZE_FOR_PROFILE ) return false; break; case CU_TRIV_SPLIT: - if( ( cs.sps->getMTTMode() & 1 ) != 1 ) return false; if( area.width <= 2 * minTtSize || area.width > maxTtSize || area.height > maxTtSize) return false; if( area.width > MAX_TU_SIZE_FOR_PROFILE || area.height > MAX_TU_SIZE_FOR_PROFILE ) return false; break; diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp index aa9a7d9a..68b7feba 100644 --- a/source/Lib/CommonLib/UnitTools.cpp +++ b/source/Lib/CommonLib/UnitTools.cpp @@ -189,25 +189,6 @@ int CU::predictQP( const CodingUnit& cu, const int prevQP ) { const CodingStructure &cs = *cu.cs; -#if ENABLE_WPP_PARALLELISM - if( cs.sps->getUseNextDQP() ) - { - // Inter-CTU 2D "planar" c(orner) a(bove) - // predictor arrangement: b(efore) p(rediction) - - // restrict the lookup, as it might cross CTU/slice/tile boundaries - const CodingUnit *cuA = cs.getCURestricted( cu.blocks[cu.chType].pos().offset( 0, -1 ), cu, cu.chType ); - const CodingUnit *cuB = cs.getCURestricted( cu.blocks[cu.chType].pos().offset( -1, 0 ), cu, cu.chType ); - const CodingUnit *cuC = cs.getCURestricted( cu.blocks[cu.chType].pos().offset( -1, -1 ), cu, cu.chType ); - - const int a = cuA ? cuA->qp : cs.slice->getSliceQpBase(); - const int b = cuB ? cuB->qp : cs.slice->getSliceQpBase(); - const int c = cuC ? cuC->qp : cs.slice->getSliceQpBase(); - - return Clip3( ( a < b ? a : b ), ( a > b ? a : b ), a + b - c ); // derived from Martucci's Median Adaptive Prediction, 1990 - } - -#endif // only predict within the same CTU, use HEVC's above+left prediction const int a = ( cu.blocks[cu.chType].y & ( cs.pcv->maxCUHeightMask >> getChannelTypeScaleY( cu.chType, cu.chromaFormat ) ) ) ? ( cs.getCU( cu.blocks[cu.chType].pos().offset( 0, -1 ), cu.chType ) )->qp : prevQP; const int b = ( cu.blocks[cu.chType].x & ( cs.pcv->maxCUWidthMask >> getChannelTypeScaleX( cu.chType, cu.chromaFormat ) ) ) ? ( cs.getCU( cu.blocks[cu.chType].pos().offset( -1, 0 ), cu.chType ) )->qp : prevQP; @@ -2344,7 +2325,7 @@ void PU::getInterMMVDMergeCandidates(const PredictionUnit &pu, MergeCtx& mrgCtx, bool PU::getColocatedMVP(const PredictionUnit &pu, const RefPicList &eRefPicList, const Position &_pos, Mv& rcMv, const int &refIdx ) { // don't perform MV compression when generally disabled or subPuMvp is used - const unsigned scale = ( pu.cs->pcv->noMotComp ? 1 : 4 * std::max<int>(1, 4 * AMVP_DECIMATION_FACTOR / 4) ); + const unsigned scale = 4 * std::max<int>(1, 4 * AMVP_DECIMATION_FACTOR / 4); const unsigned mask = ~( scale - 1 ); const Position pos = Position{ PosType( _pos.x & mask ), PosType( _pos.y & mask ) }; diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index d6b49911..68cd9f54 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1108,26 +1108,13 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) #endif // KJS: BEGIN former SPSNext parameters - READ_FLAG( uiCode, "large_ctu_flag" ); pcSPS->setUseLargeCTU ( uiCode != 0 ); - READ_FLAG( uiCode, "disable_motion_compression_flag" ); pcSPS->setDisableMotCompress ( uiCode != 0 ); - - READ_FLAG( uiCode, "mtt_enabled_flag" ); pcSPS->setMTTMode ( uiCode ); - -#if ENABLE_WPP_PARALLELISM - READ_FLAG( uiCode, "next_dqp_enabled_flag" ); pcSPS->setUseNextDQP ( uiCode != 0 ); -#endif - if( pcSPS->getUseIMV() ) { READ_UVLC( uiCode, "imv_mode_minus1" ); pcSPS->setImvMode( ImvMode( uiCode + 1 ) ); } - if( pcSPS->getMTTEnabled() ) - { - READ_UVLC( uiCode, "mtt_mode_minus1" ); pcSPS->setMTTMode( uiCode + 1 ); - } // KJS: END former SPSNext parameters - // KJS: referece picture sets to be replaced + // KJS: reference picture sets to be replaced READ_UVLC( uiCode, "num_short_term_ref_pic_sets" ); CHECK(uiCode > 64, "Invalid code"); pcSPS->createRPSList(uiCode); diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index 07e78283..6a89a07f 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -221,17 +221,11 @@ protected: #if JVET_M0140_SBT bool m_SBT; ///< Sub-Block Transform for inter blocks #endif - bool m_LargeCTU; int m_SubPuMvpMode; bool m_Affine; bool m_AffineType; bool m_BIO; - bool m_DisableMotionCompression; - unsigned m_MTTMode; -#if ENABLE_WPP_PARALLELISM - bool m_AltDQPCoding; -#endif bool m_compositeRefEnabled; //composite reference bool m_GBi; bool m_GBiFast; @@ -706,9 +700,6 @@ public: void setDualITree ( bool b ) { m_dualITree = b; } bool getDualITree () const { return m_dualITree; } - void setLargeCTU ( bool b ) { m_LargeCTU = b; } - bool getLargeCTU () const { return m_LargeCTU; } - void setUseLMChroma ( int n ) { m_LMChroma = n; } int getUseLMChroma() const { return m_LMChroma; } #if JVET_M0142_CCLM_COLLOCATED_CHROMA @@ -725,16 +716,6 @@ public: bool getAffineType() const { return m_AffineType; } void setBIO(bool b) { m_BIO = b; } bool getBIO() const { return m_BIO; } - void setDisableMotionCompression ( bool b ) { m_DisableMotionCompression = b; } - bool getDisableMotionCompression () const { return m_DisableMotionCompression; } - - - void setMTTMode ( unsigned u ) { m_MTTMode = u; } - unsigned getMTTMode () const { return m_MTTMode; } -#if ENABLE_WPP_PARALLELISM - void setUseAltDQPCoding ( bool b ) { m_AltDQPCoding = b; } - bool getUseAltDQPCoding () const { return m_AltDQPCoding; } -#endif #if JVET_M0464_UNI_MTS void setIntraMTSMaxCand ( unsigned u ) { m_IntraMTSMaxCand = u; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index b1b3f241..a8b1f4ed 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -878,7 +878,6 @@ void EncLib::xInitSPS(SPS &sps) sps.setCTUSize ( m_CTUSize ); sps.setSplitConsOverrideEnabledFlag ( m_useSplitConsOverride ); sps.setMinQTSizes ( m_uiMinQT ); - sps.setUseLargeCTU ( m_LargeCTU ); sps.setMaxBTDepth ( m_uiMaxBTDepth, m_uiMaxBTDepthI, m_uiMaxBTDepthIChroma ); sps.setUseDualITree ( m_dualITree ); sps.setSBTMVPEnabledFlag ( m_SubPuMvpMode ); @@ -887,15 +886,10 @@ void EncLib::xInitSPS(SPS &sps) sps.setBDOFEnabledFlag ( m_BIO ); sps.setUseAffine ( m_Affine ); sps.setUseAffineType ( m_AffineType ); - sps.setDisableMotCompress ( m_DisableMotionCompression ); - sps.setMTTMode ( m_MTTMode ); sps.setUseLMChroma ( m_LMChroma ? true : false ); #if JVET_M0142_CCLM_COLLOCATED_CHROMA sps.setCclmCollocatedChromaFlag( m_cclmCollocatedChromaFlag ); #endif -#if ENABLE_WPP_PARALLELISM - sps.setUseNextDQP ( m_AltDQPCoding ); -#endif #if JVET_M0464_UNI_MTS #if JVET_M0303_IMPLICIT_MTS sps.setUseMTS ( m_IntraMTS || m_InterMTS || m_ImplicitMTS ); diff --git a/source/Lib/EncoderLib/EncModeCtrl.cpp b/source/Lib/EncoderLib/EncModeCtrl.cpp index d5d5d0d0..88bbc131 100644 --- a/source/Lib/EncoderLib/EncModeCtrl.cpp +++ b/source/Lib/EncoderLib/EncModeCtrl.cpp @@ -1147,8 +1147,8 @@ void EncModeCtrlMTnoRQT::initCULevel( Partitioner &partitioner, const CodingStru cuECtx.set( BEST_HORZ_SPLIT_COST, MAX_DOUBLE ); cuECtx.set( BEST_TRIH_SPLIT_COST, MAX_DOUBLE ); cuECtx.set( BEST_TRIV_SPLIT_COST, MAX_DOUBLE ); - cuECtx.set( DO_TRIH_SPLIT, cs.sps->getMTTMode() & 1 ); - cuECtx.set( DO_TRIV_SPLIT, cs.sps->getMTTMode() & 1 ); + cuECtx.set( DO_TRIH_SPLIT, 1 ); + cuECtx.set( DO_TRIV_SPLIT, 1 ); cuECtx.set( BEST_IMV_COST, MAX_DOUBLE * .5 ); cuECtx.set( BEST_NO_IMV_COST, MAX_DOUBLE * .5 ); cuECtx.set( QT_BEFORE_BT, qtBeforeBt ); @@ -1957,31 +1957,28 @@ bool EncModeCtrlMTnoRQT::useModeResult( const EncTestMode& encTestmode, CodingSt cuECtx.set( MAX_QT_SUB_DEPTH, maxQtD ); } - if( ( tempCS->sps->getMTTMode() & 1 ) == 1 ) - { - int maxMtD = tempCS->pcv->getMaxBtDepth( *tempCS->slice, partitioner.chType ) + partitioner.currImplicitBtDepth; + int maxMtD = tempCS->pcv->getMaxBtDepth( *tempCS->slice, partitioner.chType ) + partitioner.currImplicitBtDepth; - if( encTestmode.type == ETM_SPLIT_BT_H ) + if( encTestmode.type == ETM_SPLIT_BT_H ) + { + if( tempCS->cus.size() > 2 ) { - if( tempCS->cus.size() > 2 ) - { - int h_2 = tempCS->area.blocks[partitioner.chType].height / 2; - int cu1_h = tempCS->cus.front()->blocks[partitioner.chType].height; - int cu2_h = tempCS->cus.back() ->blocks[partitioner.chType].height; + int h_2 = tempCS->area.blocks[partitioner.chType].height / 2; + int cu1_h = tempCS->cus.front()->blocks[partitioner.chType].height; + int cu2_h = tempCS->cus.back() ->blocks[partitioner.chType].height; - cuECtx.set( DO_TRIH_SPLIT, cu1_h < h_2 || cu2_h < h_2 || partitioner.currMtDepth + 1 == maxMtD ); - } + cuECtx.set( DO_TRIH_SPLIT, cu1_h < h_2 || cu2_h < h_2 || partitioner.currMtDepth + 1 == maxMtD ); } - else if( encTestmode.type == ETM_SPLIT_BT_V ) + } + else if( encTestmode.type == ETM_SPLIT_BT_V ) + { + if( tempCS->cus.size() > 2 ) { - if( tempCS->cus.size() > 2 ) - { - int w_2 = tempCS->area.blocks[partitioner.chType].width / 2; - int cu1_w = tempCS->cus.front()->blocks[partitioner.chType].width; - int cu2_w = tempCS->cus.back() ->blocks[partitioner.chType].width; + int w_2 = tempCS->area.blocks[partitioner.chType].width / 2; + int cu1_w = tempCS->cus.front()->blocks[partitioner.chType].width; + int cu2_w = tempCS->cus.back() ->blocks[partitioner.chType].width; - cuECtx.set( DO_TRIV_SPLIT, cu1_w < w_2 || cu2_w < w_2 || partitioner.currMtDepth + 1 == maxMtD ); - } + cuECtx.set( DO_TRIV_SPLIT, cu1_w < w_2 || cu2_w < w_2 || partitioner.currMtDepth + 1 == maxMtD ); } } diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 94f4c087..7632e3ce 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -782,18 +782,8 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) #endif - // KJS: BEGIN former SPSNext paramaters + // KJS: BEGIN former SPSNext parameters - // tool enabling flags - WRITE_FLAG( pcSPS->getUseLargeCTU() ? 1 : 0, "large_ctu_flag" ); - WRITE_FLAG( pcSPS->getDisableMotCompress() ? 1 : 0, "disable_motion_compression_flag" ); - - WRITE_FLAG( pcSPS->getMTTEnabled() ? 1 : 0, "mtt_enabled_flag" ); - -#if ENABLE_WPP_PARALLELISM - WRITE_FLAG( pcSPS->getUseNextDQP(), "next_dqp_enabled_flag" ); -#endif - // additional parameters if( pcSPS->getUseIMV() ) @@ -801,13 +791,9 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_UVLC( pcSPS->getImvMode()-1, "imv_mode_minus1" ); } - if( pcSPS->getMTTEnabled() ) - { - WRITE_UVLC( pcSPS->getMTTMode() - 1, "mtt_mode_minus1" ); - } - // KJS: END former SPSNext paramaters + // KJS: END former SPSNext parameters - // KJS: referece picture sets to be replaced + // KJS: reference picture sets to be replaced const RPSList* rpsList = pcSPS->getRPSList(); WRITE_UVLC(rpsList->getNumberOfReferencePictureSets(), "num_short_term_ref_pic_sets" ); -- GitLab