diff --git a/source/Lib/CommonLib/CommonDef.h b/source/Lib/CommonLib/CommonDef.h index ecef0a259a4e0f4e53b08077cd58fa5b5e891b91..4c8c0428b69319f4a98ffc8f8b7e90556292e411 100644 --- a/source/Lib/CommonLib/CommonDef.h +++ b/source/Lib/CommonLib/CommonDef.h @@ -325,7 +325,11 @@ static const int NUM_LMC_MODE = 1 + 2; ///< L #endif static const int NUM_INTRA_MODE = (NUM_LUMA_MODE + NUM_LMC_MODE); +#if TU_256 +static const int NUM_EXT_LUMA_MODE = 30; +#else static const int NUM_EXT_LUMA_MODE = 28; +#endif static const int NUM_DIR = (((NUM_LUMA_MODE - 3) >> 2) + 1); static const int PLANAR_IDX = 0; ///< index for intra PLANAR mode @@ -368,6 +372,7 @@ static const int MDLM_T_IDX = LM_CHROMA_IDX + 2; ///< M static const int DM_CHROMA_IDX = NUM_INTRA_MODE; ///< chroma mode index for derived from luma intra mode #if JVET_W0119_LFNST_EXTENSION +static const int NUM_LFNST_INTRA_MODES = NUM_LUMA_MODE + NUM_EXT_LUMA_MODE; static const uint32_t L16W_ZO = 96; static const uint32_t L16W = 96; static const uint32_t L16H = 32; diff --git a/source/Lib/CommonLib/Rom.h b/source/Lib/CommonLib/Rom.h index a080b084e878192bba5785a732b893e87c69fbcf..83909d55b94075136ab16eb514da42a09e32868d 100644 --- a/source/Lib/CommonLib/Rom.h +++ b/source/Lib/CommonLib/Rom.h @@ -205,7 +205,7 @@ extern const int8_t g_lfnst4x4[ 4 ][ 2 ][ 16 ][ 16 ]; #endif #if EXTENDED_LFNST || JVET_W0119_LFNST_EXTENSION -extern const uint8_t g_lfnstLut[ 95 ]; +extern const uint8_t g_lfnstLut[NUM_LFNST_INTRA_MODES]; #else extern const uint8_t g_lfnstLut[ NUM_INTRA_MODE + NUM_EXT_LUMA_MODE - 1 ]; #endif diff --git a/source/Lib/CommonLib/RomLFNST.cpp b/source/Lib/CommonLib/RomLFNST.cpp index b60b0e4bde2b3ad77e4959429a0bb01d2055da01..bb60c415089e15ec2092a55041127d1abd2f16ec 100644 --- a/source/Lib/CommonLib/RomLFNST.cpp +++ b/source/Lib/CommonLib/RomLFNST.cpp @@ -49,9 +49,9 @@ // ==================================================================================================================== #if EXTENDED_LFNST || JVET_W0119_LFNST_EXTENSION -const uint8_t g_lfnstLut[95] = -{ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 +const uint8_t g_lfnstLut[NUM_LFNST_INTRA_MODES] = +{ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 + +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; #else const uint8_t g_lfnstLut[ NUM_INTRA_MODE + NUM_EXT_LUMA_MODE - 1 ] = diff --git a/source/Lib/CommonLib/TrQuant.cpp b/source/Lib/CommonLib/TrQuant.cpp index 349675100875fb5dcec63025a90defee1453f6cf..cea2d569b0a5c2315477736ef9e5a9d82749399c 100644 --- a/source/Lib/CommonLib/TrQuant.cpp +++ b/source/Lib/CommonLib/TrQuant.cpp @@ -429,6 +429,10 @@ uint32_t TrQuant::getLFNSTIntraMode( int wideAngPredMode ) intraMode = ( uint32_t ) wideAngPredMode; } +#if JVET_W0119_LFNST_EXTENSION + CHECK( intraMode >= NUM_LFNST_INTRA_MODES, "Wrong intra mode for LFNST" ); +#endif + return intraMode; } @@ -1117,7 +1121,7 @@ void TrQuant::getTrTypes(const TransformUnit tu, const ComponentID compID, int & { ucMode = predMode; //"ucMode" is the signaled Mode. predMode = PU::getWideAngle(tu, (uint32_t)predMode, compID); - CHECK(predMode < -(NUM_EXT_LUMA_MODE >> 1) && predMode >= NUM_LUMA_MODE + (NUM_EXT_LUMA_MODE >> 1), "luma mode out of range"); + CHECK(predMode < -(NUM_EXT_LUMA_MODE >> 1) || predMode >= NUM_LUMA_MODE + (NUM_EXT_LUMA_MODE >> 1), "luma mode out of range"); predMode = (predMode < 0) ? 2 : (predMode >= NUM_LUMA_MODE) ? 66 : predMode; nMdIdx = predMode > DIA_IDX ? (NUM_LUMA_MODE + 1 - predMode) : predMode; isTrTransposed = (predMode > DIA_IDX) ? true : false;