From 90cff8fad783d22f561558fb6015ab5fad10ac15 Mon Sep 17 00:00:00 2001 From: Brian Heng <brian.heng@broadcom.com> Date: Fri, 6 Mar 2020 15:29:06 -0800 Subject: [PATCH] Fixes for Q0487 on encode side. - Configure scaling window correctly. - Use unscaled picture info for isRefScaled determination. --- source/Lib/CommonLib/Picture.h | 4 ++-- source/Lib/EncoderLib/EncLib.cpp | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/source/Lib/CommonLib/Picture.h b/source/Lib/CommonLib/Picture.h index 212a02c61..28440c240 100644 --- a/source/Lib/CommonLib/Picture.h +++ b/source/Lib/CommonLib/Picture.h @@ -243,8 +243,8 @@ public: Window& getScalingWindow() { return m_scalingWindow; } const Window& getScalingWindow() const { return m_scalingWindow; } #if JVET_Q0487_SCALING_WINDOW_ISSUES - bool isRefScaled( const PPS* pps ) const { return getPicWidthInLumaSamples() != pps->getPicWidthInLumaSamples() || - getPicHeightInLumaSamples() != pps->getPicHeightInLumaSamples() || + bool isRefScaled( const PPS* pps ) const { return unscaledPic->getPicWidthInLumaSamples() != pps->getPicWidthInLumaSamples() || + unscaledPic->getPicHeightInLumaSamples() != pps->getPicHeightInLumaSamples() || getScalingWindow().getWindowLeftOffset() != pps->getScalingWindow().getWindowLeftOffset() || getScalingWindow().getWindowRightOffset() != pps->getScalingWindow().getWindowRightOffset() || getScalingWindow().getWindowTopOffset() != pps->getScalingWindow().getWindowTopOffset() || diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 69a2daa92..b97a0b312 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -316,7 +316,11 @@ void EncLib::init( bool isFieldCoding, AUWriterIf* auWriterIf ) pps.setConformanceWindow( conformanceWindow ); Window scalingWindow; +#if JVET_Q0487_SCALING_WINDOW_ISSUES + scalingWindow.setWindow( 0, ( width - scaledWidth ) / SPS::getWinUnitX( sps0.getChromaFormatIdc() ), 0, ( height - scaledHeight ) / SPS::getWinUnitY( sps0.getChromaFormatIdc() ) ); +#else scalingWindow.setWindow( 0, width - scaledWidth, 0, height - scaledHeight ); +#endif pps.setScalingWindow( scalingWindow ); #if JVET_Q0179_SCALING_WINDOW_SIZE_CONSTRAINT -- GitLab