diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 13c8b4cbb91e89398d62733ae19b1d05b42db59c..70f217b71fff88e41c477b0671ef07c5115aaa86 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -2575,7 +2575,14 @@ int EncAppCfg::xAutoDetermineProfile() case ChromaFormat::CHROMA_420: if (maxBitDepth <= 10) { - m_profile = m_maxLayers > 1 ? Profile::MULTILAYER_MAIN_10 : Profile::MAIN_10; + if (m_level == Level::LEVEL15_5 && m_framesToBeEncoded == 1) + { + m_profile = m_maxLayers > 1 ? Profile::MULTILAYER_MAIN_10_STILL_PICTURE : Profile::MAIN_10_STILL_PICTURE; + } + else + { + m_profile = m_maxLayers > 1 ? Profile::MULTILAYER_MAIN_10 : Profile::MAIN_10; + } } break; @@ -2583,7 +2590,15 @@ int EncAppCfg::xAutoDetermineProfile() case ChromaFormat::CHROMA_444: if (maxBitDepth <= 10) { - m_profile = m_maxLayers > 1 ? Profile::MULTILAYER_MAIN_10_444 : Profile::MAIN_10_444; + if (m_level == Level::LEVEL15_5 && m_framesToBeEncoded == 1) + { + m_profile = + m_maxLayers > 1 ? Profile::MULTILAYER_MAIN_10_444_STILL_PICTURE : Profile::MAIN_10_444_STILL_PICTURE; + } + else + { + m_profile = m_maxLayers > 1 ? Profile::MULTILAYER_MAIN_10_444 : Profile::MAIN_10_444; + } } break; diff --git a/source/Lib/CommonLib/ProfileLevelTier.cpp b/source/Lib/CommonLib/ProfileLevelTier.cpp index c759ff22886832f0904876d62e5efe349a78ba77..d224cbe79eaa65ef364c1dd984122ce8a7a247f6 100644 --- a/source/Lib/CommonLib/ProfileLevelTier.cpp +++ b/source/Lib/CommonLib/ProfileLevelTier.cpp @@ -145,10 +145,16 @@ ProfileLevelTierFeatures::extractPTLInformation(const SPS &sps) m_tier = spsPtl.getTierFlag(); // Identify the profile from the profile Idc, and possibly other constraints. +#if !JVET_S_PROFILES bool onePictureOnlyConstraintFlag=spsPtl.getConstraintInfo()->getOnePictureOnlyConstraintFlag(); +#endif for(int32_t i=0; validProfiles[i].profile != Profile::NONE; i++) { +#if JVET_S_PROFILES + if (spsPtl.getProfileIdc() == validProfiles[i].profile) +#else if (spsPtl.getProfileIdc() == validProfiles[i].profile && !(validProfiles[i].onePictureOnlyFlagMustBe1 && !onePictureOnlyConstraintFlag)) +#endif { m_pProfile = &(validProfiles[i]); break;