From a022d68f48ae0c2e1a506c0a33f87d99a8da9efa Mon Sep 17 00:00:00 2001 From: Dominik Mehlem <dmehlem@apple.com> Date: Fri, 9 Aug 2019 14:11:51 -0700 Subject: [PATCH] Made the code compliant with the softwares style guidelines --- source/App/EncoderApp/EncApp.cpp | 14 +- source/App/EncoderApp/EncApp.h | 6 +- source/App/EncoderApp/encmain.cpp | 20 +-- source/Lib/EncoderLib/Analyze.h | 39 +++-- source/Lib/EncoderLib/EncCfg.h | 48 +++--- source/Lib/EncoderLib/EncGOP.cpp | 271 +++++++++++++++--------------- source/Lib/EncoderLib/EncGOP.h | 20 ++- source/Lib/EncoderLib/EncLib.cpp | 6 +- source/Lib/EncoderLib/EncLib.h | 9 +- 9 files changed, 228 insertions(+), 205 deletions(-) diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index 5b32d68e6..e7193f225 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -612,16 +612,18 @@ void EncApp::xInitLibCfg() m_cEncLib.setReshapeCW ( m_reshapeCW ); #if JVET_O0756_CALCULATE_HDRMETRICS - for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) { + for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) + { m_cEncLib.setWhitePointDeltaE (i, m_whitePointDeltaE[i] ); } m_cEncLib.setMaxSampleValue (m_maxSampleValue); m_cEncLib.setSampleRange (m_sampleRange); m_cEncLib.setColorPrimaries (m_colorPrimaries); m_cEncLib.setEnableTFunctionLUT (m_enableTFunctionLUT); - for (int i=0; i<2; i++) { - m_cEncLib.setChromaLocation (i, m_chromaLocation); - m_cEncLib.setChromaUPFilter (m_chromaUPFilter); + for (int i=0; i<2; i++) + { + m_cEncLib.setChromaLocation (i, m_chromaLocation); + m_cEncLib.setChromaUPFilter (m_chromaUPFilter); } m_cEncLib.setCropOffsetLeft (m_cropOffsetLeft); m_cEncLib.setCropOffsetTop (m_cropOffsetTop); @@ -766,7 +768,7 @@ void EncApp::encode() m_cEncLib.encode( bEos, flush ? 0 : &orgPic, flush ? 0 : &trueOrgPic, snrCSC, recBufList, iNumEncoded, m_isTopFieldFirst ); #if JVET_O0756_CALCULATE_HDRMETRICS - m_metricTime = m_cEncLib.m_metricTime; + m_metricTime = m_cEncLib.getMetricTime(); #endif } else @@ -774,7 +776,7 @@ void EncApp::encode() m_cEncLib.encode( bEos, flush ? 0 : &orgPic, flush ? 0 : &trueOrgPic, snrCSC, recBufList, iNumEncoded ); #if JVET_O0756_CALCULATE_HDRMETRICS - m_metricTime = m_cEncLib.m_metricTime; + m_metricTime = m_cEncLib.getMetricTime(); #endif } diff --git a/source/App/EncoderApp/EncApp.h b/source/App/EncoderApp/EncApp.h index 2f6812885..17bf61a62 100644 --- a/source/App/EncoderApp/EncApp.h +++ b/source/App/EncoderApp/EncApp.h @@ -69,7 +69,6 @@ private: uint32_t m_essentialBytes; uint32_t m_totalBytes; fstream m_bitstream; -public: #if JVET_O0756_CALCULATE_HDRMETRICS std::chrono::duration<long long, ratio<1, 1000000000>> m_metricTime; #endif @@ -96,6 +95,11 @@ public: void encode(); ///< main encoding function void outputAU( const AccessUnit& au ); + +#if JVET_O0756_CALCULATE_HDRMETRICS + std::chrono::duration<long long, ratio<1, 1000000000>> getMetricTime() const { return m_metricTime; }; +#endif + };// END CLASS DEFINITION EncApp diff --git a/source/App/EncoderApp/encmain.cpp b/source/App/EncoderApp/encmain.cpp index b53a822e7..11b0ab78d 100644 --- a/source/App/EncoderApp/encmain.cpp +++ b/source/App/EncoderApp/encmain.cpp @@ -169,12 +169,12 @@ int main(int argc, char* argv[]) auto endTime = std::chrono::steady_clock::now(); std::time_t endTime2 = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); #if JVET_O0756_CALCULATE_HDRMETRICS - auto metricTime = pcEncApp->m_metricTime; - auto totalTime = std::chrono::duration_cast<std::chrono::milliseconds>( endTime- startTime ).count(); - auto encTime = std::chrono::duration_cast<std::chrono::milliseconds>( endTime- startTime - metricTime ).count(); + auto metricTime = pcEncApp->getMetricTime(); + auto totalTime = std::chrono::duration_cast<std::chrono::milliseconds>( endTime - startTime ).count(); + auto encTime = std::chrono::duration_cast<std::chrono::milliseconds>( endTime - startTime - metricTime ).count(); auto metricTimeuser = std::chrono::duration_cast<std::chrono::milliseconds>( metricTime ).count(); #else - auto encTime = std::chrono::duration_cast<std::chrono::milliseconds>( endTime- startTime).count(); + auto encTime = std::chrono::duration_cast<std::chrono::milliseconds>( endTime - startTime).count(); #endif // destroy application encoder class pcEncApp->destroy(); @@ -183,17 +183,17 @@ int main(int argc, char* argv[]) printf( "\n finished @ %s", std::ctime(&endTime2) ); - #if JVET_O0756_CALCULATE_HDRMETRICS - printf(" Encoding Time(Total Time): %12.3f(%12.3f) sec. [user] %12.3f(%12.3f) sec. [elapsed]\n", +#if JVET_O0756_CALCULATE_HDRMETRICS + printf(" Encoding Time (Total Time): %12.3f ( %12.3f ) sec. [user] %12.3f ( %12.3f ) sec. [elapsed]\n", ((endClock - startClock) * 1.0 / CLOCKS_PER_SEC) - (metricTimeuser/1000.0), (endClock - startClock) * 1.0 / CLOCKS_PER_SEC, - totalTime / 1000.0, - encTime / 1000.0); - #else + encTime / 1000.0, + totalTime / 1000.0); +#else printf(" Total Time: %12.3f sec. [user] %12.3f sec. [elapsed]\n", (endClock - startClock) * 1.0 / CLOCKS_PER_SEC, encTime / 1000.0); - #endif +#endif return 0; } diff --git a/source/Lib/EncoderLib/Analyze.h b/source/Lib/EncoderLib/Analyze.h index fce136162..393f2a1ab 100644 --- a/source/Lib/EncoderLib/Analyze.h +++ b/source/Lib/EncoderLib/Analyze.h @@ -73,8 +73,8 @@ private: TExt360EncAnalyze m_ext360; #endif #if JVET_O0756_CALCULATE_HDRMETRICS - double m_dLogDeltaESum[hdrtoolslib::NB_REF_WHITE]; - double m_dPSNRLSum[hdrtoolslib::NB_REF_WHITE]; + double m_logDeltaESum[hdrtoolslib::NB_REF_WHITE]; + double m_psnrLSum[hdrtoolslib::NB_REF_WHITE]; #endif public: @@ -101,8 +101,8 @@ public: #endif double getPsnr(ComponentID compID) const { return m_dPSNRSum[compID]; } #if JVET_O0756_CALCULATE_HDRMETRICS - double getDeltaE() const { return m_dLogDeltaESum[0]; } - double getPSNRL() const { return m_dPSNRLSum[0]; } + double getDeltaE() const { return m_logDeltaESum[0]; } + double getPsnrL() const { return m_psnrLSum[0]; } #endif double getBits() const { return m_dAddBits; } void setBits(double numBits) { m_dAddBits = numBits; } @@ -111,10 +111,12 @@ public: TExt360EncAnalyze& getExt360Info() { return m_ext360; } #endif #if JVET_O0756_CALCULATE_HDRMETRICS - void addHDRMetricsResult(double dDeltaE[hdrtoolslib::NB_REF_WHITE], double dPSNRL[hdrtoolslib::NB_REF_WHITE]){ - for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) { - m_dLogDeltaESum[i] += dDeltaE[i]; - m_dPSNRLSum[i] += dPSNRL[i]; + void addHDRMetricsResult(double deltaE[hdrtoolslib::NB_REF_WHITE], double psnrL[hdrtoolslib::NB_REF_WHITE]) + { + for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) + { + m_logDeltaESum[i] += deltaE[i]; + m_psnrLSum[i] += psnrL[i]; } } #endif @@ -133,9 +135,10 @@ public: m_ext360.clear(); #endif #if JVET_O0756_CALCULATE_HDRMETRICS - for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) { - m_dLogDeltaESum[i] = 0.0; - m_dPSNRLSum[i] = 0.0; + for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) + { + m_logDeltaESum[i] = 0.0; + m_psnrLSum[i] = 0.0; } #endif } @@ -432,9 +435,10 @@ public: #endif msg( e_msg_level, "\tTotal Frames | " "Bitrate " "Y-PSNR " "U-PSNR " "V-PSNR " "YUV-PSNR " ); #if JVET_O0756_CALCULATE_HDRMETRICS - if(!useWPSNR){ - msg(e_msg_level, "DeltaE " "PSNRL "); - } + if(!useWPSNR) + { + msg(e_msg_level, "DeltaE " "PSNRL "); + } #endif #if EXTENSION_360_VIDEO m_ext360.printHeader(e_msg_level); @@ -472,9 +476,10 @@ public: getPsnr(COMPONENT_Cr) / (double)getNumPic(), PSNRyuv ); #if JVET_O0756_CALCULATE_HDRMETRICS - if(!useWPSNR){ - msg( e_msg_level, " %8.4lf " "%8.4lf ", getDeltaE()/(double)getNumPic(), getPSNRL()/(double)getNumPic()); - } + if(!useWPSNR) + { + msg( e_msg_level, " %8.4lf " "%8.4lf ", getDeltaE()/(double)getNumPic(), getPsnrL()/(double)getNumPic()); + } #endif #if EXTENSION_360_VIDEO diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index c4359b09c..f4a21b157 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -1641,30 +1641,30 @@ public: bool getUseALF() const { return m_alf; } #if JVET_O0756_CALCULATE_HDRMETRICS - void setWhitePointDeltaE( uint32_t uiIndex, double dValue ) { m_whitePointDeltaE[ uiIndex ] = dValue; } - double getWhitePointDeltaE( uint32_t uiIndex ) const { return m_whitePointDeltaE[ uiIndex ]; } - void setMaxSampleValue(double dValue) { m_maxSampleValue = dValue;} - double getMaxSampleValue() const { return m_maxSampleValue;} - void setSampleRange(int iValue) { m_sampleRange = static_cast<hdrtoolslib::SampleRange>(iValue);} - hdrtoolslib::SampleRange getSampleRange() const { return m_sampleRange;} - void setColorPrimaries(int iValue) { m_colorPrimaries = static_cast<hdrtoolslib::ColorPrimaries>(iValue);} - hdrtoolslib::ColorPrimaries getColorPrimaries() const { return m_colorPrimaries;} - void setEnableTFunctionLUT(bool bValue) { m_enableTFunctionLUT = bValue;} - bool getEnableTFunctionLUT() const { return m_enableTFunctionLUT;} - void setChromaLocation(uint32_t uiIndex, int iValue) { m_chromaLocation[ uiIndex ] = static_cast<hdrtoolslib::ChromaLocation>(iValue);} - hdrtoolslib::ChromaLocation getChromaLocation(uint32_t uiIndex) const { return m_chromaLocation[uiIndex];} - void setChromaUPFilter(int iValue) { m_chromaUPFilter = iValue;} - int getChromaUPFilter() const { return m_chromaUPFilter;} - void setCropOffsetLeft(int iValue) { m_cropOffsetLeft = iValue;} - int getCropOffsetLeft() const { return m_cropOffsetLeft;} - void setCropOffsetTop(int iValue) { m_cropOffsetTop = iValue;} - int getCropOffsetTop() const { return m_cropOffsetTop;} - void setCropOffsetRight(int iValue) { m_cropOffsetRight = iValue;} - int getCropOffsetRight() const { return m_cropOffsetRight;} - void setCropOffsetBottom(int iValue) { m_cropOffsetBottom = iValue;} - int getCropOffsetBottom() const { return m_cropOffsetBottom;} - void setCalculateHdrMetrics(bool bValue) { m_calculateHdrMetrics = bValue;} - bool getCalcluateHdrMetrics() const { return m_calculateHdrMetrics;} + void setWhitePointDeltaE( uint32_t index, double value ) { m_whitePointDeltaE[ index ] = value; } + double getWhitePointDeltaE( uint32_t index ) const { return m_whitePointDeltaE[ index ]; } + void setMaxSampleValue(double value) { m_maxSampleValue = value;} + double getMaxSampleValue() const { return m_maxSampleValue;} + void setSampleRange(int value) { m_sampleRange = static_cast<hdrtoolslib::SampleRange>(value);} + hdrtoolslib::SampleRange getSampleRange() const { return m_sampleRange;} + void setColorPrimaries(int value) { m_colorPrimaries = static_cast<hdrtoolslib::ColorPrimaries>(value);} + hdrtoolslib::ColorPrimaries getColorPrimaries() const { return m_colorPrimaries;} + void setEnableTFunctionLUT(bool value) { m_enableTFunctionLUT = value;} + bool getEnableTFunctionLUT() const { return m_enableTFunctionLUT;} + void setChromaLocation(uint32_t index, int value) { m_chromaLocation[ index ] = static_cast<hdrtoolslib::ChromaLocation>(value);} + hdrtoolslib::ChromaLocation getChromaLocation(uint32_t index) const { return m_chromaLocation[index];} + void setChromaUPFilter(int value) { m_chromaUPFilter = value;} + int getChromaUPFilter() const { return m_chromaUPFilter;} + void setCropOffsetLeft(int value) { m_cropOffsetLeft = value;} + int getCropOffsetLeft() const { return m_cropOffsetLeft;} + void setCropOffsetTop(int value) { m_cropOffsetTop = value;} + int getCropOffsetTop() const { return m_cropOffsetTop;} + void setCropOffsetRight(int value) { m_cropOffsetRight = value;} + int getCropOffsetRight() const { return m_cropOffsetRight;} + void setCropOffsetBottom(int value) { m_cropOffsetBottom = value;} + int getCropOffsetBottom() const { return m_cropOffsetBottom;} + void setCalculateHdrMetrics(bool value) { m_calculateHdrMetrics = value;} + bool getCalcluateHdrMetrics() const { return m_calculateHdrMetrics;} #endif }; diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp index 944e70e8e..4245dd42b 100644 --- a/source/Lib/EncoderLib/EncGOP.cpp +++ b/source/Lib/EncoderLib/EncGOP.cpp @@ -110,21 +110,19 @@ EncGOP::EncGOP() #endif #if JVET_O0756_CALCULATE_HDRMETRICS + m_ppcFrameOrg = nullptr; + m_ppcFrameRec = nullptr; - m_ppcFrameOrg = NULL; - m_ppcFrameRec = NULL; + m_pcConvertFormat = nullptr; + m_pcConvertIQuantize = nullptr; + m_pcColorTransform = nullptr; + m_pcDistortionDeltaE = nullptr; + m_pcTransferFct = nullptr; - m_pcConvertFormat = NULL; - m_pcConvertIQuantize = NULL; - m_pcColorTransform = NULL; - m_pcDistortionDeltaE = NULL; - m_pcTransferFct = NULL; - - m_pcColorTransformParams = NULL; - m_pcFrameFormat = NULL; + m_pcColorTransformParams = nullptr; + m_pcFrameFormat = nullptr; m_metricTime = std::chrono::milliseconds(0); - #endif m_bInitAMaxBT = true; @@ -145,30 +143,26 @@ EncGOP::~EncGOP() tryDecodePicture( NULL, 0, std::string("") ); } #if JVET_O0756_CALCULATE_HDRMETRICS - delete [] m_ppcFrameOrg; delete [] m_ppcFrameRec; - m_ppcFrameOrg = m_ppcFrameRec = NULL; + m_ppcFrameOrg = m_ppcFrameRec = nullptr; delete m_pcConvertFormat; delete m_pcConvertIQuantize; delete m_pcColorTransform; delete m_pcDistortionDeltaE; delete m_pcTransferFct; - - m_pcConvertFormat = NULL; - m_pcConvertIQuantize = NULL; - m_pcColorTransform = NULL; - m_pcDistortionDeltaE = NULL; - m_pcTransferFct = NULL; - delete m_pcColorTransformParams; delete m_pcFrameFormat; - m_pcColorTransformParams = NULL; - m_pcFrameFormat = NULL; - + m_pcConvertFormat = nullptr; + m_pcConvertIQuantize = nullptr; + m_pcColorTransform = nullptr; + m_pcDistortionDeltaE = nullptr; + m_pcTransferFct = nullptr; + m_pcColorTransformParams = nullptr; + m_pcFrameFormat = nullptr; #endif } @@ -244,63 +238,67 @@ void EncGOP::init ( EncLib* pcEncLib ) #if JVET_O0756_CALCULATE_HDRMETRICS const bool calculateHdrMetrics = m_pcEncLib->getCalcluateHdrMetrics(); - if(calculateHdrMetrics){ - //allocate frame buffers and initialize class members - int chainNumber = 5; - - m_ppcFrameOrg = new hdrtoolslib::Frame* [chainNumber]; - m_ppcFrameRec = new hdrtoolslib::Frame* [chainNumber]; - - double* whitePointDeltaE = new double[hdrtoolslib::NB_REF_WHITE]; - for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) { - whitePointDeltaE[i] = m_pcCfg->getWhitePointDeltaE(i); - } - double dMaxSampleValue = m_pcCfg->getMaxSampleValue(); - hdrtoolslib::SampleRange sampleRange = m_pcCfg->getSampleRange(); - hdrtoolslib::ChromaFormat chFmt = hdrtoolslib::ChromaFormat(m_pcCfg->getChromaFormatIdc()); - int iBitDepth = m_pcCfg->getBitDepth(CHANNEL_TYPE_LUMA); - hdrtoolslib::ColorPrimaries colorPrimaries = m_pcCfg->getColorPrimaries(); - bool bEnableTFunctionLUT = m_pcCfg->getEnableTFunctionLUT(); - hdrtoolslib::ChromaLocation* chromaLocation = new hdrtoolslib::ChromaLocation[2]; - for (int i=0; i<2; i++) { - chromaLocation[i] = m_pcCfg->getChromaLocation(i); - } - int iChromaUpFilter = m_pcCfg->getChromaUPFilter(); - int cropOffsetLeft = m_pcCfg->getCropOffsetLeft(); - int cropOffsetTop = m_pcCfg->getCropOffsetTop(); - int cropOffsetRight = m_pcCfg->getCropOffsetRight(); - int cropOffsetBottom = m_pcCfg->getCropOffsetBottom(); - - int iWidth = m_pcCfg->getSourceWidth() - cropOffsetLeft + cropOffsetRight; - int iHeight = m_pcCfg->getSourceHeight() - cropOffsetTop + cropOffsetBottom; - - m_ppcFrameOrg[0] = new hdrtoolslib::Frame(iWidth, iHeight, false, hdrtoolslib::CM_YCbCr, colorPrimaries, chFmt, sampleRange, iBitDepth, false, hdrtoolslib::TF_PQ, 0); - m_ppcFrameRec[0] = new hdrtoolslib::Frame(iWidth, iHeight, false, hdrtoolslib::CM_YCbCr, colorPrimaries, chFmt, sampleRange, iBitDepth, false, hdrtoolslib::TF_PQ, 0); // Orginal & Reconstructed 4:2:0 - - m_ppcFrameOrg[1] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], false, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, sampleRange, iBitDepth, false, hdrtoolslib::TF_PQ, 0); - m_ppcFrameRec[1] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], false, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, sampleRange, iBitDepth, false, hdrtoolslib::TF_PQ, 0); // 420 to 444 conversion - - m_ppcFrameOrg[2] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); - m_ppcFrameRec[2] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); // 444 to Float conversion - - m_ppcFrameOrg[3] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); - m_ppcFrameRec[3] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); // YCbCr to RGB conversion - - m_ppcFrameOrg[4] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_NULL, 0); - m_ppcFrameRec[4] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_NULL, 0); // Inverse Transfer Function - - m_pcFrameFormat = new hdrtoolslib::FrameFormat(); - m_pcFrameFormat->m_isFloat = true; - m_pcFrameFormat->m_chromaFormat = hdrtoolslib::CF_UNKNOWN; - m_pcFrameFormat->m_colorSpace = hdrtoolslib::CM_RGB; - m_pcFrameFormat->m_colorPrimaries = hdrtoolslib::CP_2020; - m_pcFrameFormat->m_sampleRange = hdrtoolslib::SR_UNKNOWN; - - m_pcConvertFormat = hdrtoolslib::ConvertColorFormat::create(iWidth, iHeight, chFmt, hdrtoolslib::CF_444, iChromaUpFilter, chromaLocation, chromaLocation); - m_pcConvertIQuantize = hdrtoolslib::Convert::create(&m_ppcFrameOrg[1]->m_format, &m_ppcFrameOrg[2]->m_format); - m_pcColorTransform = hdrtoolslib::ColorTransform::create(m_ppcFrameOrg[2]->m_colorSpace, m_ppcFrameOrg[2]->m_colorPrimaries, m_ppcFrameOrg[3]->m_colorSpace, m_ppcFrameOrg[3]->m_colorPrimaries, true, 1); - m_pcDistortionDeltaE = new hdrtoolslib::DistortionMetricDeltaE(m_pcFrameFormat, false, dMaxSampleValue, whitePointDeltaE, 1); - m_pcTransferFct = hdrtoolslib::TransferFunction::create(hdrtoolslib::TF_PQ, true, (float) dMaxSampleValue, 0, 0.0, 1.0, bEnableTFunctionLUT); + if(calculateHdrMetrics) + { + //allocate frame buffers and initialize class members + int chainNumber = 5; + + m_ppcFrameOrg = new hdrtoolslib::Frame* [chainNumber]; + m_ppcFrameRec = new hdrtoolslib::Frame* [chainNumber]; + + double* whitePointDeltaE = new double[hdrtoolslib::NB_REF_WHITE]; + for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) + { + whitePointDeltaE[i] = m_pcCfg->getWhitePointDeltaE(i); + } + + double maxSampleValue = m_pcCfg->getMaxSampleValue(); + hdrtoolslib::SampleRange sampleRange = m_pcCfg->getSampleRange(); + hdrtoolslib::ChromaFormat chFmt = hdrtoolslib::ChromaFormat(m_pcCfg->getChromaFormatIdc()); + int bitDepth = m_pcCfg->getBitDepth(CHANNEL_TYPE_LUMA); + hdrtoolslib::ColorPrimaries colorPrimaries = m_pcCfg->getColorPrimaries(); + bool enableTFunctionLUT = m_pcCfg->getEnableTFunctionLUT(); + hdrtoolslib::ChromaLocation* chromaLocation = new hdrtoolslib::ChromaLocation[2]; + for (int i=0; i<2; i++) + { + chromaLocation[i] = m_pcCfg->getChromaLocation(i); + } + int chromaUpFilter = m_pcCfg->getChromaUPFilter(); + int cropOffsetLeft = m_pcCfg->getCropOffsetLeft(); + int cropOffsetTop = m_pcCfg->getCropOffsetTop(); + int cropOffsetRight = m_pcCfg->getCropOffsetRight(); + int cropOffsetBottom = m_pcCfg->getCropOffsetBottom(); + + int width = m_pcCfg->getSourceWidth() - cropOffsetLeft + cropOffsetRight; + int height = m_pcCfg->getSourceHeight() - cropOffsetTop + cropOffsetBottom; + + m_ppcFrameOrg[0] = new hdrtoolslib::Frame(width, height, false, hdrtoolslib::CM_YCbCr, colorPrimaries, chFmt, sampleRange, bitDepth, false, hdrtoolslib::TF_PQ, 0); + m_ppcFrameRec[0] = new hdrtoolslib::Frame(width, height, false, hdrtoolslib::CM_YCbCr, colorPrimaries, chFmt, sampleRange, bitDepth, false, hdrtoolslib::TF_PQ, 0); + + m_ppcFrameOrg[1] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], false, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, sampleRange, bitDepth, false, hdrtoolslib::TF_PQ, 0); + m_ppcFrameRec[1] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], false, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, sampleRange, bitDepth, false, hdrtoolslib::TF_PQ, 0); // 420 to 444 conversion + + m_ppcFrameOrg[2] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); + m_ppcFrameRec[2] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_YCbCr, colorPrimaries, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); // 444 to Float conversion + + m_ppcFrameOrg[3] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); + m_ppcFrameRec[3] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_PQ, 0); // YCbCr to RGB conversion + + m_ppcFrameOrg[4] = new hdrtoolslib::Frame(m_ppcFrameOrg[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameOrg[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_NULL, 0); + m_ppcFrameRec[4] = new hdrtoolslib::Frame(m_ppcFrameRec[0]->m_width[hdrtoolslib::Y_COMP], m_ppcFrameRec[0]->m_height[hdrtoolslib::Y_COMP], true, hdrtoolslib::CM_RGB, hdrtoolslib::CP_2020, hdrtoolslib::CF_444, hdrtoolslib::SR_UNKNOWN, 32, false, hdrtoolslib::TF_NULL, 0); // Inverse Transfer Function + + m_pcFrameFormat = new hdrtoolslib::FrameFormat(); + m_pcFrameFormat->m_isFloat = true; + m_pcFrameFormat->m_chromaFormat = hdrtoolslib::CF_UNKNOWN; + m_pcFrameFormat->m_colorSpace = hdrtoolslib::CM_RGB; + m_pcFrameFormat->m_colorPrimaries = hdrtoolslib::CP_2020; + m_pcFrameFormat->m_sampleRange = hdrtoolslib::SR_UNKNOWN; + + m_pcConvertFormat = hdrtoolslib::ConvertColorFormat::create(width, height, chFmt, hdrtoolslib::CF_444, chromaUpFilter, chromaLocation, chromaLocation); + m_pcConvertIQuantize = hdrtoolslib::Convert::create(&m_ppcFrameOrg[1]->m_format, &m_ppcFrameOrg[2]->m_format); + m_pcColorTransform = hdrtoolslib::ColorTransform::create(m_ppcFrameOrg[2]->m_colorSpace, m_ppcFrameOrg[2]->m_colorPrimaries, m_ppcFrameOrg[3]->m_colorSpace, m_ppcFrameOrg[3]->m_colorPrimaries, true, 1); + m_pcDistortionDeltaE = new hdrtoolslib::DistortionMetricDeltaE(m_pcFrameFormat, false, maxSampleValue, whitePointDeltaE, 1); + m_pcTransferFct = hdrtoolslib::TransferFunction::create(hdrtoolslib::TF_PQ, true, (float) maxSampleValue, 0, 0.0, 1.0, enableTFunctionLUT); } #endif } @@ -3350,14 +3348,15 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni MSEyuvframeWeighted[i] = 0.0; #endif } - #if JVET_O0756_CALCULATE_HDRMETRICS - double dDeltaE[hdrtoolslib::NB_REF_WHITE]; - double dPSNRL[hdrtoolslib::NB_REF_WHITE]; - for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) { - dDeltaE[i] = 0.0; - dPSNRL[i] = 0.0; +#if JVET_O0756_CALCULATE_HDRMETRICS + double deltaE[hdrtoolslib::NB_REF_WHITE]; + double psnrL[hdrtoolslib::NB_REF_WHITE]; + for (int i=0; i<hdrtoolslib::NB_REF_WHITE; i++) + { + deltaE[i] = 0.0; + psnrL[i] = 0.0; } - #endif +#endif PelStorage interm; @@ -3419,10 +3418,10 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni #if JVET_O0756_CALCULATE_HDRMETRICS const bool calculateHdrMetrics = m_pcEncLib->getCalcluateHdrMetrics(); - if(calculateHdrMetrics) + if (calculateHdrMetrics) { auto beforeTime = std::chrono::steady_clock::now(); - xCalculateHDRMetrics(pcPic, dDeltaE, dPSNRL); + xCalculateHDRMetrics(pcPic, deltaE, psnrL); auto elapsed = std::chrono::steady_clock::now() - beforeTime; m_metricTime += elapsed; } @@ -3464,11 +3463,12 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni #if EXTENSION_360_VIDEO m_ext360.addResult(m_gcAnalyzeAll); #endif - #if JVET_O0756_CALCULATE_HDRMETRICS - if(calculateHdrMetrics){ - m_gcAnalyzeAll.addHDRMetricsResult(dDeltaE, dPSNRL); +#if JVET_O0756_CALCULATE_HDRMETRICS + if (calculateHdrMetrics) + { + m_gcAnalyzeAll.addHDRMetricsResult(deltaE, psnrL); } - #endif +#endif if (pcSlice->isIntra()) { m_gcAnalyzeI.addResult(dPSNR, (double)uibits, MSEyuvframe @@ -3478,11 +3478,12 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni #if EXTENSION_360_VIDEO m_ext360.addResult(m_gcAnalyzeI); #endif - #if JVET_O0756_CALCULATE_HDRMETRICS - if(calculateHdrMetrics){ - m_gcAnalyzeI.addHDRMetricsResult(dDeltaE, dPSNRL); +#if JVET_O0756_CALCULATE_HDRMETRICS + if (calculateHdrMetrics) + { + m_gcAnalyzeI.addHDRMetricsResult(deltaE, psnrL); } - #endif +#endif } if (pcSlice->isInterP()) { @@ -3493,11 +3494,12 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni #if EXTENSION_360_VIDEO m_ext360.addResult(m_gcAnalyzeP); #endif - #if JVET_O0756_CALCULATE_HDRMETRICS - if(calculateHdrMetrics){ - m_gcAnalyzeP.addHDRMetricsResult(dDeltaE, dPSNRL); +#if JVET_O0756_CALCULATE_HDRMETRICS + if (calculateHdrMetrics) + { + m_gcAnalyzeP.addHDRMetricsResult(deltaE, psnrL); } - #endif +#endif } if (pcSlice->isInterB()) { @@ -3508,11 +3510,12 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni #if EXTENSION_360_VIDEO m_ext360.addResult(m_gcAnalyzeB); #endif - #if JVET_O0756_CALCULATE_HDRMETRICS - if(calculateHdrMetrics){ - m_gcAnalyzeB.addHDRMetricsResult(dDeltaE, dPSNRL); +#if JVET_O0756_CALCULATE_HDRMETRICS + if (calculateHdrMetrics) + { + m_gcAnalyzeB.addHDRMetricsResult(deltaE, psnrL); } - #endif +#endif } #if WCG_WPSNR if (useLumaWPSNR) @@ -3581,13 +3584,16 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni } #endif #if JVET_O0756_CALCULATE_HDRMETRICS - if(calculateHdrMetrics){ - for (int i=0; i<1; i++) { - msg(NOTICE, " [DeltaE%d %6.4lf dB]", (int)m_pcCfg->getWhitePointDeltaE(i), dDeltaE[i]); - } - for (int i=0; i<1; i++) { - msg(NOTICE, " [PSNRL%d %6.4lf dB]", (int)m_pcCfg->getWhitePointDeltaE(i), dPSNRL[i]); - } + if(calculateHdrMetrics) + { + for (int i=0; i<1; i++) + { + msg(NOTICE, " [DeltaE%d %6.4lf dB]", (int)m_pcCfg->getWhitePointDeltaE(i), deltaE[i]); + } + for (int i=0; i<1; i++) + { + msg(NOTICE, " [PSNRL%d %6.4lf dB]", (int)m_pcCfg->getWhitePointDeltaE(i), psnrL[i]); + } } #endif msg( NOTICE, " [ET %5.0f ]", dEncTime ); @@ -3612,13 +3618,14 @@ void EncGOP::xCalculateAddPSNR(Picture* pcPic, PelUnitBuf cPicD, const AccessUni } #if JVET_O0756_CALCULATE_HDRMETRICS -void EncGOP::xCalculateHDRMetrics( Picture* pcPic, double dDeltaE[hdrtoolslib::NB_REF_WHITE], double dPSNRL[hdrtoolslib::NB_REF_WHITE]) +void EncGOP::xCalculateHDRMetrics( Picture* pcPic, double deltaE[hdrtoolslib::NB_REF_WHITE], double psnrL[hdrtoolslib::NB_REF_WHITE]) { copyBuftoFrame(pcPic); ChromaFormat chFmt = pcPic->chromaFormat; - if (chFmt != CHROMA_444) { + if (chFmt != CHROMA_444) + { m_pcConvertFormat->process(m_ppcFrameOrg[1], m_ppcFrameOrg[0]); m_pcConvertFormat->process(m_ppcFrameRec[1], m_ppcFrameRec[0]); } @@ -3635,8 +3642,8 @@ void EncGOP::xCalculateHDRMetrics( Picture* pcPic, double dDeltaE[hdrtoolslib::N // Calculate the Metrics m_pcDistortionDeltaE->computeMetric(m_ppcFrameOrg[4], m_ppcFrameRec[4]); - *dDeltaE = m_pcDistortionDeltaE->getDeltaE(); - *dPSNRL = m_pcDistortionDeltaE->getPsnrL(); + *deltaE = m_pcDistortionDeltaE->getDeltaE(); + *psnrL = m_pcDistortionDeltaE->getPsnrL(); } @@ -3647,8 +3654,8 @@ void EncGOP::copyBuftoFrame( Picture* pcPic ) int cropOffsetRight = m_pcCfg->getCropOffsetRight(); int cropOffsetBottom = m_pcCfg->getCropOffsetBottom(); - int iHeight = pcPic->getOrigBuf(COMPONENT_Y).height - cropOffsetLeft + cropOffsetRight; - int iWidth = pcPic->getOrigBuf(COMPONENT_Y).width - cropOffsetTop + cropOffsetBottom; + int height = pcPic->getOrigBuf(COMPONENT_Y).height - cropOffsetLeft + cropOffsetRight; + int width = pcPic->getOrigBuf(COMPONENT_Y).width - cropOffsetTop + cropOffsetBottom; ChromaFormat chFmt = pcPic->chromaFormat; @@ -3671,16 +3678,16 @@ void EncGOP::copyBuftoFrame( Picture* pcPic ) vRec = m_ppcFrameRec[1]->m_ui16Comp[hdrtoolslib::Cr_COMP]; } - for (int i = 0; i < iHeight; i++) { - for (int j = 0; j < iWidth; j++) { - yOrg[i*iWidth + j] = static_cast<uint16_t>(pOrg[(i + cropOffsetTop) * pcPic->getOrigBuf(COMPONENT_Y).stride + j + cropOffsetLeft]); - yRec[i*iWidth + j] = static_cast<uint16_t>(pRec[(i + cropOffsetTop) * pcPic->getRecoBuf(COMPONENT_Y).stride + j + cropOffsetLeft]); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + yOrg[i*width + j] = static_cast<uint16_t>(pOrg[(i + cropOffsetTop) * pcPic->getOrigBuf(COMPONENT_Y).stride + j + cropOffsetLeft]); + yRec[i*width + j] = static_cast<uint16_t>(pRec[(i + cropOffsetTop) * pcPic->getRecoBuf(COMPONENT_Y).stride + j + cropOffsetLeft]); } } if (chFmt != CHROMA_444) { - iHeight >>= 1; - iWidth >>= 1; + height >>= 1; + width >>= 1; cropOffsetLeft >>= 1; cropOffsetTop >>= 1; } @@ -3688,20 +3695,20 @@ void EncGOP::copyBuftoFrame( Picture* pcPic ) pOrg = pcPic->getOrigBuf(COMPONENT_Cb).buf; pRec = pcPic->getRecoBuf(COMPONENT_Cb).buf; - for (int i = 0; i < iHeight; i++) { - for (int j = 0; j < iWidth; j++) { - uOrg[i*iWidth + j] = static_cast<uint16_t>(pOrg[(i + cropOffsetTop) * pcPic->getOrigBuf(COMPONENT_Cb).stride + j + cropOffsetLeft]); - uRec[i*iWidth + j] = static_cast<uint16_t>(pRec[(i + cropOffsetTop) * pcPic->getRecoBuf(COMPONENT_Cb).stride + j + cropOffsetLeft]); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + uOrg[i*width + j] = static_cast<uint16_t>(pOrg[(i + cropOffsetTop) * pcPic->getOrigBuf(COMPONENT_Cb).stride + j + cropOffsetLeft]); + uRec[i*width + j] = static_cast<uint16_t>(pRec[(i + cropOffsetTop) * pcPic->getRecoBuf(COMPONENT_Cb).stride + j + cropOffsetLeft]); } } pOrg = pcPic->getOrigBuf(COMPONENT_Cr).buf; pRec = pcPic->getRecoBuf(COMPONENT_Cr).buf; - for (int i = 0; i < iHeight; i++) { - for (int j = 0; j < iWidth; j++) { - vOrg[i*iWidth + j] = static_cast<uint16_t>(pOrg[(i + cropOffsetTop) * pcPic->getOrigBuf(COMPONENT_Cr).stride + j + cropOffsetLeft]); - vRec[i*iWidth + j] = static_cast<uint16_t>(pRec[(i + cropOffsetTop) * pcPic->getRecoBuf(COMPONENT_Cr).stride + j + cropOffsetLeft]); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + vOrg[i*width + j] = static_cast<uint16_t>(pOrg[(i + cropOffsetTop) * pcPic->getOrigBuf(COMPONENT_Cr).stride + j + cropOffsetLeft]); + vRec[i*width + j] = static_cast<uint16_t>(pRec[(i + cropOffsetTop) * pcPic->getRecoBuf(COMPONENT_Cr).stride + j + cropOffsetLeft]); } } } diff --git a/source/Lib/EncoderLib/EncGOP.h b/source/Lib/EncoderLib/EncGOP.h index 80b6caab0..5700a7617 100644 --- a/source/Lib/EncoderLib/EncGOP.h +++ b/source/Lib/EncoderLib/EncGOP.h @@ -183,16 +183,15 @@ private: hdrtoolslib::Frame **m_ppcFrameOrg; hdrtoolslib::Frame **m_ppcFrameRec; - hdrtoolslib::ConvertColorFormat* m_pcConvertFormat; - hdrtoolslib::Convert* m_pcConvertIQuantize; - hdrtoolslib::ColorTransform* m_pcColorTransform; - hdrtoolslib::DistortionMetricDeltaE* m_pcDistortionDeltaE; - hdrtoolslib::TransferFunction* m_pcTransferFct; + hdrtoolslib::ConvertColorFormat *m_pcConvertFormat; + hdrtoolslib::Convert *m_pcConvertIQuantize; + hdrtoolslib::ColorTransform *m_pcColorTransform; + hdrtoolslib::DistortionMetricDeltaE *m_pcDistortionDeltaE; + hdrtoolslib::TransferFunction *m_pcTransferFct; - hdrtoolslib::ColorTransformParams* m_pcColorTransformParams; - hdrtoolslib::FrameFormat* m_pcFrameFormat; + hdrtoolslib::ColorTransformParams *m_pcColorTransformParams; + hdrtoolslib::FrameFormat *m_pcFrameFormat; -public: std::chrono::duration<long long, ratio<1, 1000000000>> m_metricTime; #endif @@ -244,6 +243,9 @@ public: Analyze& getAnalyzePData() { return m_gcAnalyzeP; } Analyze& getAnalyzeBData() { return m_gcAnalyzeB; } #endif +#if JVET_O0756_CALCULATE_HDRMETRICS + std::chrono::duration<long long, ratio<1, 1000000000>> getMetricTime() const { return m_metricTime; }; +#endif protected: RateCtrl* getRateCtrl() { return m_pcRateCtrl; } @@ -257,7 +259,7 @@ protected: int iNumPicRcvd, int iTimeOffset, Picture*& rpcPic, int pocCurr, bool isField ); #if JVET_O0756_CALCULATE_HDRMETRICS - void xCalculateHDRMetrics ( Picture* pcPic, double dDeltaE[hdrtoolslib::NB_REF_WHITE], double dPSNRL[hdrtoolslib::NB_REF_WHITE]); + void xCalculateHDRMetrics ( Picture* pcPic, double deltaE[hdrtoolslib::NB_REF_WHITE], double psnrL[hdrtoolslib::NB_REF_WHITE]); void copyBuftoFrame ( Picture* pcPic ); #endif diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 695806502..edd8e9e4b 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -574,7 +574,7 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* cPicYuvTru m_cGOPEncoder.compressGOP(m_iPOCLast, m_iNumPicRcvd, m_cListPic, rcListPicYuvRecOut, false, false, snrCSC, m_printFrameMSE, true); #if JVET_O0756_CALCULATE_HDRMETRICS - m_metricTime = m_cGOPEncoder.m_metricTime; + m_metricTime = m_cGOPEncoder.getMetricTime(); #endif m_cGOPEncoder.setEncodedLTRef(true); if (m_RCEnableRateControl) @@ -642,7 +642,7 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* cPicYuvTru , false ); #if JVET_O0756_CALCULATE_HDRMETRICS - m_metricTime = m_cGOPEncoder.m_metricTime; + m_metricTime = m_cGOPEncoder.getMetricTime(); #endif if ( m_RCEnableRateControl ) @@ -734,7 +734,7 @@ void EncLib::encode( bool flush, PelStorage* pcPicYuvOrg, PelStorage* pcPicYuvTr , false ); #if JVET_O0756_CALCULATE_HDRMETRICS - m_metricTime = m_cGOPEncoder.m_metricTime; + m_metricTime = m_cGOPEncoder.getMetricTime(); #endif iNumEncoded += m_iNumPicRcvd; diff --git a/source/Lib/EncoderLib/EncLib.h b/source/Lib/EncoderLib/EncLib.h index 1b8967c78..3cbdbc15a 100644 --- a/source/Lib/EncoderLib/EncLib.h +++ b/source/Lib/EncoderLib/EncLib.h @@ -151,15 +151,15 @@ private: #if JVET_O0119_BASE_PALETTE_444 bool m_doPlt; #endif +#if JVET_O0756_CALCULATE_HDRMETRICS + std::chrono::duration<long long, ratio<1, 1000000000>> m_metricTime; +#endif public: Ctx m_entropyCodingSyncContextState; ///< leave in addition to vector for compatibility #if ENABLE_WPP_PARALLELISM std::vector<Ctx> m_entropyCodingSyncContextStateVec; ///< context storage for state of contexts at the wavefront/WPP/entropy-coding-sync second CTU of tile-row #endif -#if JVET_O0756_CALCULATE_HDRMETRICS - std::chrono::duration<long long, ratio<1, 1000000000>> m_metricTime; -#endif protected: void xGetNewPicBuffer ( std::list<PelUnitBuf*>& rcListPicYuvRecOut, Picture*& rpcPic, int ppsId ); ///< get picture buffer which will be processed. If ppsId<0, then the ppsMap will be queried for the first match. @@ -252,6 +252,9 @@ public: #if JVET_O0119_BASE_PALETTE_444 bool getPltEnc() const { return m_doPlt; } void checkPltStats( Picture* pic ); +#endif +#if JVET_O0756_CALCULATE_HDRMETRICS + std::chrono::duration<long long, ratio<1, 1000000000>> getMetricTime() const { return m_metricTime; }; #endif // ------------------------------------------------------------------------------------------------------------------- // encoder function -- GitLab