diff --git a/source/Lib/CommonLib/IntraPrediction.cpp b/source/Lib/CommonLib/IntraPrediction.cpp index a5cb96ee7ef97ef9f78240a63b91f000725a88f5..7030269b755452f4d17ca7e1f1316648e09b1192 100644 --- a/source/Lib/CommonLib/IntraPrediction.cpp +++ b/source/Lib/CommonLib/IntraPrediction.cpp @@ -607,7 +607,11 @@ void IntraPrediction::initPredIntraParams(const PredictionUnit & pu, const CompA if (filterFlag) { const bool isRefFilter = isIntegerSlope(absAng); +#if JVET_N0435_WAIP_HARMONIZATION + m_ipaParam.refFilterFlag = isRefFilter && puSize.width * puSize.height > 32; +#else m_ipaParam.refFilterFlag = isRefFilter; +#endif m_ipaParam.interpolationFlag = !isRefFilter; } } diff --git a/source/Lib/CommonLib/IntraPrediction.h b/source/Lib/CommonLib/IntraPrediction.h index f8d1e5fe9dce8d710f571750ef28835c20e3a6dd..a2889e3b0978d2aa7aa9fa94c4bb5407f463dd7c 100644 --- a/source/Lib/CommonLib/IntraPrediction.h +++ b/source/Lib/CommonLib/IntraPrediction.h @@ -115,7 +115,11 @@ protected: void initPredIntraParams ( const PredictionUnit & pu, const CompArea compArea, const SPS& sps ); +#if JVET_N0435_WAIP_HARMONIZATION + static bool isIntegerSlope(const int absAng) { return (0 == (absAng & 0x1F)); } +#else static bool isIntegerSlope ( const int absAng ) { return (0 == (absAng & 0x1F)) && absAng <=32; } // integer-slope modes 2, DIA_IDX and VDIA_IDX. "absAng <=32" restricts wide-angle integer modes +#endif Pel xGetPredValDc ( const CPelBuf &pSrc, const Size &dstSize ); diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index c84b38f7772efef70b710b67e7375c7e14d60b7e..8eef25d5489a0eb25afc64d2dd0d05a8484910e1 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -50,6 +50,8 @@ #include <assert.h> #include <cassert> +#define JVET_N0435_WAIP_HARMONIZATION 1 + #define JVET_N0168_AMVR_ME_MODIFICATION 1 // Correct the cost and bits calculation in encoder side #define JVET_N0068_AFFINE_MEM_BW 1 // memory bandwidth reduction for affine mode