diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 3703064f07572fd48226a82db344dd505ca34b6a..550d0f97474631d9d37fd9ee55b55ed18c45ebf9 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -229,6 +229,9 @@ strToLevel[] = {"6", Level::LEVEL6}, {"6.1", Level::LEVEL6_1}, {"6.2", Level::LEVEL6_2}, +#if JVET_T0065_LEVEL_6_3 + {"6.3", Level::LEVEL6_3}, +#endif {"15.5", Level::LEVEL15_5}, }; @@ -484,8 +487,16 @@ static uint32_t getMaxTileColsByLevel( Level::Name level ) case Level::LEVEL6: case Level::LEVEL6_1: case Level::LEVEL6_2: +#if !JVET_T0065_LEVEL_6_3 default: +#endif return 20; +#if JVET_T0065_LEVEL_6_3 + case Level::LEVEL6_3: + return 30; + default: + return MAX_TILE_COLS; +#endif } } @@ -511,8 +522,16 @@ static uint32_t getMaxTileRowsByLevel( Level::Name level ) case Level::LEVEL6: case Level::LEVEL6_1: case Level::LEVEL6_2: +#if !JVET_T0065_LEVEL_6_3 default: +#endif return 22; +#if JVET_T0065_LEVEL_6_3 + case Level::LEVEL6_3: + return 33; + default: + return MAX_TILES / MAX_TILE_COLS; +#endif } } @@ -539,8 +558,16 @@ static uint32_t getMaxSlicesByLevel( Level::Name level ) case Level::LEVEL6: case Level::LEVEL6_1: case Level::LEVEL6_2: +#if !JVET_T0065_LEVEL_6_3 default: +#endif return 600; +#if JVET_T0065_LEVEL_6_3 + case Level::LEVEL6_3: + return 1000; + default: + return MAX_SLICES; +#endif } } diff --git a/source/Lib/CommonLib/CommonDef.h b/source/Lib/CommonLib/CommonDef.h index bcd8e803b2925f4717614595b96384b68b9fcb0c..edcdceedeeb36aac9ab55ad7432062c3402e75f8 100644 --- a/source/Lib/CommonLib/CommonDef.h +++ b/source/Lib/CommonLib/CommonDef.h @@ -216,9 +216,16 @@ static const int MAX_NUM_APS = 32; //Curren static const int NUM_APS_TYPE_LEN = 3; //Currently APS Type has 3 bits static const int MAX_NUM_APS_TYPE = 8; //Currently APS Type has 3 bits so the max type is 8 +#if JVET_T0065_LEVEL_6_3 +static constexpr int MAX_TILE_COLS = 30; // Maximum number of tile columns +static constexpr int MAX_TILES = 990; // Maximum number of tiles +static constexpr int MAX_SLICES = 1000; // Maximum number of slices per picture + +#else static const int MAX_TILE_COLS = 20; ///< Maximum number of tile columns static const int MAX_TILES = 440; ///< Maximum number of tiles static const int MAX_SLICES = 600; ///< Maximum number of slices per picture +#endif static const int MLS_GRP_NUM = 1024; ///< Max number of coefficient groups, max(16, 256) static const int MLS_CG_SIZE = 4; ///< Coefficient group size of 4x4; = MLS_CG_LOG2_WIDTH + MLS_CG_LOG2_HEIGHT diff --git a/source/Lib/CommonLib/ProfileLevelTier.cpp b/source/Lib/CommonLib/ProfileLevelTier.cpp index 1e36b7d017ad6f430e1faf6071476d0de3bed85c..a277b36b9f9e262068c4d2419979f5f520e77624 100644 --- a/source/Lib/CommonLib/ProfileLevelTier.cpp +++ b/source/Lib/CommonLib/ProfileLevelTier.cpp @@ -70,6 +70,9 @@ static const LevelTierFeatures mainLevelTierInfo[] = { Level::LEVEL6 , 35651584, { 80000, 240000 }, 600, 440, 20, 1069547520ULL, { 60000, 240000 }, { 8, 4} }, { Level::LEVEL6_1, 35651584, { 120000, 480000 }, 600, 440, 20, 2139095040ULL, { 120000, 480000 }, { 8, 4} }, { Level::LEVEL6_2, 35651584, { 180000, 800000 }, 600, 440, 20, 4278190080ULL, { 240000, 800000 }, { 8, 4} }, +#if JVET_T0065_LEVEL_6_3 + { Level::LEVEL6_3, 80216064, { 240000, 800000 }, 1000, 990, 30, 4812963840ULL, { 320000, 800000 }, { 8, 4} }, +#endif { Level::LEVEL15_5, MAX_UINT,{ MAX_UINT, MAX_UINT }, MAX_UINT, MAX_UINT, MAX_UINT, MAX_CNFUINT64, {MAX_UINT, MAX_UINT }, { 0, 0} }, { Level::NONE } }; diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index d4269b0dd6cb2b97c81cdf3967af1bd2ac42d90c..6c7511491b2464782125c2b1e8bc7a842a4f4a36 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -58,6 +58,7 @@ #define JVET_S0219_ASPECT1 1 // JVET-S0219 aspect1 : removal non-referred APS parameter set in the non-output layer. #define JVET_R0193 1 // JVET-R0193: signalling of the number of maximum sublayers used for inter-layer prediction for each layer #define JVET_R0193_S0141 1 // JVET-S0141 item 47 : item 47: In the general sub-bitstream extraction process, specify the conditions under which an output sub-bitstream is required to be a conforming bitstream such that the value of tIdTarget is specified to be in the range of 0 to vps_ptl_max_tid[ vps_ols_ptl_idx[ targetOlsIdx ] ], inclusive (instead of 0 to 6 inclusive). (JVET-S0158 aspect 1) +#define JVET_T0065_LEVEL_6_3 1 // JVET-T0065: Add level 6.3 #define JVET_T0091_LMCS_ENC_OVERFLOW_FIX 1 // JVET-T0091: LMCS encoder overflow fix at high bit-depth for SDR #define JVET_S0163_ON_TARGETOLS_SUBLAYERS 1 // JVET-S0163: On target OLS and sublayers for decoding (OPI NAL Unit) #define JVET_R0266_GCI 1 // JVET-R0266 #5: Specify that no_gdr_constraint_flag equal to 1 specifies that sps_gdr_enabled_flag shall be equal to 0 @@ -721,6 +722,9 @@ namespace Level LEVEL6 = 96, LEVEL6_1 = 99, LEVEL6_2 = 102, +#if JVET_T0065_LEVEL_6_3 + LEVEL6_3 = 105, +#endif LEVEL15_5 = 255, }; }