diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 9c6ffca793cb8bb5cb42ab1b42221f40d4663881..46988f21da63b51231d43cb641106fbbb73e733a 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -1442,7 +1442,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("SEISubpicLevelInfoNumSubpics", m_cfgSubpictureLevelInfoSEI.m_numSubpictures, 1, "Number of subpictures for Subpicture Level Information SEI messages") ("SEIAnnotatedRegionsFileRoot,-ar", m_arSEIFileRoot, std::string(""), "Annotated region SEI parameters root file name (wo num ext); only the file name base is to be added. Underscore and POC would be automatically addded to . E.g. \"-ar ar\" will search for files ar_0.txt, ar_1.txt, ...") ("SEISubpicLevelInfoMaxSublayers", m_cfgSubpictureLevelInfoSEI.m_sliMaxSublayers, 1, "Number of sublayers for Subpicture Level Information SEI messages") -("SEISubpicLevelInfoSublayerInfoPresentFlag", m_cfgSubpictureLevelInfoSEI.m_sliSublayerInfoPresentFlag, false, "Enable sending of level information for all sublayers in Subpicture Level Information SEI messages") +("SEISubpicLevelInfoSublayerInfoPresentFlag", m_cfgSubpictureLevelInfoSEI.hasSublayerInfo, false, "Enable sending of level information for all sublayers in Subpicture Level Information SEI messages") ("SEISubpicLevelInfoRefLevelFractions", cfg_sliFractions, cfg_sliFractions, "List of subpicture level fractions for Subpicture Level Information SEI messages") ("SEISubpicLevelInfoNonSubpicLayersFractions", cfg_sliNonSubpicLayersFractions, cfg_sliNonSubpicLayersFractions, "List of level fractions for non-subpicture layers in Subpicture Level Information SEI messages") ("SEISampleAspectRatioInfo", m_sampleAspectRatioInfoSEIEnabled, false, "Control generation of Sample Aspect Ratio Information SEI messages") @@ -2369,7 +2369,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) { CHECK (m_numSubPics != m_cfgSubpictureLevelInfoSEI.m_numSubpictures, "NumSubPics must be equal to SEISubpicLevelInfoNumSubpics" ); CHECK (m_cfgSubpictureLevelInfoSEI.m_sliMaxSublayers != m_maxSublayers, "SEISubpicLevelInfoMaxSublayers must be equal to vps_max_sublayers"); - if (m_cfgSubpictureLevelInfoSEI.m_sliSublayerInfoPresentFlag) + if (m_cfgSubpictureLevelInfoSEI.hasSublayerInfo) { CHECK(cfg_sliRefLevels.values.size() < m_maxSublayers, "when sliSublayerInfoPresentFlag = 1, the number of reference levels must be greater than or equal to sublayers"); } @@ -2377,7 +2377,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) { m_cfgSubpictureLevelInfoSEI.m_fractions = cfg_sliFractions.values; m_cfgSubpictureLevelInfoSEI.m_refLevels = cfg_sliRefLevels.values; - if (m_cfgSubpictureLevelInfoSEI.m_sliSublayerInfoPresentFlag) + if (m_cfgSubpictureLevelInfoSEI.hasSublayerInfo) { CHECK((int)cfg_sliRefLevels.values.size() / m_maxSublayers * m_cfgSubpictureLevelInfoSEI.m_numSubpictures * m_cfgSubpictureLevelInfoSEI.m_sliMaxSublayers != cfg_sliFractions.values.size(), "when sliSublayerInfoPresentFlag = 1, the number of subpicture level fractions must be equal to the numer of subpictures times the number of reference levels times the number of sublayers"); @@ -2388,7 +2388,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) } } m_cfgSubpictureLevelInfoSEI.m_nonSubpicLayersFraction = cfg_sliNonSubpicLayersFractions.values; - if (m_cfgSubpictureLevelInfoSEI.m_sliSublayerInfoPresentFlag) + if (m_cfgSubpictureLevelInfoSEI.hasSublayerInfo) { CHECK((int)cfg_sliNonSubpicLayersFractions.values.size() != ( cfg_sliRefLevels.values.size() * m_cfgSubpictureLevelInfoSEI.m_numSubpictures ), "when sliSublayerInfoPresentFlag = 1, the number of non-subpicture level fractions must be equal to the numer of reference levels times the number of sublayers"); diff --git a/source/Lib/CommonLib/SEI.cpp b/source/Lib/CommonLib/SEI.cpp index c58302b59fb7e4ede540f8f803d3e0ca6d54dd64..e5c828dea86cdb0e965a9bb0913f730875384596 100644 --- a/source/Lib/CommonLib/SEI.cpp +++ b/source/Lib/CommonLib/SEI.cpp @@ -920,7 +920,7 @@ SEIContentColourVolume::SEIContentColourVolume(const SEIContentColourVolume& sei SEISubpictureLevelInfo::SEISubpictureLevelInfo(const SEISubpictureLevelInfo& sei) { cbrConstraint = sei.cbrConstraint; - m_sliSublayerInfoPresentFlag = sei.m_sliSublayerInfoPresentFlag; + hasSublayerInfo = sei.hasSublayerInfo; data = sei.data; } diff --git a/source/Lib/CommonLib/SEI.h b/source/Lib/CommonLib/SEI.h index 5527fca3d49a7b6bc0532a5280e0bd650b02b028..691058f066f35e94ecbbc8e8922e802244af0f52 100644 --- a/source/Lib/CommonLib/SEI.h +++ b/source/Lib/CommonLib/SEI.h @@ -1064,12 +1064,12 @@ class SEISubpictureLevelInfo : public SEI { public: PayloadType payloadType() const { return PayloadType::SUBPICTURE_LEVEL_INFO; } - SEISubpictureLevelInfo() : cbrConstraint(false), m_sliSublayerInfoPresentFlag(false) {} + SEISubpictureLevelInfo() {} SEISubpictureLevelInfo(const SEISubpictureLevelInfo& sei); virtual ~SEISubpictureLevelInfo() {} bool cbrConstraint = false; - bool m_sliSublayerInfoPresentFlag; + bool hasSublayerInfo = false; int& nonSubpicLayerFraction(int i, int k) { return data[k][i].nonSubpicLayersFraction; } const int& nonSubpicLayerFraction(int i, int k) const { return data[k][i].nonSubpicLayersFraction; } diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp index cf3a5059cbc65b897a7ff58b6f441fb248aa294c..c3fb4b218ad1cccfcbb731c444f7565e0221d24d 100644 --- a/source/Lib/DecoderLib/SEIread.cpp +++ b/source/Lib/DecoderLib/SEIread.cpp @@ -2734,7 +2734,8 @@ void SEIReader::xParseSEISubpictureLevelInfo(SEISubpictureLevelInfo& sei, uint32 numSubpics = val + 1; sei_read_code(pDecodedMessageOutputStream, 3, val, "sli_max_sublayers_minus1"); maxSublayers = val + 1; - sei_read_flag(pDecodedMessageOutputStream, val, "sli_sublayer_info_present_flag"); sei.m_sliSublayerInfoPresentFlag = val; + sei_read_flag(pDecodedMessageOutputStream, val, "sli_sublayer_info_present_flag"); + sei.hasSublayerInfo = val; while (!isByteAligned()) { sei_read_flag( pDecodedMessageOutputStream, val, "sli_alignment_zero_bit" ); CHECK (val != 0, "sli_alignment_zero_bit not equal to zero" ); @@ -2744,7 +2745,7 @@ void SEIReader::xParseSEISubpictureLevelInfo(SEISubpictureLevelInfo& sei, uint32 sei.resize(numRefLevels, maxSublayers, explicitFractionPresentFlag, numSubpics); // parsing - for (int k = sei.m_sliSublayerInfoPresentFlag ? 0 : sei.maxSublayers() - 1; k < sei.maxSublayers(); k++) + for (int k = sei.hasSublayerInfo ? 0 : sei.maxSublayers() - 1; k < sei.maxSublayers(); k++) { for (int i = 0; i < sei.numRefLevels(); i++) { @@ -2765,7 +2766,7 @@ void SEIReader::xParseSEISubpictureLevelInfo(SEISubpictureLevelInfo& sei, uint32 } // update the inference of m_refLevelIdc[][] and m_refLevelFraction[][][] - if (!sei.m_sliSublayerInfoPresentFlag) + if (!sei.hasSublayerInfo) { sei.fillSublayers(); } diff --git a/source/Lib/EncoderLib/EncCfgParam.h b/source/Lib/EncoderLib/EncCfgParam.h index af2aea0a9cdab145ba80294b786a8d51b1a588b4..9644544aebe198a7f98d3c102b887dd690c38be2 100644 --- a/source/Lib/EncoderLib/EncCfgParam.h +++ b/source/Lib/EncoderLib/EncCfgParam.h @@ -56,13 +56,8 @@ public: class CfgSEISubpictureLevel { public: - CfgSEISubpictureLevel() - : m_enabled (false) - , m_explicitFraction (false) - , m_numSubpictures (1) - , m_sliMaxSublayers(1) - , m_sliSublayerInfoPresentFlag (false) + : m_enabled(false), m_explicitFraction(false), m_numSubpictures(1), m_sliMaxSublayers(1), hasSublayerInfo(false) {} virtual ~CfgSEISubpictureLevel(){} @@ -74,7 +69,7 @@ public: std::vector<int> m_nonSubpicLayersFraction; std::vector<int> m_fractions; int m_sliMaxSublayers; - bool m_sliSublayerInfoPresentFlag; + bool hasSublayerInfo; }; } diff --git a/source/Lib/EncoderLib/SEIEncoder.cpp b/source/Lib/EncoderLib/SEIEncoder.cpp index 0370ac8c37d3e24f7ed002a730ce89e4baa99c31..796d33f81a50806d6e97f6cc3d6b8740cb7f4d1b 100644 --- a/source/Lib/EncoderLib/SEIEncoder.cpp +++ b/source/Lib/EncoderLib/SEIEncoder.cpp @@ -1285,10 +1285,10 @@ void SEIEncoder::initSEISubpictureLevelInfo(SEISubpictureLevelInfo* sei, const S { const EncCfgParam::CfgSEISubpictureLevel &cfgSubPicLevel = m_pcCfg->getSubpicureLevelInfoSEICfg(); - sei->m_sliSublayerInfoPresentFlag = cfgSubPicLevel.m_sliSublayerInfoPresentFlag; + sei->hasSublayerInfo = cfgSubPicLevel.hasSublayerInfo; const size_t maxSublayers = cfgSubPicLevel.m_sliMaxSublayers; - const size_t numRefLevels = cfgSubPicLevel.m_sliSublayerInfoPresentFlag + const size_t numRefLevels = cfgSubPicLevel.hasSublayerInfo ? cfgSubPicLevel.m_refLevels.size() / cfgSubPicLevel.m_sliMaxSublayers : cfgSubPicLevel.m_refLevels.size(); const size_t numSubpics = cfgSubPicLevel.m_numSubpictures; @@ -1298,7 +1298,7 @@ void SEIEncoder::initSEISubpictureLevelInfo(SEISubpictureLevelInfo* sei, const S sei->resize(numRefLevels, maxSublayers, explicitFractionPresentFlag, numSubpics); // set sei parameters according to the configured values - for (int sublayer = sei->m_sliSublayerInfoPresentFlag ? 0 : sei->maxSublayers() - 1, cnta = 0, cntb = 0; + for (int sublayer = sei->hasSublayerInfo ? 0 : sei->maxSublayers() - 1, cnta = 0, cntb = 0; sublayer < sei->maxSublayers(); sublayer++) { for (int level = 0; level < sei->numRefLevels(); level++) @@ -1316,7 +1316,7 @@ void SEIEncoder::initSEISubpictureLevelInfo(SEISubpictureLevelInfo* sei, const S } // update the inference of m_refLevelIdc[][] and m_refLevelFraction[][][] - if (!sei->m_sliSublayerInfoPresentFlag) + if (!sei->hasSublayerInfo) { sei->fillSublayers(); } diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp index fde95adfd73f272e264dc1a045578edf9673f105..64c8231b07651d57012e5a0809b337c40749034b 100644 --- a/source/Lib/EncoderLib/SEIwrite.cpp +++ b/source/Lib/EncoderLib/SEIwrite.cpp @@ -1337,14 +1337,14 @@ void SEIWriter::xWriteSEISubpictureLevelInfo(const SEISubpictureLevelInfo& sei) { xWriteUvlc(sei.numSubpics() - 1, "sli_num_subpics_minus1"); xWriteCode(sei.maxSublayers() - 1, 3, "sli_max_sublayers_minus1"); - xWriteFlag( sei.m_sliSublayerInfoPresentFlag, "sli_sublayer_info_present_flag"); + xWriteFlag(sei.hasSublayerInfo ? 1 : 0, "sli_sublayer_info_present_flag"); while (!isByteAligned()) { xWriteFlag( 0, "sli_alignment_zero_bit"); } } - for (int k = sei.m_sliSublayerInfoPresentFlag ? 0 : sei.maxSublayers() - 1; k < sei.maxSublayers(); k++) + for (int k = sei.hasSublayerInfo ? 0 : sei.maxSublayers() - 1; k < sei.maxSublayers(); k++) { for (int i = 0; i < sei.numRefLevels(); i++) {