From 44b815faebc7e881f0cc294604517dd4754cf39e Mon Sep 17 00:00:00 2001
From: guichunli <guichunli@tencent.com>
Date: Thu, 30 Jan 2020 11:09:01 -0800
Subject: [PATCH] Add comments to clarify minQT size for chroma separate tree
 is in chroma samples

---
 cfg/encoder_intra_vtm.cfg                                      | 2 +-
 cfg/encoder_lowdelay_P_vtm.cfg                                 | 2 +-
 cfg/encoder_lowdelay_vtm.cfg                                   | 2 +-
 cfg/encoder_randomaccess_vtm.cfg                               | 2 +-
 .../encoder_randomaccess_vtm_RasterScanSlice.cfg               | 3 +--
 .../encoder_randomaccess_vtm_RectangularSlice.cfg              | 3 +--
 .../encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg     | 3 +--
 .../encoder_randomaccess_vtm_SingleTilePerSlice.cfg            | 3 +--
 source/Lib/DecoderLib/VLCReader.cpp                            | 1 +
 source/Lib/EncoderLib/VLCWriter.cpp                            | 2 ++
 10 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/cfg/encoder_intra_vtm.cfg b/cfg/encoder_intra_vtm.cfg
index 610ba3dc7..9d689eadb 100644
--- a/cfg/encoder_intra_vtm.cfg
+++ b/cfg/encoder_intra_vtm.cfg
@@ -69,7 +69,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/encoder_lowdelay_P_vtm.cfg b/cfg/encoder_lowdelay_P_vtm.cfg
index e355312bb..d4f402d49 100644
--- a/cfg/encoder_lowdelay_P_vtm.cfg
+++ b/cfg/encoder_lowdelay_P_vtm.cfg
@@ -93,7 +93,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/encoder_lowdelay_vtm.cfg b/cfg/encoder_lowdelay_vtm.cfg
index 126d9add7..6c73d1f51 100644
--- a/cfg/encoder_lowdelay_vtm.cfg
+++ b/cfg/encoder_lowdelay_vtm.cfg
@@ -93,7 +93,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg
index 27267b772..a06837461 100644
--- a/cfg/encoder_randomaccess_vtm.cfg
+++ b/cfg/encoder_randomaccess_vtm.cfg
@@ -104,7 +104,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg
index 7487dc814..d10dc963d 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg
@@ -8,7 +8,6 @@ Profile                       : auto
 #======== Unit definition ================
 MaxCUWidth                    : 64          # Maximum coding unit width in pixel
 MaxCUHeight                   : 64          # Maximum coding unit height in pixel
-MaxPartitionDepth             : 4           # Maximum coding unit depth
 
 #======== Coding Structure =============
 IntraPeriod                   : 32          # Period of I-Frame ( -1 = only first)
@@ -105,7 +104,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg
index c0d3ecbbc..cfbac5ec1 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg
@@ -8,7 +8,6 @@ Profile                       : auto
 #======== Unit definition ================
 MaxCUWidth                    : 64          # Maximum coding unit width in pixel
 MaxCUHeight                   : 64          # Maximum coding unit height in pixel
-MaxPartitionDepth             : 4           # Maximum coding unit depth
 
 #======== Coding Structure =============
 IntraPeriod                   : 32          # Period of I-Frame ( -1 = only first)
@@ -105,7 +104,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg
index 9f29eb4d0..5a1ef8325 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg
@@ -8,7 +8,6 @@ Profile                       : auto
 #======== Unit definition ================
 MaxCUWidth                    : 64          # Maximum coding unit width in pixel
 MaxCUHeight                   : 64          # Maximum coding unit height in pixel
-MaxPartitionDepth             : 4           # Maximum coding unit depth
 
 #======== Coding Structure =============
 IntraPeriod                   : 32          # Period of I-Frame ( -1 = only first)
@@ -106,7 +105,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg
index 4f9a7857f..b231677bf 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg
@@ -8,7 +8,6 @@ Profile                       : auto
 #======== Unit definition ================
 MaxCUWidth                    : 64          # Maximum coding unit width in pixel
 MaxCUHeight                   : 64          # Maximum coding unit height in pixel
-MaxPartitionDepth             : 4           # Maximum coding unit depth
 
 #======== Coding Structure =============
 IntraPeriod                   : 32          # Period of I-Frame ( -1 = only first)
@@ -103,7 +102,7 @@ LCTUFast                     : 1
 
 DualITree                    : 1      # separate partitioning of luma and chroma channels for I-slices
 MinQTLumaISlice              : 8
-MinQTChromaISlice            : 4
+MinQTChromaISlice            : 4      # minimum QT size in chroma samples for chroma separate tree
 MinQTNonISlice               : 8
 MaxMTTHierarchyDepth         : 3
 MaxMTTHierarchyDepthISliceL  : 3
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 3a59e8344..c267b070c 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -2009,6 +2009,7 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag
       if (sps->getUseDualITree())
       {
 #if JVET_Q0468_Q0469_MIN_LUMA_CB_AND_MIN_QT_FIX
+        // Since in software minQT[2] is in chroma samples, min CB size in luma samples is first converted into chroma samples for the calculation
         const int base = std::max(MIN_CU_LOG2, sps->getLog2MinCodingBlockSize() - (int)getChannelTypeScaleX(CHANNEL_TYPE_CHROMA, sps->getChromaFormatIdc()));
         READ_UVLC(uiCode, "pic_log2_diff_min_qt_min_cb_intra_slice_chroma");     minQT[2] = 1 << (uiCode + base);
 #else
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index e476a4030..22e43ce95 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -825,6 +825,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
   if (pcSPS->getUseDualITree())
   {
 #if JVET_Q0468_Q0469_MIN_LUMA_CB_AND_MIN_QT_FIX
+    // Since in software minQT[2] is in chroma samples, min CB size in luma samples is first converted into chroma samples for the calculation
     const int minDiff = (int)floorLog2(pcSPS->getMinQTSize(I_SLICE, CHANNEL_TYPE_CHROMA)) - std::max(MIN_CU_LOG2, pcSPS->getLog2MinCodingBlockSize() - (int)getChannelTypeScaleX(CHANNEL_TYPE_CHROMA, pcSPS->getChromaFormatIdc()));
     CHECK(minDiff < 0, "Wrong min intra QT chroma");
     WRITE_UVLC(minDiff, "sps_log2_diff_min_qt_min_cb_intra_slice_chroma");
@@ -1390,6 +1391,7 @@ void HLSWriter::codePictureHeader( PicHeader* picHeader )
       if (sps->getUseDualITree())
       {
 #if JVET_Q0468_Q0469_MIN_LUMA_CB_AND_MIN_QT_FIX
+          // Since in software minQT[2] is in chroma samples, min CB size in luma samples is first converted into chroma samples for the calculation
           const int minDiff = (int)floorLog2(picHeader->getMinQTSize(I_SLICE, CHANNEL_TYPE_CHROMA)) - std::max(MIN_CU_LOG2, sps->getLog2MinCodingBlockSize() - (int)getChannelTypeScaleX(CHANNEL_TYPE_CHROMA, sps->getChromaFormatIdc()));
           CHECK(minDiff < 0, "Wrong min intra QT chroma");
           WRITE_UVLC(minDiff, "pic_log2_diff_min_qt_min_cb_intra_slice_chroma");
-- 
GitLab