diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index e99e6069121419ff2e586d3164bb18a7303e41a6..7bb08727794f1a90f7ac5dd7636f1392c3be2ca2 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -155,6 +155,7 @@ #define JVET_X0148_TIMD_PDPC 1 // JVET-X0148: PDPC handling for TIMD #define JVET_AG0092_ENHANCED_TIMD_FUSION 1 // JVET-AG0092: TIMD fusion with non-angular predictor #define JVET_AG0128_REF_LINE_OPT_TIMD_FUSION 1 // JVET-AG0128: TIMD fusion reference line determination +#define JVET_AJ0079_DISABLE_TIMD_COMBINATION 1 // JVET-AJ0079(2.7b): Disabling timd-isp and timd-mrl combinations in a non-normative way. #define JVET_AJ0061_TIMD_MERGE 1 // TIMD merge mode #define JVET_AJ0146_TIMDSAD 1 // JVET-AJ0146: Additional TIMD mode with a different cost metric diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp index 8969fd17d84950f6cfe2ec97cadc9cc3a0c3df15..140735d9ba9fc9cbb5c2f486f12952584f87a4d4 100644 --- a/source/Lib/EncoderLib/IntraSearch.cpp +++ b/source/Lib/EncoderLib/IntraSearch.cpp @@ -4047,6 +4047,7 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c #endif uiRdModeList.push_back( ModeInfo( false, false, 0, NOT_INTRA_SUBPARTITIONS, TIMD_IDX ) ); numNonISPModes++; +#if !JVET_AJ0079_DISABLE_TIMD_COMBINATION if (lfnstIdx == 0 && !cu.mtsFlag) { #if JVET_AH0065_RELAX_LINE_BUFFER @@ -4102,6 +4103,7 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c #endif } } +#endif } #endif @@ -4120,6 +4122,7 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c } } #if JVET_W0123_TIMD_FUSION +#if !JVET_AJ0079_DISABLE_TIMD_COMBINATION #if JVET_AJ0061_TIMD_MERGE if (isTimdValid && !m_skipTimdMode[Timd] && sps.getUseISP() && CU::canUseISP(width, height, cu.cs->sps->getMaxTbSize()) && lfnstIdx == 0 && !cu.mtsFlag) #else @@ -4129,6 +4132,7 @@ bool IntraSearch::estIntraPredLumaQT(CodingUnit &cu, Partitioner &partitioner, c uiRdModeList.push_back( ModeInfo( false, false, 0, HOR_INTRA_SUBPARTITIONS, TIMD_IDX ) ); uiRdModeList.push_back( ModeInfo( false, false, 0, VER_INTRA_SUBPARTITIONS, TIMD_IDX ) ); } +#endif #endif //===== check modes (using r-d costs) ===== ModeInfo uiBestPUMode; @@ -15626,7 +15630,7 @@ void IntraSearch::xGetNextISPMode(ModeInfo& modeInfo, const ModeInfo* lastMode, #if ENABLE_DIMD && !JVET_V0087_DIMD_NO_ISP candidate.modeId != DIMD_IDX && #endif -#if JVET_W0123_TIMD_FUSION +#if JVET_W0123_TIMD_FUSION && !JVET_AJ0079_DISABLE_TIMD_COMBINATION candidate.modeId != TIMD_IDX && #endif #if JVET_AC0105_DIRECTIONAL_PLANAR @@ -15870,7 +15874,7 @@ bool IntraSearch::xSortISPCandList(double bestCostSoFar, double bestNonISPCost, #if ENABLE_DIMD && !JVET_V0087_DIMD_NO_ISP origHadList.at(k).modeId == DIMD_IDX || #endif -#if JVET_W0123_TIMD_FUSION +#if JVET_W0123_TIMD_FUSION && !JVET_AJ0079_DISABLE_TIMD_COMBINATION origHadList.at(k).modeId == TIMD_IDX || #endif #if JVET_AC0105_DIRECTIONAL_PLANAR @@ -15927,7 +15931,7 @@ void IntraSearch::xSortISPCandListLFNST() continue; } #endif -#if JVET_W0123_TIMD_FUSION +#if JVET_W0123_TIMD_FUSION && !JVET_AJ0079_DISABLE_TIMD_COMBINATION if( candList[i].modeId == TIMD_IDX ) { continue;