diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 87dc3a88d866cf1597834bc23b72f9faee9f1434..a6bf5acbbbd60dfd14f30fd2cb8cd4d4981ed7d9 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -127,6 +127,7 @@ #define JVET_M0464_UNI_MTS 1 #define JVET_M0068_M0171_MMVD_CLEANUP 1 // MMVD cleanup with 1) flip removal, 2) L1 zero vector fix, 3) bi-pred restriction after merge/MMVD #define JVET_M0255_FRACMMVD_SWITCH 1 // disable fractional MVD in MMVD adaptively +#define JVET_M0854_FRACMMVD_SWITCH_FOR_UHD 1 // disable fractional MVD for UHD pictures #define JVET_M0823_MMVD_ENCOPT 1 // encoder optimization for MMVD #define JVET_M0147_DMVR 1 //Decoder side Motion Vector Refinement diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index 86dba88c48318a3743865d11df00ada1a245f8aa..4d7de977056d20dce6de2f1c0ea9836b4cb373a6 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -1431,6 +1431,12 @@ void EncSlice::checkDisFracMmvd( Picture* pcPic, uint32_t startCtuTsAddr, uint32 { pcSlice->setDisFracMMVD( true ); } +#if JVET_M0854_FRACMMVD_SWITCH_FOR_UHD + if (!pcSlice->getDisFracMMVD()) { + bool useIntegerMVD = (pcPic->lwidth()*pcPic->lheight() > 1920 * 1080); + pcSlice->setDisFracMMVD( useIntegerMVD ); + } +#endif } #endif