diff --git a/source/Lib/CommonLib/Picture.cpp b/source/Lib/CommonLib/Picture.cpp index a4d71971e41ba3f0c3687c9c0f49bafcb8e92bbc..4dc8dde95fd5afc733c1063fd2d756393c61bd3d 100644 --- a/source/Lib/CommonLib/Picture.cpp +++ b/source/Lib/CommonLib/Picture.cpp @@ -980,8 +980,11 @@ void Picture::finalInit( const SPS& sps, const PPS& pps, APS** alfApss, APS* lmc memcpy(cs->alfApss, alfApss, sizeof(cs->alfApss)); cs->lmcsAps = lmcsAps; cs->scalinglistAps = scalingListAps; - cs->pcv = pps.pcv; + m_conformanceWindow = pps.getConformanceWindow(); +#if JVET_P0590_SCALING_WINDOW + m_scalingWindow = pps.getScalingWindow(); +#endif brickMap = new BrickMap; brickMap->create( sps, pps ); diff --git a/source/Lib/CommonLib/Picture.h b/source/Lib/CommonLib/Picture.h index bcb8016eedeffbe6b60a9d802f6048fa6b0f9e2a..22f700b3d4ee2a4ca19f1b3c2f002dd178a8e4bf 100644 --- a/source/Lib/CommonLib/Picture.h +++ b/source/Lib/CommonLib/Picture.h @@ -294,6 +294,12 @@ struct Picture : public UnitArea static void rescalePicture(const CPelUnitBuf& beforeScaling, const Window& confBefore, const PelUnitBuf& afterScaling, const Window& confAfter, const ChromaFormat chromaFormatIDC, const BitDepths& bitDepths, const bool useLumaFilter, const bool downsampling = false); #endif +private: + Window m_conformanceWindow; +#if JVET_P0590_SCALING_WINDOW + Window m_scalingWindow; +#endif + public: bool m_bIsBorderExtended; bool referenced; @@ -333,25 +339,13 @@ public: std::deque<Slice*> slices; SEIMessages SEIs; - uint32_t m_picWidthInLumaSamples; - uint32_t m_picHeightInLumaSamples; - Window m_conformanceWindow; -#if JVET_P0590_SCALING_WINDOW - Window m_scalingWindow; -#endif - - void setPicWidthInLumaSamples( uint32_t u ) { m_picWidthInLumaSamples = u; } - uint32_t getPicWidthInLumaSamples() const { return m_picWidthInLumaSamples; } - void setPicHeightInLumaSamples( uint32_t u ) { m_picHeightInLumaSamples = u; } - uint32_t getPicHeightInLumaSamples() const { return m_picHeightInLumaSamples; } - + uint32_t getPicWidthInLumaSamples() const { return getRecoBuf( COMPONENT_Y ).width; } + uint32_t getPicHeightInLumaSamples() const { return getRecoBuf( COMPONENT_Y ).height; } Window& getConformanceWindow() { return m_conformanceWindow; } const Window& getConformanceWindow() const { return m_conformanceWindow; } - void setConformanceWindow( Window& conformanceWindow ) { m_conformanceWindow = conformanceWindow; } #if JVET_P0590_SCALING_WINDOW Window& getScalingWindow() { return m_scalingWindow; } const Window& getScalingWindow() const { return m_scalingWindow; } - void setScalingWindow( Window& scalingWindow ) { m_scalingWindow = scalingWindow; } #endif void allocateNewSlice(); diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index be9d09433d94751bcd747df4f5e0cb0249b4289f..4130aa2a8fc3ca3e6f13be9110407757ce78a7d5 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -923,15 +923,6 @@ void DecLib::xActivateParameterSets() m_pcPic->cs->sps = sps; m_pcPic->cs->pps = pps; - Window confWin = pps->getConformanceWindow( ); - m_pcPic->setPicWidthInLumaSamples( pps->getPicWidthInLumaSamples() ); - m_pcPic->setPicHeightInLumaSamples( pps->getPicHeightInLumaSamples() ); - m_pcPic->setConformanceWindow( confWin ); -#if JVET_P0590_SCALING_WINDOW - Window scalingWindow = pps->getScalingWindow(); - m_pcPic->setScalingWindow( scalingWindow ); -#endif - memcpy(m_pcPic->cs->alfApss, apss, sizeof(m_pcPic->cs->alfApss)); m_pcPic->cs->lmcsAps = lmcsAPS; m_pcPic->cs->scalinglistAps = scalinglistAPS; diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 4b73c7809a22532a9582a31102718f9009f85e21..72e9b7f22f579b20f1af2a118aca05ae67ce5131 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -584,15 +584,6 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* cPicYuvTru const PPS *pps = m_ppsMap.getPS(2); const SPS *sps = m_spsMap.getPS(pps->getSPSId()); - Window confWin = pps->getConformanceWindow( ); - picCurr->setPicWidthInLumaSamples( pps->getPicWidthInLumaSamples() ); - picCurr->setPicHeightInLumaSamples( pps->getPicHeightInLumaSamples() ); - picCurr->setConformanceWindow( confWin ); -#if JVET_P0590_SCALING_WINDOW - Window scalingWindow = pps->getScalingWindow(); - picCurr->setScalingWindow( scalingWindow ); -#endif - picCurr->M_BUFS(0, PIC_ORIGINAL).copyFrom(m_cGOPEncoder.getPicBg()->getRecoBuf()); picCurr->finalInit( *sps, *pps, m_apss, m_lmcsAPS, m_scalinglistAPS ); picCurr->poc = m_iPOCLast - 1; @@ -653,15 +644,6 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* cPicYuvTru const PPS *pPPS=(ppsID<0) ? m_ppsMap.getFirstPS() : m_ppsMap.getPS(ppsID); const SPS *pSPS=m_spsMap.getPS(pPPS->getSPSId()); - Window confWin = pPPS->getConformanceWindow( ); - pcPicCurr->setPicWidthInLumaSamples( pPPS->getPicWidthInLumaSamples() ); - pcPicCurr->setPicHeightInLumaSamples( pPPS->getPicHeightInLumaSamples() ); - pcPicCurr->setConformanceWindow( confWin ); -#if JVET_P0590_SCALING_WINDOW - Window scalingWindow = pPPS->getScalingWindow(); - pcPicCurr->setScalingWindow( scalingWindow ); -#endif - if( m_rprEnabled ) { pcPicCurr->M_BUFS( 0, PIC_ORIGINAL_INPUT ).getBuf( COMPONENT_Y ).copyFrom( pcPicYuvOrg->getBuf( COMPONENT_Y ) ); @@ -824,15 +806,7 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* pcPicYuvTr int ppsID=-1; // Use default PPS ID const PPS *pPPS=(ppsID<0) ? m_ppsMap.getFirstPS() : m_ppsMap.getPS(ppsID); const SPS *pSPS=m_spsMap.getPS(pPPS->getSPSId()); - Window confWin = pPPS->getConformanceWindow( ); - pcField->setPicWidthInLumaSamples( pPPS->getPicWidthInLumaSamples() ); - pcField->setPicHeightInLumaSamples( pPPS->getPicHeightInLumaSamples() ); - pcField->setConformanceWindow( confWin ); -#if JVET_P0590_SCALING_WINDOW - Window scalingWindow = pPPS->getScalingWindow(); - pcField->setScalingWindow( scalingWindow ); -#endif - + pcField->finalInit( *pSPS, *pPPS, m_apss, m_lmcsAPS, m_scalinglistAPS ); }