diff --git a/source/Lib/CommonLib/HRD.h b/source/Lib/CommonLib/HRD.h index 288ec5c6dc93fd7bf021ef6229195da8e5be9b0a..82d40dabafdea7ed29bac44eb0cbd12e6ca10bf5 100644 --- a/source/Lib/CommonLib/HRD.h +++ b/source/Lib/CommonLib/HRD.h @@ -191,9 +191,9 @@ public: const GeneralHrdParams& getGeneralHrdParameters() { return m_generalHrdParams; } void setOlsHrdParameters(int tLayter, OlsHrdParams &olsHrdParam) { m_olsHrdParams[tLayter] = olsHrdParam; } - OlsHrdParams getOlsHrdParameters() { return m_olsHrdParams[0]; } - OlsHrdParams* getOlsHrdParametersAddr() { return &m_olsHrdParams[0]; } - const OlsHrdParams& getOlsHrdParameters() const { return m_olsHrdParams[0]; } + OlsHrdParams getOlsHrdParameters(int idx) { return m_olsHrdParams[idx]; } + OlsHrdParams* getOlsHrdParametersAddr() { return m_olsHrdParams; } + const OlsHrdParams& getOlsHrdParameters(int idx) const { return m_olsHrdParams[idx]; } void setBufferingPeriodSEI(const SEIBufferingPeriod* bp) { bp->copyTo(m_bufferingPeriodSEI); m_bufferingPeriodInitialized = true; } diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp index 1660efa6d7acd65f0ab103721bd1b73ab69aef3b..e6ef5219d886923866c582a775a060d46c8e7aa7 100644 --- a/source/Lib/EncoderLib/EncGOP.cpp +++ b/source/Lib/EncoderLib/EncGOP.cpp @@ -3226,6 +3226,7 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic, } } pcSlice->setPicHeader( pcPic->cs->picHeader ); + pcSlice->setNalUnitLayerId( m_pcEncLib->getLayerId() ); for ( uint32_t ui = 0 ; ui < numSubstreams; ui++ ) { diff --git a/source/Lib/EncoderLib/EncHRD.cpp b/source/Lib/EncoderLib/EncHRD.cpp index c28dc0d4c473e7e1f728ddafd27293bb6de19139..bf3c16f4f55653db540eb369ae8f6b86329cc900 100644 --- a/source/Lib/EncoderLib/EncHRD.cpp +++ b/source/Lib/EncoderLib/EncHRD.cpp @@ -156,11 +156,10 @@ void EncHRD::initHRDParameters(EncCfg* encCfg) for (i = 0; i < MAX_TLAYER; i++) { - OlsHrdParams curOlsHrdParams = olsHrdParams[i]; - - curOlsHrdParams.setFixedPicRateGeneralFlag(1); - curOlsHrdParams.setElementDurationInTcMinus1(0); - curOlsHrdParams.setLowDelayHrdFlag(0); + olsHrdParams[i].setFixedPicRateGeneralFlag(1); + olsHrdParams[i].setFixedPicRateWithinCvsFlag(1); + olsHrdParams[i].setElementDurationInTcMinus1(0); + olsHrdParams[i].setLowDelayHrdFlag(0); //! \todo check for possible PTL violations // BitRate[ i ] = ( bit_rate_value_minus1[ i ] + 1 ) * 2^( 6 + bit_rate_scale ) @@ -180,17 +179,17 @@ void EncHRD::initHRDParameters(EncCfg* encCfg) for (j = 0; j < (m_generalHrdParams.getHrdCpbCntMinus1() + 1); j++) { - curOlsHrdParams.setBitRateValueMinus1(j, 0, (bitrateValue - 1)); - curOlsHrdParams.setCpbSizeValueMinus1(j, 0, (cpbSizeValue - 1)); - curOlsHrdParams.setDuCpbSizeValueMinus1(j, 0, (duCpbSizeValue - 1)); - curOlsHrdParams.setDuBitRateValueMinus1(j, 0, (duBitRateValue - 1)); - curOlsHrdParams.setCbrFlag(j, 0, false); - - curOlsHrdParams.setBitRateValueMinus1(j, 1, (bitrateValue - 1)); - curOlsHrdParams.setCpbSizeValueMinus1(j, 1, (cpbSizeValue - 1)); - curOlsHrdParams.setDuCpbSizeValueMinus1(j, 1, (duCpbSizeValue - 1)); - curOlsHrdParams.setDuBitRateValueMinus1(j, 1, (duBitRateValue - 1)); - curOlsHrdParams.setCbrFlag(j, 1, false); + olsHrdParams[i].setBitRateValueMinus1(j, 0, (bitrateValue - 1)); + olsHrdParams[i].setCpbSizeValueMinus1(j, 0, (cpbSizeValue - 1)); + olsHrdParams[i].setDuCpbSizeValueMinus1(j, 0, (duCpbSizeValue - 1)); + olsHrdParams[i].setDuBitRateValueMinus1(j, 0, (duBitRateValue - 1)); + olsHrdParams[i].setCbrFlag(j, 0, false); + + olsHrdParams[i].setBitRateValueMinus1(j, 1, (bitrateValue - 1)); + olsHrdParams[i].setCpbSizeValueMinus1(j, 1, (cpbSizeValue - 1)); + olsHrdParams[i].setDuCpbSizeValueMinus1(j, 1, (duCpbSizeValue - 1)); + olsHrdParams[i].setDuBitRateValueMinus1(j, 1, (duBitRateValue - 1)); + olsHrdParams[i].setCbrFlag(j, 1, false); } } } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 861b2158cf6de93e5f457249eec04c191f001480..6fdb1a9a3cc8d8d1e038bbf2d321c2094340c7bf 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -1490,8 +1490,12 @@ void EncLib::xInitHrdParameters(SPS &sps) GeneralHrdParams *generalHrdParams = sps.getGeneralHrdParameters(); *generalHrdParams = m_encHRD.getGeneralHrdParameters(); - OlsHrdParams *olsHrdParams = sps.getOlsHrdParameters(); - *olsHrdParams = m_encHRD.getOlsHrdParameters(); + OlsHrdParams *spsOlsHrdParams = sps.getOlsHrdParameters(); + for(int i = 0; i < MAX_TLAYER; i++) + { + *spsOlsHrdParams = m_encHRD.getOlsHrdParameters(i); + spsOlsHrdParams++; + } } void EncLib::xInitPPS(PPS &pps, const SPS &sps)