From a968d8c818902061b7b0fb248584b9778d2d7613 Mon Sep 17 00:00:00 2001
From: Brian Heng <brian.heng@broadcom.com>
Date: Fri, 6 Dec 2019 08:16:26 -0800
Subject: [PATCH] Fix for Ticket #670 - Apply ALF VB on the bottom CTU row

---
 source/Lib/CommonLib/AdaptiveLoopFilter.cpp     | 8 ++++++++
 source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/source/Lib/CommonLib/AdaptiveLoopFilter.cpp b/source/Lib/CommonLib/AdaptiveLoopFilter.cpp
index 1b57b35ee..a082870b7 100644
--- a/source/Lib/CommonLib/AdaptiveLoopFilter.cpp
+++ b/source/Lib/CommonLib/AdaptiveLoopFilter.cpp
@@ -970,11 +970,19 @@ void AdaptiveLoopFilter::deriveClassification( AlfClassifier** classifier, const
 #if JVET_O0625_ALF_PADDING
       m_deriveClassificationBlk( classifier, m_laplacian, srcLuma, Area( j - blk.pos().x + blkDst.pos().x, i - blk.pos().y + blkDst.pos().y, nWidth, nHeight ), Area(j, i, nWidth, nHeight), m_inputBitDepth[CHANNEL_TYPE_LUMA] + 4
         , m_alfVBLumaCTUHeight
+#if JVET_P0158_ALIGN_ALF_VB
+        , m_alfVBLumaPos, alfBryList );
+#else
         , ( ( i - blk.pos().y + blkDst.pos().y + nHeight >= m_picHeight ) ? m_picHeight : m_alfVBLumaPos ), alfBryList );
+#endif
 #else
       m_deriveClassificationBlk(classifier, m_laplacian, srcLuma, Area( j - blk.pos().x + blkDst.pos().x, i - blk.pos().y + blkDst.pos().y, nWidth, nHeight ), Area(j, i, nWidth, nHeight), m_inputBitDepth[CHANNEL_TYPE_LUMA] + 4
         , m_alfVBLumaCTUHeight
+#if JVET_P0158_ALIGN_ALF_VB
+        , m_alfVBLumaPos
+#else
         , ((i - blk.pos().y + blkDst.pos().y + nHeight >= m_picHeight) ? m_picHeight : m_alfVBLumaPos)
+#endif
       );
 #endif
     }
diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp
index eb9c3e821..463536022 100644
--- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp
+++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp
@@ -1920,7 +1920,11 @@ void EncAdaptiveLoopFilter::deriveStatsForFiltering( PelUnitBuf& orgYuv, PelUnit
               const CompArea& compAreaDst = areaDst.block( compID );
                 getBlkStats(m_alfCovariance[compIdx][shape][ctuRsAddr], m_filterShapes[chType][shape], compIdx ? nullptr : m_classifier, org, orgStride, rec, recStride, compAreaDst, compArea, chType
                   , ((compIdx == 0) ? m_alfVBLumaCTUHeight : m_alfVBChmaCTUHeight)
+#if JVET_P0158_ALIGN_ALF_VB
+                  , (compIdx == 0) ? m_alfVBLumaPos : m_alfVBChmaPos
+#else
                   , ((yPos + m_maxCUHeight >= m_picHeight) ? m_picHeight : ((compIdx == 0) ? m_alfVBLumaPos : m_alfVBChmaPos))
+#endif
 #if JVET_O0625_ALF_PADDING
                   , compIdx ? alfBryListChroma : alfBryList
 #endif
@@ -1972,7 +1976,11 @@ void EncAdaptiveLoopFilter::deriveStatsForFiltering( PelUnitBuf& orgYuv, PelUnit
         {
           getBlkStats(m_alfCovariance[compIdx][shape][ctuRsAddr], m_filterShapes[chType][shape], compIdx ? nullptr : m_classifier, org, orgStride, rec, recStride, compArea, compArea, chType
             , ((compIdx == 0) ? m_alfVBLumaCTUHeight : m_alfVBChmaCTUHeight)
+#if JVET_P0158_ALIGN_ALF_VB
+            , (compIdx == 0) ? m_alfVBLumaPos : m_alfVBChmaPos
+#else
             , ((yPos + m_maxCUHeight >= m_picHeight) ? m_picHeight : ((compIdx == 0) ? m_alfVBLumaPos : m_alfVBChmaPos))
+#endif
 #if JVET_O0625_ALF_PADDING
             , alfBryList
 #endif
-- 
GitLab