Skip to content
Snippets Groups Projects
Commit 5ffa8443 authored by Karl Sharman's avatar Karl Sharman
Browse files

JVET-R0244 - changes for CPB and MinCR.

CPB changes impact 8K levels; MinCRScaleFactor for 4:4:4 profile.
parent 2ebefea0
No related branches found
No related tags found
No related merge requests found
...@@ -67,9 +67,15 @@ static const LevelTierFeatures mainLevelTierInfo[] = ...@@ -67,9 +67,15 @@ static const LevelTierFeatures mainLevelTierInfo[] =
{ Level::LEVEL5 , 8912896, { 25000, 100000 }, 200, 11, 10, 267386880ULL, { 25000, 100000 }, { 6, 4} }, { Level::LEVEL5 , 8912896, { 25000, 100000 }, 200, 11, 10, 267386880ULL, { 25000, 100000 }, { 6, 4} },
{ Level::LEVEL5_1, 8912896, { 40000, 160000 }, 200, 11, 10, 534773760ULL, { 40000, 160000 }, { 8, 4} }, { Level::LEVEL5_1, 8912896, { 40000, 160000 }, 200, 11, 10, 534773760ULL, { 40000, 160000 }, { 8, 4} },
{ Level::LEVEL5_2, 8912896, { 60000, 240000 }, 200, 11, 10, 1069547520ULL, { 60000, 240000 }, { 8, 4} }, { Level::LEVEL5_2, 8912896, { 60000, 240000 }, 200, 11, 10, 1069547520ULL, { 60000, 240000 }, { 8, 4} },
#if JVET_R0244_CPB_AND_MINCR
{ Level::LEVEL6 , 35651584, { 80000, 240000 }, 600, 22, 20, 1069547520ULL, { 60000, 240000 }, { 8, 4} },
{ Level::LEVEL6_1, 35651584, { 120000, 480000 }, 600, 22, 20, 2139095040ULL, { 120000, 480000 }, { 8, 4} },
{ Level::LEVEL6_2, 35651584, { 180000, 800000 }, 600, 22, 20, 4278190080ULL, { 240000, 800000 }, { 8, 4} },
#else
{ Level::LEVEL6 , 35651584, { 60000, 240000 }, 600, 22, 20, 1069547520ULL, { 60000, 240000 }, { 8, 4} }, { Level::LEVEL6 , 35651584, { 60000, 240000 }, 600, 22, 20, 1069547520ULL, { 60000, 240000 }, { 8, 4} },
{ Level::LEVEL6_1, 35651584, { 120000, 480000 }, 600, 22, 20, 2139095040ULL, { 120000, 480000 }, { 8, 4} }, { Level::LEVEL6_1, 35651584, { 120000, 480000 }, 600, 22, 20, 2139095040ULL, { 120000, 480000 }, { 8, 4} },
{ Level::LEVEL6_2, 35651584, { 240000, 800000 }, 600, 22, 20, 4278190080ULL, { 240000, 800000 }, { 6, 4} }, { Level::LEVEL6_2, 35651584, { 240000, 800000 }, 600, 22, 20, 4278190080ULL, { 240000, 800000 }, { 6, 4} },
#endif
#if JVET_R0245_LEVEL_CODING #if JVET_R0245_LEVEL_CODING
{ Level::LEVEL15_5, MAX_UINT, { MAX_UINT, MAX_UINT }, MAX_UINT, MAX_UINT, MAX_UINT, MAX_CNFUINT64, {MAX_UINT, MAX_UINT }, { 0, 0} }, { Level::LEVEL15_5, MAX_UINT, { MAX_UINT, MAX_UINT }, MAX_UINT, MAX_UINT, MAX_UINT, MAX_CNFUINT64, {MAX_UINT, MAX_UINT }, { 0, 0} },
#else #else
...@@ -79,9 +85,15 @@ static const LevelTierFeatures mainLevelTierInfo[] = ...@@ -79,9 +85,15 @@ static const LevelTierFeatures mainLevelTierInfo[] =
}; };
static const ProfileFeatures validProfiles[] = static const ProfileFeatures validProfiles[] =
#if JVET_R0244_CPB_AND_MINCR
{ // profile, pNameString, maxBitDepth, maxChrFmt, lvl15.5, cpbvcl, cpbnal, fcf*1000, mincr*100, levelInfo
{ Profile::MAIN_10, "Main_10", 10, CHROMA_420, false, 1000, 1100, 1875, 100 , mainLevelTierInfo },
{ Profile::MAIN_444_10, "Main_444_10", 10, CHROMA_444, false, 2500, 2750, 3750, 75 , mainLevelTierInfo },
#else
{ // profile, pNameString, maxBitDepth, maxChrFmt, lvl8.5, cpbvcl, cpbnal, fcf*1000, mincr*10, levelInfo { // profile, pNameString, maxBitDepth, maxChrFmt, lvl8.5, cpbvcl, cpbnal, fcf*1000, mincr*10, levelInfo
{ Profile::MAIN_10, "Main_10", 10, CHROMA_420, false, 1000, 1100, 1875, 10 , mainLevelTierInfo }, { Profile::MAIN_10, "Main_10", 10, CHROMA_420, false, 1000, 1100, 1875, 10 , mainLevelTierInfo },
{ Profile::MAIN_444_10, "Main_444_10", 10, CHROMA_444, false, 2500, 2750, 3750, 5 , mainLevelTierInfo }, { Profile::MAIN_444_10, "Main_444_10", 10, CHROMA_444, false, 2500, 2750, 3750, 5 , mainLevelTierInfo },
#endif
{ Profile::NONE, 0 } { Profile::NONE, 0 }
}; };
...@@ -126,7 +138,11 @@ ProfileLevelTierFeatures::extractPTLInformation(const SPS &sps) ...@@ -126,7 +138,11 @@ ProfileLevelTierFeatures::extractPTLInformation(const SPS &sps)
double ProfileLevelTierFeatures::getMinCr() const double ProfileLevelTierFeatures::getMinCr() const
{ {
#if JVET_R0244_CPB_AND_MINCR
return (m_pLevelTier!=0 && m_pProfile!=0) ? (m_pProfile->minCrScaleFactorx100 * m_pLevelTier->minCrBase[m_tier?1:0])/100.0 : 0.0 ;
#else
return (m_pLevelTier!=0 && m_pProfile!=0) ? (m_pProfile->minCrScaleFactorx10 * m_pLevelTier->minCrBase[m_tier?1:0])/10.0 : 0.0 ; return (m_pLevelTier!=0 && m_pProfile!=0) ? (m_pProfile->minCrScaleFactorx10 * m_pLevelTier->minCrBase[m_tier?1:0])/10.0 : 0.0 ;
#endif
} }
uint64_t ProfileLevelTierFeatures::getCpbSizeInBits() const uint64_t ProfileLevelTierFeatures::getCpbSizeInBits() const
......
...@@ -78,7 +78,11 @@ struct ProfileFeatures ...@@ -78,7 +78,11 @@ struct ProfileFeatures
uint32_t cpbVclFactor; uint32_t cpbVclFactor;
uint32_t cpbNalFactor; uint32_t cpbNalFactor;
uint32_t formatCapabilityFactorx1000; uint32_t formatCapabilityFactorx1000;
#if JVET_R0244_CPB_AND_MINCR
uint32_t minCrScaleFactorx100;
#else
uint32_t minCrScaleFactorx10; uint32_t minCrScaleFactorx10;
#endif
const LevelTierFeatures *pLevelTiersListInfo; const LevelTierFeatures *pLevelTiersListInfo;
}; };
......
...@@ -241,6 +241,8 @@ ...@@ -241,6 +241,8 @@
#define JVET_R0101_PROPOSAL2 1 // JVET-R0101 Proposal 2: Bug fix for signalling some syntax elements length #define JVET_R0101_PROPOSAL2 1 // JVET-R0101 Proposal 2: Bug fix for signalling some syntax elements length
#define JVET_R0244_CPB_AND_MINCR 1 // JVET-R0244: Changes to CPB sizes for MaxCPB = 80k for level 6, 120k for level 6.1, 180k for level 6.2; MinCrScaleFactor for the 4:4:4 profile changed to 0.75, and change MinCrBase to 8 for level 6.2.
#define JVET_R0245_LEVEL_CODING 1 // JVET-R0245: level coding numbering scheme #define JVET_R0245_LEVEL_CODING 1 // JVET-R0245: level coding numbering scheme
//########### place macros to be be kept below this line ############### //########### place macros to be be kept below this line ###############
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment