From da9e1e514b510383da75d558ea6956087d462b50 Mon Sep 17 00:00:00 2001 From: Kammachi Sreedhar <kashyap.kammachi-sreedhar@nokia.com> Date: Wed, 21 Oct 2020 10:29:47 +0300 Subject: [PATCH] targetOLS index in VPS bug fix --- source/App/DecoderApp/DecApp.cpp | 8 -------- source/App/DecoderApp/DecAppCfg.cpp | 23 ++++++++++++++--------- source/App/EncoderApp/EncApp.cpp | 15 +++++++++++++-- source/App/EncoderApp/EncAppCfg.cpp | 4 ++-- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/source/App/DecoderApp/DecApp.cpp b/source/App/DecoderApp/DecApp.cpp index bcd545e28f..95d01efe9a 100644 --- a/source/App/DecoderApp/DecApp.cpp +++ b/source/App/DecoderApp/DecApp.cpp @@ -148,14 +148,6 @@ uint32_t DecApp::decode() }; #if JVET_S0163_ON_TARGETOLS_SUBLAYERS - if (!m_mTidExternalSet) - { - m_iMaxTemporalLayer = -1; - } - if (!m_tOlsIdxTidExternalSet) - { - m_targetOlsIdx = -1; - } m_cDecLib.setHTidExternalSetFlag(m_mTidExternalSet); m_cDecLib.setTOlsIdxExternalFlag(m_tOlsIdxTidExternalSet); #endif diff --git a/source/App/DecoderApp/DecAppCfg.cpp b/source/App/DecoderApp/DecAppCfg.cpp index 5d68489d9a..d96c20493f 100644 --- a/source/App/DecoderApp/DecAppCfg.cpp +++ b/source/App/DecoderApp/DecAppCfg.cpp @@ -89,8 +89,8 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] ) ("OutputBitDepthC,d", m_outputBitDepth[CHANNEL_TYPE_CHROMA], 0, "bit depth of YUV output chroma component (default: use luma output bit-depth)") ("OutputColourSpaceConvert", outputColourSpaceConvert, string(""), "Colour space conversion to apply to input 444 video. Permitted values are (empty string=UNCHANGED) " + getListOfColourSpaceConverts(false)) #if JVET_S0163_ON_TARGETOLS_SUBLAYERS - ("MaxTemporalLayer,t", m_iMaxTemporalLayer, MAX_INT, "Maximum Temporal Layer to be decoded. -1 to decode all layers") - ("TargetOutputLayerSet,p", m_targetOlsIdx, MAX_INT, "Target output layer set index") + ("MaxTemporalLayer,t", m_iMaxTemporalLayer, 500, "Maximum Temporal Layer to be decoded. -1 to decode all layers") + ("TargetOutputLayerSet,p", m_targetOlsIdx, 500, "Target output layer set index") #else ("MaxTemporalLayer,t", m_iMaxTemporalLayer, -1, "Maximum Temporal Layer to be decoded. -1 to decode all layers") ("TargetOutputLayerSet,p", m_targetOlsIdx, -1, "Target output layer set index") @@ -226,14 +226,22 @@ bool DecAppCfg::parseCfg( int argc, char* argv[] ) } } #if JVET_S0163_ON_TARGETOLS_SUBLAYERS - if (m_iMaxTemporalLayer != MAX_INT) + if (m_iMaxTemporalLayer != 500) { m_mTidExternalSet = true; } - if ( m_targetOlsIdx != MAX_INT) + else + { + m_iMaxTemporalLayer = -1; + } + if ( m_targetOlsIdx != 500) { m_tOlsIdxTidExternalSet = true; } + else + { + m_targetOlsIdx = -1; + } #endif return true; } @@ -246,14 +254,11 @@ DecAppCfg::DecAppCfg() , m_iSkipFrame(0) // m_outputBitDepth array initialised below , m_outputColourSpaceConvert(IPCOLOURSPACE_UNCHANGED) +, m_targetOlsIdx(0) +, m_iMaxTemporalLayer(-1) #if JVET_S0163_ON_TARGETOLS_SUBLAYERS -, m_targetOlsIdx(MAX_INT) -, m_iMaxTemporalLayer(MAX_INT) , m_mTidExternalSet(false) , m_tOlsIdxTidExternalSet(false) -#else -, m_targetOlsIdx(0) -, m_iMaxTemporalLayer(-1) #endif , m_decodedPictureHashSEIEnabled(0) , m_decodedNoDisplaySEIEnabled(false) diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index c811573fe1..160d2265be 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -76,7 +76,18 @@ EncApp::~EncApp() void EncApp::xInitLibCfg() { VPS& vps = *m_cEncLib.getVPS(); +#if JVET_S0163_ON_TARGETOLS_SUBLAYERS + if (m_targetOlsIdx != 500) + { + vps.m_targetOlsIdx = m_targetOlsIdx; + } + else + { + vps.m_targetOlsIdx = -1; + } +#else vps.m_targetOlsIdx = m_targetOlsIdx; +#endif vps.setMaxLayers( m_maxLayers ); @@ -1054,11 +1065,11 @@ void EncApp::xInitLibCfg() m_cEncLib.setOPIEnabled ( m_OPIEnabled ); if (m_OPIEnabled) { - if (m_maxTemporalLayer != MAX_INT) + if (m_maxTemporalLayer != 500) { m_cEncLib.setHtidPlus1 ( m_maxTemporalLayer + 1); } - if (m_targetOlsIdx != MAX_INT) + if (m_targetOlsIdx != 500) { m_cEncLib.setTargetOlsIdx (m_targetOlsIdx); } diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 5d58f0e44c..d5036105b2 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -1386,8 +1386,8 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ( "MaxLayers", m_maxLayers, 1, "Max number of layers" ) #if JVET_S0163_ON_TARGETOLS_SUBLAYERS ( "EnableOperatingPointInformation", m_OPIEnabled, false, "Enables writing of Operating Point Information (OPI)" ) - ( "MaxTemporalLayer", m_maxTemporalLayer, MAX_INT, "Maximum temporal layer to be signalled in OPI" ) - ( "TargetOutputLayerSet", m_targetOlsIdx, MAX_INT, "Target output layer set index to be signalled in OPI" ) + ( "MaxTemporalLayer", m_maxTemporalLayer, 500, "Maximum temporal layer to be signalled in OPI" ) + ( "TargetOutputLayerSet", m_targetOlsIdx, 500, "Target output layer set index to be signalled in OPI" ) #else ( "TargetOutputLayerSet,p", m_targetOlsIdx, -1, "Target output layer set index" ) #endif -- GitLab