diff --git a/source/Lib/CommonLib/LoopFilter.cpp b/source/Lib/CommonLib/LoopFilter.cpp index 8d95a32332a5a1f3a08bb93d494c639f22a2a813..521581afe41b0e4526d364db76437fbc1682e0f6 100644 --- a/source/Lib/CommonLib/LoopFilter.cpp +++ b/source/Lib/CommonLib/LoopFilter.cpp @@ -135,11 +135,11 @@ void LoopFilter::create( const unsigned uiMaxCUDepth ) m_enc = false; } -void LoopFilter::initEncPicYuvBuffer(ChromaFormat chromaFormat, int lumaWidth, int lumaHeight) +void LoopFilter::initEncPicYuvBuffer(ChromaFormat chromaFormat, const Size &size, const unsigned maxCUSize) { - const UnitArea picArea(chromaFormat, Area(0, 0, lumaWidth, lumaHeight)); + const Area a = Area(Position(), size); m_encPicYuvBuffer.destroy(); - m_encPicYuvBuffer.create(picArea); + m_encPicYuvBuffer.create(chromaFormat, a, maxCUSize, 7); } void LoopFilter::destroy() @@ -425,7 +425,7 @@ void LoopFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) { bS |= xGetBoundaryStrengthSingle( cu, edgeDir, localPos, CHANNEL_TYPE_LUMA ); } - if(cu.treeType != TREE_L && cu.chromaFormat != CHROMA_400) + if(cu.treeType != TREE_L && cu.chromaFormat != CHROMA_400 && cu.blocks[COMPONENT_Cb].valid()) { bS |= xGetBoundaryStrengthSingle( cu, edgeDir, localPos, CHANNEL_TYPE_CHROMA ); } diff --git a/source/Lib/CommonLib/LoopFilter.h b/source/Lib/CommonLib/LoopFilter.h index d82a7a63e29472a21d8c5f135e23ea59d0611de1..3ec3d51108b302a27025a863612d7a92e98c0601 100644 --- a/source/Lib/CommonLib/LoopFilter.h +++ b/source/Lib/CommonLib/LoopFilter.h @@ -111,7 +111,7 @@ public: /// CU-level deblocking function void xDeblockCU(CodingUnit& cu, const DeblockEdgeDir edgeDir); - void initEncPicYuvBuffer(ChromaFormat chromaFormat, int lumaWidth, int lumaHeight); + void initEncPicYuvBuffer(ChromaFormat chromaFormat, const Size &size, const unsigned maxCUSize); PelStorage& getDbEncPicYuvBuffer() { return m_encPicYuvBuffer; } void setEnc(bool b) { m_enc = b; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index ea24fac6071713cc515dea0ed451b1fb3a50b37e..d1d538a472743ac4294f933d5a53f1f44d35481f 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -137,9 +137,9 @@ void EncLib::create( const int layerId ) m_cLoopFilter.create( m_maxTotalCUDepth ); #endif - if (!m_bLoopFilterDisable) + if (!m_bLoopFilterDisable && m_encDbOpt) { - m_cLoopFilter.initEncPicYuvBuffer(m_chromaFormatIDC, getSourceWidth(), getSourceHeight()); + m_cLoopFilter.initEncPicYuvBuffer(m_chromaFormatIDC, Size(getSourceWidth(), getSourceHeight()), getMaxCUWidth()); } #if ENABLE_SPLIT_PARALLELISM