diff --git a/cfg/encoder_intra_vtm.cfg b/cfg/encoder_intra_vtm.cfg
index fc8224aa6b470a2436a133437c31a55080b73ca8..e7e40f13d7ee6073a859ff43ab8e566a7eef9e32 100644
--- a/cfg/encoder_intra_vtm.cfg
+++ b/cfg/encoder_intra_vtm.cfg
@@ -34,8 +34,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/encoder_lowdelay_P_vtm.cfg b/cfg/encoder_lowdelay_P_vtm.cfg
index e0a5088970fe37e903e67447a2c09bc95910ffdb..372d586d953cff6c83c7740a7289e89359258243 100644
--- a/cfg/encoder_lowdelay_P_vtm.cfg
+++ b/cfg/encoder_lowdelay_P_vtm.cfg
@@ -17,15 +17,15 @@ GOPSize                       : 8           # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -1
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:    P   1   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 9 17 25                      0                   0
-Frame2:    P   2   4       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 2 10 18                      0                   0
-Frame3:    P   3   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 3 11 19                      0                   0
-Frame4:    P   4   4       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 4 12 20                      0                   0
-Frame5:    P   5   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 5 13 21                      0                   0
-Frame6:    P   6   4       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 6 14 22                      0                   0
-Frame7:    P   7   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 7 15 23                      0                   0
-Frame8:    P   8   1        0.0                      0.0            0          0          1.0      0            0               0             4                4         1 8 16 24                      0                   0
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:    P   1   5       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 9 17 25                      0                   0
+Frame2:    P   2   4       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 2 10 18                      0                   0
+Frame3:    P   3   5       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 3 11 19                      0                   0
+Frame4:    P   4   4       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 4 12 20                      0                   0
+Frame5:    P   5   5       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 5 13 21                      0                   0
+Frame6:    P   6   4       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 6 14 22                      0                   0
+Frame7:    P   7   5       -6.5                      0.2590         0          0          1.0      0            0               0             0                 0               0               0             4                4         1 7 15 23                      0                   0
+Frame8:    P   8   1        0.0                      0.0            0          0          1.0      0            0               0             0                 0               0               0             4                4         1 8 16 24                      0                   0
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -46,8 +46,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/encoder_lowdelay_vtm.cfg b/cfg/encoder_lowdelay_vtm.cfg
index 40e34457346c0b031007d8705f8d51e8fac8ef9f..1b0d071aab494d93dc4350879d074952cfff5a4c 100644
--- a/cfg/encoder_lowdelay_vtm.cfg
+++ b/cfg/encoder_lowdelay_vtm.cfg
@@ -17,15 +17,15 @@ GOPSize                       : 8           # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -1
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:    B   1   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 9 17 25                     4                   4      1 9 17 25
-Frame2:    B   2   4       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 2 10 18                     4                   4      1 2 10 18
-Frame3:    B   3   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 3 11 19                     4                   4      1 3 11 19
-Frame4:    B   4   4       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 4 12 20                     4                   4      1 4 12 20
-Frame5:    B   5   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 5 13 21                     4                   4      1 5 13 21
-Frame6:    B   6   4       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 6 14 22                     4                   4      1 6 14 22
-Frame7:    B   7   5       -6.5                      0.2590         0          0          1.0      0            0               0             4                4         1 7 15 23                     4                   4      1 7 15 23
-Frame8:    B   8   1        0.0                      0.0            0          0          1.0      0            0               0             4                4         1 8 16 24                     4                   4      1 8 16 24
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:    B   1   5       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 9 17 25                     4                   4      1 9 17 25
+Frame2:    B   2   4       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 2 10 18                     4                   4      1 2 10 18
+Frame3:    B   3   5       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 3 11 19                     4                   4      1 3 11 19
+Frame4:    B   4   4       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 4 12 20                     4                   4      1 4 12 20
+Frame5:    B   5   5       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 5 13 21                     4                   4      1 5 13 21
+Frame6:    B   6   4       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 6 14 22                     4                   4      1 6 14 22
+Frame7:    B   7   5       -6.5                      0.2590         0          0          1.0      0            0               0              0                0               0               0             4                4         1 7 15 23                     4                   4      1 7 15 23
+Frame8:    B   8   1        0.0                      0.0            0          0          1.0      0            0               0              0                0               0               0             4                4         1 8 16 24                     4                   4      1 8 16 24
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -46,8 +46,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg
index 87ea48f866da85363356a38eb262dd52af49f04d..8f99fe806a2b2b1cea88a0bdf527541ba8b1a6d2 100644
--- a/cfg/encoder_randomaccess_vtm.cfg
+++ b/cfg/encoder_randomaccess_vtm.cfg
@@ -17,23 +17,23 @@ GOPSize                       : 16          # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -3
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0             2                3          16 32 24                    2                2           16 32
-Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              1             2                2          8 16                        2                2           -8 8
-Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 -12
-Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                3           -2 -6 -14
-Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
-Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 3                         2                3           -1 -5 -13
-Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 6                         2                2           -2 -10
-Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 5                         2                3           -1 -3 -11
-Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 7                       2                2           -1 -9
-Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 4
-Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                2           -2 -6
-Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 9                         2                3           -1 -3 -7
-Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 11                      2                2           -1 -5
-Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                3          2 6 14                      2                2           -2 2
-Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 5 13                      2                2           -1 -3
-Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                4          1 3 7 15                    2                2           -1 1
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0                0             0                0               0              0             2                3          16 32 24                    2                2           16 32
+Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0                0             0                0               0              1             2                2          8 16                        2                2           -8 8
+Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0                0             0                0               0              2             2                2          4 12                        2                2           -4 -12
+Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0                0             0                0               0              3             2                2          2 10                        2                3           -2 -6 -14
+Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
+Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                2          1 3                         2                3           -1 -5 -13
+Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0                0             0                0               0              3             2                2          2 6                         2                2           -2 -10
+Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                2          1 5                         2                3           -1 -3 -11
+Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                3          1 3 7                       2                2           -1 -9
+Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0                0             0                0               0              2             2                2          4 12                        2                2           -4 4
+Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0                0             0                0               0              3             2                2          2 10                        2                2           -2 -6
+Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                2          1 9                         2                3           -1 -3 -7
+Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                3          1 3 11                      2                2           -1 -5
+Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0                0             0                0               0              3             2                3          2 6 14                      2                2           -2 2
+Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                3          1 5 13                      2                2           -1 -3
+Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0                0             0                0               0              4             2                4          1 3 7 15                    2                2           -1 1
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -56,8 +56,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg
index 7487dc814d1464b5616ade8693b73286b6daee37..407f8c8b7dfa2a0570abe980aad52b67292544fc 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RasterScanSlice.cfg
@@ -17,23 +17,23 @@ GOPSize                       : 16          # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -3
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0             2                3          16 32 24                    2                2           16 32
-Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              1             2                2          8 16                        2                2           -8 8
-Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 -12
-Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                3           -2 -6 -14
-Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
-Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 3                         2                3           -1 -5 -13
-Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 6                         2                2           -2 -10
-Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 5                         2                3           -1 -3 -11
-Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 7                       2                2           -1 -9
-Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 4
-Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                2           -2 -6
-Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 9                         2                3           -1 -3 -7
-Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 11                      2                2           -1 -5
-Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                3          2 6 14                      2                2           -2 2
-Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 5 13                      2                2           -1 -3
-Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                4          1 3 7 15                    2                2           -1 1
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0               0                0               0              0             2                3          16 32 24                    2                2           16 32
+Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              0               0                0               0              1             2                2          8 16                        2                2           -8 8
+Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              0               0                0               0              2             2                2          4 12                        2                2           -4 -12
+Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              0               0                0               0              3             2                2          2 10                        2                3           -2 -6 -14
+Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
+Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                2          1 3                         2                3           -1 -5 -13
+Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              0               0                0               0              3             2                2          2 6                         2                2           -2 -10
+Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                2          1 5                         2                3           -1 -3 -11
+Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                3          1 3 7                       2                2           -1 -9
+Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              0               0                0               0              2             2                2          4 12                        2                2           -4 4
+Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              0               0                0               0              3             2                2          2 10                        2                2           -2 -6
+Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                2          1 9                         2                3           -1 -3 -7
+Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                3          1 3 11                      2                2           -1 -5
+Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              0               0                0               0              3             2                3          2 6 14                      2                2           -2 2
+Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                3          1 5 13                      2                2           -1 -3
+Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              0               0                0               0              4             2                4          1 3 7 15                    2                2           -1 1
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -56,8 +56,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg
index c0d3ecbbc396d50a6895e9a1b9e17e672e943071..2757eb9bb8f4ac09f2622eeb3477af196188e874 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSlice.cfg
@@ -17,23 +17,23 @@ GOPSize                       : 16          # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -3
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0             2                3          16 32 24                    2                2           16 32
-Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              1             2                2          8 16                        2                2           -8 8
-Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 -12
-Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                3           -2 -6 -14
-Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
-Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 3                         2                3           -1 -5 -13
-Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 6                         2                2           -2 -10
-Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 5                         2                3           -1 -3 -11
-Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 7                       2                2           -1 -9
-Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 4
-Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                2           -2 -6
-Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 9                         2                3           -1 -3 -7
-Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 11                      2                2           -1 -5
-Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                3          2 6 14                      2                2           -2 2
-Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 5 13                      2                2           -1 -3
-Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                4          1 3 7 15                    2                2           -1 1
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0               0               0              0                0              0             2                3          16 32 24                    2                2           16 32
+Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0               0               0              0                0              1             2                2          8 16                        2                2           -8 8
+Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0               0               0              0                0              2             2                2          4 12                        2                2           -4 -12
+Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0               0               0              0                0              3             2                2          2 10                        2                3           -2 -6 -14
+Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
+Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                2          1 3                         2                3           -1 -5 -13
+Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0               0               0              0                0              3             2                2          2 6                         2                2           -2 -10
+Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                2          1 5                         2                3           -1 -3 -11
+Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                3          1 3 7                       2                2           -1 -9
+Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0               0               0              0                0              2             2                2          4 12                        2                2           -4 4
+Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0               0               0              0                0              3             2                2          2 10                        2                2           -2 -6
+Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                2          1 9                         2                3           -1 -3 -7
+Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                3          1 3 11                      2                2           -1 -5
+Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0               0               0              0                0              3             2                3          2 6 14                      2                2           -2 2
+Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                3          1 5 13                      2                2           -1 -3
+Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0               0               0              0                0              4             2                4          1 3 7 15                    2                2           -1 1
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -56,8 +56,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg
index 9f29eb4d055d13f850e6e6b47573ca8e5d51250b..25078d5e404f7da000d3347adc23aeebe9d80c09 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_RectangularSliceFixedSize.cfg
@@ -17,23 +17,23 @@ GOPSize                       : 16          # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -3
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0             2                3          16 32 24                    2                2           16 32
-Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              1             2                2          8 16                        2                2           -8 8
-Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 -12
-Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                3           -2 -6 -14
-Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
-Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 3                         2                3           -1 -5 -13
-Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 6                         2                2           -2 -10
-Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 5                         2                3           -1 -3 -11
-Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 7                       2                2           -1 -9
-Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 4
-Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                2           -2 -6
-Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 9                         2                3           -1 -3 -7
-Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 11                      2                2           -1 -5
-Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                3          2 6 14                      2                2           -2 2
-Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 5 13                      2                2           -1 -3
-Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                4          1 3 7 15                    2                2           -1 1
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0                0              0                0              0             2                3          16 32 24                    2                2           16 32
+Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              0                0              0                0              1             2                2          8 16                        2                2           -8 8
+Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              0                0              0                0              2             2                2          4 12                        2                2           -4 -12
+Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              0                0              0                0              3             2                2          2 10                        2                3           -2 -6 -14
+Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
+Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                2          1 3                         2                3           -1 -5 -13
+Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              0                0              0                0              3             2                2          2 6                         2                2           -2 -10
+Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                2          1 5                         2                3           -1 -3 -11
+Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                3          1 3 7                       2                2           -1 -9
+Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              0                0              0                0              2             2                2          4 12                        2                2           -4 4
+Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              0                0              0                0              3             2                2          2 10                        2                2           -2 -6
+Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                2          1 9                         2                3           -1 -3 -7
+Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                3          1 3 11                      2                2           -1 -5
+Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              0                0              0                0              3             2                3          2 6 14                      2                2           -2 2
+Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                3          1 5 13                      2                2           -1 -3
+Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              0                0              0                0              4             2                4          1 3 7 15                    2                2           -1 1
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -56,8 +56,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg
index 4f9a7857f0daa71a9d60e94f5848555e39cd23c8..c043cd45fbe22c786390436e66421b2973f73c22 100644
--- a/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg
+++ b/cfg/nonCTC-SliceConfigExamples/encoder_randomaccess_vtm_SingleTilePerSlice.cfg
@@ -17,23 +17,23 @@ GOPSize                       : 16          # GOP Size (number of B slice = GOPS
 
 IntraQPOffset                 : -3
 LambdaFromQpEnable            : 1           # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
-#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
-Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0             2                3          16 32 24                    2                2           16 32
-Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              1             2                2          8 16                        2                2           -8 8
-Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 -12
-Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                3           -2 -6 -14
-Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
-Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 3                         2                3           -1 -5 -13
-Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 6                         2                2           -2 -10
-Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 5                         2                3           -1 -3 -11
-Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 7                       2                2           -1 -9
-Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              2             2                2          4 12                        2                2           -4 4
-Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                2          2 10                        2                2           -2 -6
-Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                2          1 9                         2                3           -1 -3 -7
-Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 3 11                      2                2           -1 -5
-Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              3             2                3          2 6 14                      2                2           -2 2
-Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                3          1 5 13                      2                2           -1 -3
-Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              4             2                4          1 3 7 15                    2                2           -1 1
+#        Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0   reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1   reference_pictures_L1
+Frame1:   B   16   1        0.0                      0.0            0          0          1.0      0            0              0                0               0               0              0             2                3          16 32 24                    2                2           16 32
+Frame2:   B    8   1       -4.8848                   0.2061         0          0          1.0      0            0              0                0               0               0              1             2                2          8 16                        2                2           -8 8
+Frame3:   B    4   4       -5.7476                   0.2286         0          0          1.0      0            0              0                0               0               0              2             2                2          4 12                        2                2           -4 -12
+Frame4:   B    2   5       -5.90                     0.2333         0          0          1.0      0            0              0                0               0               0              3             2                2          2 10                        2                3           -2 -6 -14
+Frame5:   B    1   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                2          1 -1                        2                4           -1 -3 -7 -15
+Frame6:   B    3   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                2          1 3                         2                3           -1 -5 -13
+Frame7:   B    6   5       -5.90                     0.2333         0          0          1.0      0            0              0                0               0               0              3             2                2          2 6                         2                2           -2 -10
+Frame8:   B    5   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                2          1 5                         2                3           -1 -3 -11
+Frame9:   B    7   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                3          1 3 7                       2                2           -1 -9
+Frame10:  B   12   4       -5.7476                   0.2286         0          0          1.0      0            0              0                0               0               0              2             2                2          4 12                        2                2           -4 4
+Frame11:  B   10   5       -5.90                     0.2333         0          0          1.0      0            0              0                0               0               0              3             2                2          2 10                        2                2           -2 -6
+Frame12:  B    9   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                2          1 9                         2                3           -1 -3 -7
+Frame13:  B   11   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                3          1 3 11                      2                2           -1 -5
+Frame14:  B   14   5       -5.90                     0.2333         0          0          1.0      0            0              0                0               0               0              3             2                3          2 6 14                      2                2           -2 2
+Frame15:  B   13   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                3          1 5 13                      2                2           -1 -3
+Frame16:  B   15   6       -7.1444                   0.3            0          0          1.0      0            0              0                0               0               0              4             2                4          1 3 7 15                    2                2           -1 1
 
 #=========== Motion Search =============
 FastSearch                    : 1           # 0:Full search  1:TZ search
@@ -56,8 +56,12 @@ RDOQTS                        : 1           # RDOQ for transform skip
 #=========== Deblock Filter ============
 LoopFilterOffsetInPPS         : 1           # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param)
 LoopFilterDisable             : 0           # Disable deblocking filter (0=Filter, 1=No Filter)
-LoopFilterBetaOffset_div2     : 0           # base_param: -6 ~ 6
-LoopFilterTcOffset_div2       : 0           # base_param: -6 ~ 6
+LoopFilterBetaOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterTcOffset_div2       : 0           # base_param: -12 ~ 12
+LoopFilterCbBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCbTcOffset_div2     : 0           # base_param: -12 ~ 12
+LoopFilterCrBetaOffset_div2   : 0           # base_param: -12 ~ 12
+LoopFilterCrTcOffset_div2     : 0           # base_param: -12 ~ 12
 DeblockingFilterMetric        : 0           # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0)
 
 #=========== Misc. ============
diff --git a/doc/software-manual.pdf b/doc/software-manual.pdf
index d882b72ad3d0098f52a4e4eaf55fefd37a4f725c..15449e8663f315b70108713dd6fdb6a6627c49e5 100644
Binary files a/doc/software-manual.pdf and b/doc/software-manual.pdf differ
diff --git a/doc/software-manual.tex b/doc/software-manual.tex
index e0df3c4d0c478131d1862dea79cbc1b4945c0549..b81705b16098c205b730fa64e132a6d15e60495b 100644
--- a/doc/software-manual.tex
+++ b/doc/software-manual.tex
@@ -452,15 +452,35 @@ optimization. Higher values mean lower quality and less bits. Typical
 range is between
 0.3 and 1.
 
-\item[]\textbf{tcOffsetDiv2}: In-loop deblocking filter parameter tcOffsetDiv2 
+\item[]\textbf{tcOffsetDiv2}: An in-loop deblocking filter parameter for luma component, tcOffsetDiv2 
 is added to the base parameter LoopFilterTcOffset_div2 to set the final tc_offset_div2 
 parameter for this picture signalled in the slice segment header. The final 
-value of tc_offset_div2 shall be an integer number in the range $-6..6$.
+value of tc_offset_div2 shall be an integer number in the range $-12..12$.
 
-\item[]\textbf{betaOffsetDiv2}: In-loop deblocking filter parameter betaOffsetDiv2 
+\item[]\textbf{betaOffsetDiv2}: An in-loop deblocking filter parameter for luma component, betaOffsetDiv2 
 is added to the base parameter LoopFilterBetaOffset_div2 to set the final beta_offset_div2 
 parameter for this picture signalled in the slice segment header. The final 
-value of beta_offset_div2 shall be an integer number in the range $-6..6$.
+value of beta_offset_div2 shall be an integer number in the range $-12..12$.
+
+\item[]\textbf{CbTcOffsetDiv2}: An in-loop deblocking filter parameter for Cb component, CbTcOffsetDiv2 
+is added to the base parameter LoopFilterCbTcOffset_div2 to set the final tc_offset_div2 
+parameter for this picture signalled in the slice segment header. The final 
+value of tc_offset_div2 shall be an integer number in the range $-12..12$.
+
+\item[]\textbf{CbBetaOffsetDiv2}: An in-loop deblocking filter parameter for Cb component, CbBetaOffsetDiv2 
+is added to the base parameter LoopFilterCbBetaOffset_div2 to set the final beta_offset_div2 
+parameter for this picture signalled in the slice segment header. The final 
+value of beta_offset_div2 shall be an integer number in the range $-12..12$.
+
+\item[]\textbf{CrTcOffsetDiv2}: An in-loop deblocking filter parameter for Cr component, CrTcOffsetDiv2 
+is added to the base parameter LoopFilterCrTcOffset_div2 to set the final tc_offset_div2 
+parameter for this picture signalled in the slice segment header. The final 
+value of tc_offset_div2 shall be an integer number in the range $-12..12$.
+
+\item[]\textbf{CrBetaOffsetDiv2}: An in-loop deblocking filter parameter for Cr component, CrBetaOffsetDiv2 
+is added to the base parameter LoopFilterCrBetaOffset_div2 to set the final beta_offset_div2 
+parameter for this picture signalled in the slice segment header. The final 
+value of beta_offset_div2 shall be an integer number in the range $-12..12$.
 
 \item[]\textbf{temporal_id}: Temporal layer of the frame. A frame cannot
 predict from a frame with a higher temporal id. If a frame with higher
@@ -543,6 +563,10 @@ SliceCrQPOffset        &   0  &    0   &         0   &       0 \\
 QPfactor               & 0.5  &  0.5   &       0.5   &     0.5 \\
 tcOffsetDiv2           &   0  &    1   &         2   &       2 \\  
 betaOffsetDiv2         &   0  &    0   &         0   &       0 \\
+CbTcOffsetDiv2         &   0  &    0   &         0   &       0 \\  
+CbBetaOffsetDiv2       &   0  &    0   &         0   &       0 \\
+CrTcOffsetDiv2         &   0  &    0   &         0   &       0 \\  
+CrBetaOffsetDiv2       &   0  &    0   &         0   &       0 \\
 temporal_id            &   0  &    1   &         2   &       2 \\
 num_ref_pics_active_L0 &   1  &    1   &         1   &       1 \\
 num_ref_pics_L0        &   1  &    1   &         1   &       1 \\
@@ -562,10 +586,10 @@ line should contain information for one frame, so this
 configuration would be specified as:
 
 \begin{verbatim}
-Frame1: P 4 1 0 0 0.5 0 0 0 1 1  4 1 1  4
-Frame2: B 2 2 0 0 0.5 1 0 1 1 1  2 1 1 -2
-Frame3: B 1 3 0 0 0.5 2 0 2 1 1  1 1 2 -1 -3
-Frame4: B 3 3 0 0 0.5 2 0 2 1 1  1 1 1 -1
+Frame1: P 4 1 0 0 0.5 0 0 0 0 0 0 0 1 1  4 1 1  4
+Frame2: B 2 2 0 0 0.5 1 0 0 0 0 0 1 1 1  2 1 1 -2
+Frame3: B 1 3 0 0 0.5 2 0 0 0 0 0 2 1 1  1 1 2 -1 -3
+Frame4: B 3 3 0 0 0.5 2 0 0 0 0 0 2 1 1  1 1 1 -1
 \end{verbatim}
 
 
@@ -1891,7 +1915,7 @@ Otherwise, the in-loop deblocking filter control parameters are sent in the slic
 If deblocking filter parameters are sent in PPS, the same values of deblocking filter parameters 
 are used for all pictures in the sequence (i.e. deblocking parameter = base parameter value).  
 If deblocking filter parameters are sent in the slice segment header, varying deblocking filter 
-parameters can be specified by setting parameters tcOffsetDiv2 and betaOffsetDiv2 in the GOP structure table. 
+parameters can be specified by setting parameters tcOffsetDiv2, betaOffsetDiv2 for luma; CbTcOffsetDiv2, CbBetaOffsetDiv2 for Cb and CrTcOffsetDiv2, CrBetaOffsetDiv2 for Cr in the GOP structure table. 
 In this case, the final value of the deblocking filter parameter sent for a certain GOP picture is equal to 
 (base parameter + GOP parameter for this picture). Intra-pictures use the base parameters values.
 \\
@@ -1899,15 +1923,43 @@ In this case, the final value of the deblocking filter parameter sent for a cert
 \Option{LoopFilterTcOffset_div2}&
 %\ShortOption{\None}&
 \Default{0}&
-Specifies the base value for the in-loop deblocking filter parameter tc_offset_div2. The final value of tc_offset_div2 
-shall be an integer number in the range $-6..6$.
+Specifies the base value for the in-loop deblocking filter parameter tc_offset_div2 for luma component. The final value of tc_offset_div2 
+shall be an integer number in the range $-12..12$.
 \\
 
 \Option{LoopFilterBetaOffset_div2}&
 %\ShortOption{\None}&
 \Default{0}&
-Specifies the base value for the in-loop deblocking filter parameter beta_offset_div2. The final value of beta_offset_div2 
-shall be an integer number in the range $-6..6$.
+Specifies the base value for the in-loop deblocking filter parameter beta_offset_div2 for luma component. The final value of beta_offset_div2 
+shall be an integer number in the range $-12..12$.
+\\
+
+\Option{LoopFilterCbTcOffset_div2}&
+%\ShortOption{\None}&
+\Default{0}&
+Specifies the base value for the in-loop deblocking filter parameter tc_offset_div2 for Cb component. The final value of tc_offset_div2 
+shall be an integer number in the range $-12..12$.
+\\
+
+\Option{LoopFilterCbBetaOffset_div2}&
+%\ShortOption{\None}&
+\Default{0}&
+Specifies the base value for the in-loop deblocking filter parameter beta_offset_div2 for Cb component. The final value of beta_offset_div2 
+shall be an integer number in the range $-12..12$.
+\\
+
+\Option{LoopFilterCrTcOffset_div2}&
+%\ShortOption{\None}&
+\Default{0}&
+Specifies the base value for the in-loop deblocking filter parameter tc_offset_div2 for Cr component. The final value of tc_offset_div2 
+shall be an integer number in the range $-12..12$.
+\\
+
+\Option{LoopFilterCrBetaOffset_div2}&
+%\ShortOption{\None}&
+\Default{0}&
+Specifies the base value for the in-loop deblocking filter parameter beta_offset_div2 for Cr component. The final value of beta_offset_div2 
+shall be an integer number in the range $-12..12$.
 \\
 
 \Option{DeblockingFilterMetric}&
diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp
index 20d7035d733c3374823b7b41859d99a1cf077ced..49eafcf8c801e19eb8238006b380f0b763c5d3a1 100644
--- a/source/App/EncoderApp/EncApp.cpp
+++ b/source/App/EncoderApp/EncApp.cpp
@@ -297,6 +297,12 @@ void EncApp::xInitLibCfg()
   m_cEncLib.setLoopFilterOffsetInPPS                             ( m_loopFilterOffsetInPPS );
   m_cEncLib.setLoopFilterBetaOffset                              ( m_loopFilterBetaOffsetDiv2  );
   m_cEncLib.setLoopFilterTcOffset                                ( m_loopFilterTcOffsetDiv2    );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  m_cEncLib.setLoopFilterCbBetaOffset                            ( m_loopFilterCbBetaOffsetDiv2  );
+  m_cEncLib.setLoopFilterCbTcOffset                              ( m_loopFilterCbTcOffsetDiv2    );
+  m_cEncLib.setLoopFilterCrBetaOffset                            ( m_loopFilterCrBetaOffsetDiv2  );
+  m_cEncLib.setLoopFilterCrTcOffset                              ( m_loopFilterCrTcOffsetDiv2    );
+#endif
 #if W0038_DB_OPT
   m_cEncLib.setDeblockingFilterMetric                            ( m_deblockingFilterMetric );
 #else
diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index f43b3cc8c6fad419c2b4bd1ace7ee1c7c2954b3a..8baddf032aa8c6c52b4a23dd69a0c4d1a1f71d3d 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -190,6 +190,12 @@ std::istringstream &operator>>(std::istringstream &in, GOPEntry &entry)     //in
   in>>entry.m_QPFactor;
   in>>entry.m_tcOffsetDiv2;
   in>>entry.m_betaOffsetDiv2;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  in>>entry.m_CbTcOffsetDiv2;
+  in>>entry.m_CbBetaOffsetDiv2;
+  in>>entry.m_CrTcOffsetDiv2;
+  in>>entry.m_CrBetaOffsetDiv2;
+#endif
   in>>entry.m_temporalId;
   in >> entry.m_numRefPicsActive0;
   in >> entry.m_numRefPics0;
@@ -1097,6 +1103,12 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
   ("LoopFilterOffsetInPPS",                           m_loopFilterOffsetInPPS,                           true)
   ("LoopFilterBetaOffset_div2",                       m_loopFilterBetaOffsetDiv2,                           0)
   ("LoopFilterTcOffset_div2",                         m_loopFilterTcOffsetDiv2,                             0)
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  ("LoopFilterCbBetaOffset_div2",                     m_loopFilterCbBetaOffsetDiv2,                         0)
+  ("LoopFilterCbTcOffset_div2",                       m_loopFilterCbTcOffsetDiv2,                           0)
+  ("LoopFilterCrBetaOffset_div2",                     m_loopFilterCrBetaOffsetDiv2,                         0)
+  ("LoopFilterCrTcOffset_div2",                       m_loopFilterCrTcOffsetDiv2,                           0)
+#endif
 #if W0038_DB_OPT
   ("DeblockingFilterMetric",                          m_deblockingFilterMetric,                             0)
 #else
@@ -2440,8 +2452,17 @@ bool EncAppCfg::xCheckParameter()
 #else
   xConfirmPara( m_DeblockingFilterMetric && (m_bLoopFilterDisable || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is true then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0");
 #endif
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  xConfirmPara( m_loopFilterBetaOffsetDiv2 < -12 || m_loopFilterBetaOffsetDiv2 > 12,          "Loop Filter Beta Offset div. 2 exceeds supported range (-12 to 12" );
+  xConfirmPara( m_loopFilterTcOffsetDiv2 < -12 || m_loopFilterTcOffsetDiv2 > 12,              "Loop Filter Tc Offset div. 2 exceeds supported range (-12 to 12)" );
+  xConfirmPara( m_loopFilterCbBetaOffsetDiv2 < -12 || m_loopFilterCbBetaOffsetDiv2 > 12,      "Loop Filter Beta Offset div. 2 exceeds supported range (-12 to 12" );
+  xConfirmPara( m_loopFilterCbTcOffsetDiv2 < -12 || m_loopFilterCbTcOffsetDiv2 > 12,          "Loop Filter Tc Offset div. 2 exceeds supported range (-12 to 12)" );
+  xConfirmPara( m_loopFilterCrBetaOffsetDiv2 < -12 || m_loopFilterCrBetaOffsetDiv2 > 12,      "Loop Filter Beta Offset div. 2 exceeds supported range (-12 to 12" );
+  xConfirmPara( m_loopFilterCrTcOffsetDiv2 < -12 || m_loopFilterCrTcOffsetDiv2 > 12,          "Loop Filter Tc Offset div. 2 exceeds supported range (-12 to 12)" );
+#else
   xConfirmPara( m_loopFilterBetaOffsetDiv2 < -6 || m_loopFilterBetaOffsetDiv2 > 6,          "Loop Filter Beta Offset div. 2 exceeds supported range (-6 to 6)" );
   xConfirmPara( m_loopFilterTcOffsetDiv2 < -6 || m_loopFilterTcOffsetDiv2 > 6,              "Loop Filter Tc Offset div. 2 exceeds supported range (-6 to 6)" );
+#endif
   xConfirmPara( m_iSearchRange < 0 ,                                                        "Search Range must be more than 0" );
   xConfirmPara( m_bipredSearchRange < 0 ,                                                   "Bi-prediction refinement search range must be more than 0" );
   xConfirmPara( m_minSearchWindow < 0,                                                      "Minimum motion search window size for the adaptive window ME must be greater than or equal to 0" );
@@ -2612,6 +2633,12 @@ bool EncAppCfg::xCheckParameter()
     m_GOPList[0].m_QPFactor = 1;
     m_GOPList[0].m_betaOffsetDiv2 = 0;
     m_GOPList[0].m_tcOffsetDiv2 = 0;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    m_GOPList[0].m_CbBetaOffsetDiv2 = 0;
+    m_GOPList[0].m_CbTcOffsetDiv2 = 0;
+    m_GOPList[0].m_CrBetaOffsetDiv2 = 0;
+    m_GOPList[0].m_CrTcOffsetDiv2 = 0;
+#endif
     m_GOPList[0].m_POC = 1;
     m_RPLList0[0] = RPLEntry();
     m_RPLList1[0] = RPLEntry();
@@ -2654,8 +2681,17 @@ bool EncAppCfg::xCheckParameter()
   {
     for(int i=0; i<m_iGOPSize; i++)
     {
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      xConfirmPara( (m_GOPList[i].m_betaOffsetDiv2 + m_loopFilterBetaOffsetDiv2) < -12 || (m_GOPList[i].m_betaOffsetDiv2 + m_loopFilterBetaOffsetDiv2) > 12, "Loop Filter Beta Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" );
+      xConfirmPara( (m_GOPList[i].m_tcOffsetDiv2 + m_loopFilterTcOffsetDiv2) < -12 || (m_GOPList[i].m_tcOffsetDiv2 + m_loopFilterTcOffsetDiv2) > 12, "Loop Filter Tc Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" );
+      xConfirmPara( (m_GOPList[i].m_CbBetaOffsetDiv2 + m_loopFilterCbBetaOffsetDiv2) < -12 || (m_GOPList[i].m_CbBetaOffsetDiv2 + m_loopFilterCbBetaOffsetDiv2) > 12, "Loop Filter Beta Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" );
+      xConfirmPara( (m_GOPList[i].m_CbTcOffsetDiv2 + m_loopFilterCbTcOffsetDiv2) < -12 || (m_GOPList[i].m_CbTcOffsetDiv2 + m_loopFilterCbTcOffsetDiv2) > 12, "Loop Filter Tc Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" );
+      xConfirmPara( (m_GOPList[i].m_CrBetaOffsetDiv2 + m_loopFilterCrBetaOffsetDiv2) < -12 || (m_GOPList[i].m_CrBetaOffsetDiv2 + m_loopFilterCrBetaOffsetDiv2) > 12, "Loop Filter Beta Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" );
+      xConfirmPara( (m_GOPList[i].m_CrTcOffsetDiv2 + m_loopFilterCrTcOffsetDiv2) < -12 || (m_GOPList[i].m_CrTcOffsetDiv2 + m_loopFilterCrTcOffsetDiv2) > 12, "Loop Filter Tc Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" );
+#else
       xConfirmPara( (m_GOPList[i].m_betaOffsetDiv2 + m_loopFilterBetaOffsetDiv2) < -6 || (m_GOPList[i].m_betaOffsetDiv2 + m_loopFilterBetaOffsetDiv2) > 6, "Loop Filter Beta Offset div. 2 for one of the GOP entries exceeds supported range (-6 to 6)" );
       xConfirmPara( (m_GOPList[i].m_tcOffsetDiv2 + m_loopFilterTcOffsetDiv2) < -6 || (m_GOPList[i].m_tcOffsetDiv2 + m_loopFilterTcOffsetDiv2) > 6, "Loop Filter Tc Offset div. 2 for one of the GOP entries exceeds supported range (-6 to 6)" );
+#endif
     }
   }
 
diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h
index 3d6f3bc17dbcf1d213b54f7c42ea2f1b92d86236..f49621074a7a4c0b8d482a7b1a55e669a64c2dd0 100644
--- a/source/App/EncoderApp/EncAppCfg.h
+++ b/source/App/EncoderApp/EncAppCfg.h
@@ -411,6 +411,12 @@ protected:
   bool      m_loopFilterOffsetInPPS;                         ///< offset for deblocking filter in 0 = slice header, 1 = PPS
   int       m_loopFilterBetaOffsetDiv2;                     ///< beta offset for deblocking filter
   int       m_loopFilterTcOffsetDiv2;                       ///< tc offset for deblocking filter
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int       m_loopFilterCbBetaOffsetDiv2;                     ///< beta offset for Cb deblocking filter
+  int       m_loopFilterCbTcOffsetDiv2;                       ///< tc offset for Cb deblocking filter
+  int       m_loopFilterCrBetaOffsetDiv2;                     ///< beta offset for Cr deblocking filter
+  int       m_loopFilterCrTcOffsetDiv2;                       ///< tc offset for Cr deblocking filter
+#endif
 #if W0038_DB_OPT
   int       m_deblockingFilterMetric;                         ///< blockiness metric in encoder
 #else
diff --git a/source/Lib/CommonLib/LoopFilter.cpp b/source/Lib/CommonLib/LoopFilter.cpp
index 5ab5c8486362ccb84df10cf2020324d8627c5f32..e0d8d547b1f000c7fd40b3b54bc3d7ae699f7ee7 100644
--- a/source/Lib/CommonLib/LoopFilter.cpp
+++ b/source/Lib/CommonLib/LoopFilter.cpp
@@ -1108,8 +1108,13 @@ void LoopFilter::xEdgeFilterChroma(const CodingUnit& cu, const DeblockEdgeDir ed
 
   bool      bPartPNoFilter  = false;
   bool      bPartQNoFilter  = false;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  const int tcOffsetDiv2[2]   = { slice.getDeblockingFilterCbTcOffsetDiv2(), slice.getDeblockingFilterCrTcOffsetDiv2() };
+  const int betaOffsetDiv2[2] = { slice.getDeblockingFilterCbBetaOffsetDiv2(), slice.getDeblockingFilterCrBetaOffsetDiv2() };
+#else
   const int tcOffsetDiv2    = slice.getDeblockingFilterTcOffsetDiv2();
   const int betaOffsetDiv2  = slice.getDeblockingFilterBetaOffsetDiv2();
+#endif
 
   // Vertical Position
   unsigned uiEdgeNumInCtuVert = rasterIdx % pcv.partsInCtuWidth + iEdge;
@@ -1240,12 +1245,20 @@ void LoopFilter::xEdgeFilterChroma(const CodingUnit& cu, const DeblockEdgeDir ed
         int iQP = ((baseQp_Q + baseQp_P + 1) >> 1);
 
 
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        const int iIndexTC = Clip3<int>(0, MAX_QP + DEFAULT_INTRA_TC_OFFSET, iQP + DEFAULT_INTRA_TC_OFFSET * (bS[chromaIdx] - 1) + (tcOffsetDiv2[chromaIdx] << 1));
+#else
         const int iIndexTC = Clip3<int>(0, MAX_QP + DEFAULT_INTRA_TC_OFFSET, iQP + DEFAULT_INTRA_TC_OFFSET * (bS[chromaIdx] - 1) + (tcOffsetDiv2 << 1));
+#endif
         const int iTc = sps.getBitDepth(CHANNEL_TYPE_CHROMA) < 10 ? ((sm_tcTable[iIndexTC] + 2) >> (10 - sps.getBitDepth(CHANNEL_TYPE_CHROMA))) : ((sm_tcTable[iIndexTC]) << (sps.getBitDepth(CHANNEL_TYPE_CHROMA) - 10));
         bool useLongFilter = false;
         if (largeBoundary)
         {
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        const int indexB = Clip3<int>(0, MAX_QP, iQP + (betaOffsetDiv2[chromaIdx] << 1));
+#else
         const int indexB = Clip3<int>(0, MAX_QP, iQP + (betaOffsetDiv2 << 1));
+#endif
         const int beta = sm_betaTable[indexB] * iBitdepthScale;
 
         const int dp0 = xCalcDP(piTmpSrcChroma + iSrcStep*(iIdx*uiLoopLength + 0), iOffset, isChromaHorCTBBoundary);
diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp
index 9a6be61d36410fc912d1a7ab3b2bbd560a3d84cb..df9936f98b982f49549927a7ea72d2ecd8b0b887 100644
--- a/source/Lib/CommonLib/Slice.cpp
+++ b/source/Lib/CommonLib/Slice.cpp
@@ -67,6 +67,12 @@ Slice::Slice()
 , m_deblockingFilterOverrideFlag  ( false )
 , m_deblockingFilterBetaOffsetDiv2( 0 )
 , m_deblockingFilterTcOffsetDiv2  ( 0 )
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+, m_deblockingFilterCbBetaOffsetDiv2( 0 )
+, m_deblockingFilterCbTcOffsetDiv2  ( 0 )
+, m_deblockingFilterCrBetaOffsetDiv2( 0 )
+, m_deblockingFilterCrTcOffsetDiv2  ( 0 )
+#endif
 , m_pendingRasInit                ( false )
 , m_bCheckLDC                     ( false )
 , m_biDirPred                    ( false )
@@ -224,6 +230,12 @@ void Slice::inheritFromPicHeader( PicHeader *picHeader, const PPS *pps, const SP
   setDeblockingFilterDisable( picHeader->getDeblockingFilterDisable() );
   setDeblockingFilterBetaOffsetDiv2( picHeader->getDeblockingFilterBetaOffsetDiv2() );
   setDeblockingFilterTcOffsetDiv2( picHeader->getDeblockingFilterTcOffsetDiv2() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  setDeblockingFilterCbBetaOffsetDiv2( picHeader->getDeblockingFilterCbBetaOffsetDiv2() );
+  setDeblockingFilterCbTcOffsetDiv2( picHeader->getDeblockingFilterCbTcOffsetDiv2() );
+  setDeblockingFilterCrBetaOffsetDiv2( picHeader->getDeblockingFilterCrBetaOffsetDiv2() );
+  setDeblockingFilterCrTcOffsetDiv2( picHeader->getDeblockingFilterCrTcOffsetDiv2() );
+#endif
 
   setSaoEnabledFlag(CHANNEL_TYPE_LUMA,     picHeader->getSaoEnabledFlag(CHANNEL_TYPE_LUMA));
   setSaoEnabledFlag(CHANNEL_TYPE_CHROMA,   picHeader->getSaoEnabledFlag(CHANNEL_TYPE_CHROMA));
@@ -751,6 +763,12 @@ void Slice::copySliceInfo(Slice *pSrc, bool cpyAlmostAll)
   m_deblockingFilterOverrideFlag    = pSrc->m_deblockingFilterOverrideFlag;
   m_deblockingFilterBetaOffsetDiv2  = pSrc->m_deblockingFilterBetaOffsetDiv2;
   m_deblockingFilterTcOffsetDiv2    = pSrc->m_deblockingFilterTcOffsetDiv2;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  m_deblockingFilterCbBetaOffsetDiv2  = pSrc->m_deblockingFilterCbBetaOffsetDiv2;
+  m_deblockingFilterCbTcOffsetDiv2    = pSrc->m_deblockingFilterCbTcOffsetDiv2;
+  m_deblockingFilterCrBetaOffsetDiv2  = pSrc->m_deblockingFilterCrBetaOffsetDiv2;
+  m_deblockingFilterCrTcOffsetDiv2    = pSrc->m_deblockingFilterCrTcOffsetDiv2;
+#endif
 
   for (i = 0; i < NUM_REF_PIC_LIST_01; i++)
   {
@@ -1648,6 +1666,12 @@ PicHeader::PicHeader()
 , m_deblockingFilterDisable                       ( 0 )
 , m_deblockingFilterBetaOffsetDiv2                ( 0 )
 , m_deblockingFilterTcOffsetDiv2                  ( 0 )
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+, m_deblockingFilterCbBetaOffsetDiv2              ( 0 )
+, m_deblockingFilterCbTcOffsetDiv2                ( 0 )
+, m_deblockingFilterCrBetaOffsetDiv2              ( 0 )
+, m_deblockingFilterCrTcOffsetDiv2                ( 0 )
+#endif
 , m_lmcsEnabledFlag                               ( 0 )
 , m_lmcsApsId                                     ( -1 )
 , m_lmcsAps                                       ( nullptr )
@@ -1743,6 +1767,12 @@ void PicHeader::initPicHeader()
   m_deblockingFilterDisable                       = 0;
   m_deblockingFilterBetaOffsetDiv2                = 0;
   m_deblockingFilterTcOffsetDiv2                  = 0;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  m_deblockingFilterCbBetaOffsetDiv2              = 0;
+  m_deblockingFilterCbTcOffsetDiv2                = 0;
+  m_deblockingFilterCrBetaOffsetDiv2              = 0;
+  m_deblockingFilterCrTcOffsetDiv2                = 0;
+#endif
   m_lmcsEnabledFlag                               = 0;
   m_lmcsApsId                                     = -1;
   m_lmcsAps                                       = nullptr;
diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h
index 994e925ec149fb37cda24be285b900d299e54113..4fb4fb24d5a9bb8de0eaaad93451280416c06daa 100644
--- a/source/Lib/CommonLib/Slice.h
+++ b/source/Lib/CommonLib/Slice.h
@@ -1638,6 +1638,12 @@ private:
   bool             m_ppsDeblockingFilterDisabledFlag;
   int              m_deblockingFilterBetaOffsetDiv2;    //< beta offset for deblocking filter
   int              m_deblockingFilterTcOffsetDiv2;      //< tc offset for deblocking filter
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int              m_deblockingFilterCbBetaOffsetDiv2;    //< beta offset for Cb deblocking filter
+  int              m_deblockingFilterCbTcOffsetDiv2;      //< tc offset for Cb deblocking filter
+  int              m_deblockingFilterCrBetaOffsetDiv2;    //< beta offset for Cr deblocking filter
+  int              m_deblockingFilterCrTcOffsetDiv2;      //< tc offset for Cr deblocking filter
+#endif
   bool             m_listsModificationPresentFlag;
 
 
@@ -1855,6 +1861,16 @@ public:
   int                    getDeblockingFilterBetaOffsetDiv2() const                        { return m_deblockingFilterBetaOffsetDiv2;      } //!< get beta offset for deblocking filter
   void                   setDeblockingFilterTcOffsetDiv2(int val)                         { m_deblockingFilterTcOffsetDiv2 = val;         } //!< set tc offset for deblocking filter
   int                    getDeblockingFilterTcOffsetDiv2() const                          { return m_deblockingFilterTcOffsetDiv2;        } //!< get tc offset for deblocking filter
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  void                   setDeblockingFilterCbBetaOffsetDiv2(int val)                     { m_deblockingFilterCbBetaOffsetDiv2 = val;     } //!< set beta offset for Cb deblocking filter
+  int                    getDeblockingFilterCbBetaOffsetDiv2() const                      { return m_deblockingFilterCbBetaOffsetDiv2;    } //!< get beta offset for Cb deblocking filter
+  void                   setDeblockingFilterCbTcOffsetDiv2(int val)                       { m_deblockingFilterCbTcOffsetDiv2 = val;       } //!< set tc offset for Cb deblocking filter
+  int                    getDeblockingFilterCbTcOffsetDiv2() const                        { return m_deblockingFilterCbTcOffsetDiv2;      } //!< get tc offset for Cb deblocking filter
+  void                   setDeblockingFilterCrBetaOffsetDiv2(int val)                     { m_deblockingFilterCrBetaOffsetDiv2 = val;     } //!< set beta offset for Cr deblocking filter
+  int                    getDeblockingFilterCrBetaOffsetDiv2() const                      { return m_deblockingFilterCrBetaOffsetDiv2;    } //!< get beta offset for Cr deblocking filter
+  void                   setDeblockingFilterCrTcOffsetDiv2(int val)                       { m_deblockingFilterCrTcOffsetDiv2 = val;       } //!< set tc offset for Cr deblocking filter
+  int                    getDeblockingFilterCrTcOffsetDiv2() const                        { return m_deblockingFilterCrTcOffsetDiv2;      } //!< get tc offset for Cr deblocking filter
+#endif
   bool                   getListsModificationPresentFlag() const                          { return m_listsModificationPresentFlag;        }
   void                   setListsModificationPresentFlag( bool b )                        { m_listsModificationPresentFlag = b;           }
   bool                   getPictureHeaderExtensionPresentFlag() const                     { return m_pictureHeaderExtensionPresentFlag;     }
@@ -2013,6 +2029,12 @@ private:
   bool                        m_deblockingFilterDisable;                                //!< deblocking filter disabled flag
   int                         m_deblockingFilterBetaOffsetDiv2;                         //!< beta offset for deblocking filter
   int                         m_deblockingFilterTcOffsetDiv2;                           //!< tc offset for deblocking filter
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int                         m_deblockingFilterCbBetaOffsetDiv2;                       //!< beta offset for deblocking filter
+  int                         m_deblockingFilterCbTcOffsetDiv2;                         //!< tc offset for deblocking filter
+  int                         m_deblockingFilterCrBetaOffsetDiv2;                       //!< beta offset for deblocking filter
+  int                         m_deblockingFilterCrTcOffsetDiv2;                         //!< tc offset for deblocking filter
+#endif
   bool                        m_lmcsEnabledFlag;                                        //!< lmcs enabled flag
   int                         m_lmcsApsId;                                              //!< lmcs APS ID
   APS*                        m_lmcsAps;                                                //!< lmcs APS
@@ -2157,6 +2179,16 @@ public:
   int                         getDeblockingFilterBetaOffsetDiv2()const                  { return m_deblockingFilterBetaOffsetDiv2;                                                     }
   void                        setDeblockingFilterTcOffsetDiv2( int i )                  { m_deblockingFilterTcOffsetDiv2 = i;                                                          }  
   int                         getDeblockingFilterTcOffsetDiv2() const                   { return m_deblockingFilterTcOffsetDiv2;                                                       }    
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  void                        setDeblockingFilterCbBetaOffsetDiv2( int i )              { m_deblockingFilterCbBetaOffsetDiv2 = i;                                                      }
+  int                         getDeblockingFilterCbBetaOffsetDiv2()const                { return m_deblockingFilterCbBetaOffsetDiv2;                                                   }
+  void                        setDeblockingFilterCbTcOffsetDiv2( int i )                { m_deblockingFilterCbTcOffsetDiv2 = i;                                                        }
+  int                         getDeblockingFilterCbTcOffsetDiv2() const                 { return m_deblockingFilterCbTcOffsetDiv2;                                                     }
+  void                        setDeblockingFilterCrBetaOffsetDiv2( int i )              { m_deblockingFilterCrBetaOffsetDiv2 = i;                                                      }
+  int                         getDeblockingFilterCrBetaOffsetDiv2()const                { return m_deblockingFilterCrBetaOffsetDiv2;                                                   }
+  void                        setDeblockingFilterCrTcOffsetDiv2( int i )                { m_deblockingFilterCrTcOffsetDiv2 = i;                                                        }
+  int                         getDeblockingFilterCrTcOffsetDiv2() const                 { return m_deblockingFilterCrTcOffsetDiv2;                                                     }
+#endif
   void                        setLmcsEnabledFlag(bool b)                                { m_lmcsEnabledFlag = b;                                                                       }
   bool                        getLmcsEnabledFlag()                                      { return m_lmcsEnabledFlag;                                                                    }
   const bool                  getLmcsEnabledFlag() const                                { return m_lmcsEnabledFlag;                                                                    }
@@ -2246,6 +2278,12 @@ private:
   bool                       m_deblockingFilterOverrideFlag;      //< offsets for deblocking filter inherit from PPS
   int                        m_deblockingFilterBetaOffsetDiv2;    //< beta offset for deblocking filter
   int                        m_deblockingFilterTcOffsetDiv2;      //< tc offset for deblocking filter
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int                        m_deblockingFilterCbBetaOffsetDiv2;  //< beta offset for deblocking filter
+  int                        m_deblockingFilterCbTcOffsetDiv2;    //< tc offset for deblocking filter
+  int                        m_deblockingFilterCrBetaOffsetDiv2;  //< beta offset for deblocking filter
+  int                        m_deblockingFilterCrTcOffsetDiv2;    //< tc offset for deblocking filter
+#endif
   int                        m_list1IdxToList0Idx[MAX_NUM_REF];
   int                        m_aiNumRefIdx   [NUM_REF_PIC_LIST_01];    //  for multiple reference of current slice
   bool                       m_pendingRasInit;
@@ -2377,6 +2415,12 @@ public:
   bool                        getDeblockingFilterOverrideFlag() const                { return m_deblockingFilterOverrideFlag;                        }
   int                         getDeblockingFilterBetaOffsetDiv2()const               { return m_deblockingFilterBetaOffsetDiv2;                      }
   int                         getDeblockingFilterTcOffsetDiv2() const                { return m_deblockingFilterTcOffsetDiv2;                        }
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int                         getDeblockingFilterCbBetaOffsetDiv2()const             { return m_deblockingFilterCbBetaOffsetDiv2;                    }
+  int                         getDeblockingFilterCbTcOffsetDiv2() const              { return m_deblockingFilterCbTcOffsetDiv2;                      }
+  int                         getDeblockingFilterCrBetaOffsetDiv2()const             { return m_deblockingFilterCrBetaOffsetDiv2;                    }
+  int                         getDeblockingFilterCrTcOffsetDiv2() const              { return m_deblockingFilterCrTcOffsetDiv2;                      }
+#endif
   bool                        getPendingRasInit() const                              { return m_pendingRasInit;                                      }
   void                        setPendingRasInit( bool val )                          { m_pendingRasInit = val;                                       }
 
@@ -2416,6 +2460,12 @@ public:
   void                        setDeblockingFilterOverrideFlag( bool b )              { m_deblockingFilterOverrideFlag = b;                           }
   void                        setDeblockingFilterBetaOffsetDiv2( int i )             { m_deblockingFilterBetaOffsetDiv2 = i;                         }
   void                        setDeblockingFilterTcOffsetDiv2( int i )               { m_deblockingFilterTcOffsetDiv2 = i;                           }
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  void                        setDeblockingFilterCbBetaOffsetDiv2( int i )           { m_deblockingFilterCbBetaOffsetDiv2 = i;                         }
+  void                        setDeblockingFilterCbTcOffsetDiv2( int i )             { m_deblockingFilterCbTcOffsetDiv2 = i;                           }
+  void                        setDeblockingFilterCrBetaOffsetDiv2( int i )           { m_deblockingFilterCrBetaOffsetDiv2 = i;                         }
+  void                        setDeblockingFilterCrTcOffsetDiv2( int i )             { m_deblockingFilterCrTcOffsetDiv2 = i;                           }
+#endif
 
   void                        setNumRefIdx( RefPicList e, int i )                    { m_aiNumRefIdx[e]    = i;                                      }
   void                        setPic( Picture* p )                                   { m_pcPic             = p;                                      }
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 497c7c444721fd9a6ff012580d453c2ec8f05057..2e571ae13cd2c8b50c232d087fe437a0390741e7 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -79,6 +79,8 @@
 
 #define JVET_Q0293_REMOVAL_PDPC_CHROMA_NX2                1 // JVET-Q0293: Removal of chroma Nx2 blocks in PDPC 
 
+#define JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS          1 // JVET-Q0121: Add deblocking control parameters for Cb and Cr and extend the parameter ranges
+
 #define JVET_Q0517_RPR_AFFINE_DS                          1 // JVET-Q0517: affine down-sampling filters for RPR
 
 #define JVET_O1143_SUBPIC_BOUNDARY                        1 // treat subpicture boundary as piucture boundary
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index a99b9ab229b2511e0b9b271504cf6c0ce30381d0..b010fb9a134a5d70770a57c8aff22a5eb869bc83 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -686,8 +686,34 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS, ParameterSetManager *parameterSetMana
     READ_FLAG( uiCode, "pps_deblocking_filter_disabled_flag" );        pcPPS->setPPSDeblockingFilterDisabledFlag(uiCode ? true : false );
     if(!pcPPS->getPPSDeblockingFilterDisabledFlag())
     {
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      READ_SVLC( iCode, "pps_beta_offset_div2" );                    pcPPS->setDeblockingFilterBetaOffsetDiv2( iCode );
+      CHECK(  pcPPS->getDeblockingFilterBetaOffsetDiv2() < -12 ||
+              pcPPS->getDeblockingFilterBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration" );
+
+      READ_SVLC( iCode, "pps_tc_offset_div2");                       pcPPS->setDeblockingFilterTcOffsetDiv2( iCode );
+      CHECK(  pcPPS->getDeblockingFilterTcOffsetDiv2() < -12 ||
+              pcPPS->getDeblockingFilterTcOffsetDiv2() > 12, "Invalid deblocking filter configuration" );
+
+      READ_SVLC( iCode, "pps_cb_beta_offset_div2");                   pcPPS->setDeblockingFilterCbBetaOffsetDiv2( iCode );
+      CHECK(  pcPPS->getDeblockingFilterCbBetaOffsetDiv2() < -12 ||
+              pcPPS->getDeblockingFilterCbBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration" );
+
+      READ_SVLC( iCode, "pps_cb_tc_offset_div2");                     pcPPS->setDeblockingFilterCbTcOffsetDiv2( iCode );
+      CHECK(  pcPPS->getDeblockingFilterCbTcOffsetDiv2() < -12 ||
+              pcPPS->getDeblockingFilterCbTcOffsetDiv2() > 12, "Invalid deblocking filter configuration" );
+
+      READ_SVLC( iCode, "pps_cr_beta_offset_div2");                   pcPPS->setDeblockingFilterCrBetaOffsetDiv2( iCode );
+      CHECK(  pcPPS->getDeblockingFilterCrTcOffsetDiv2() < -12 ||
+              pcPPS->getDeblockingFilterCrTcOffsetDiv2() > 12, "Invalid deblocking filter configuration" );
+
+      READ_SVLC( iCode, "pps_cr_tc_offset_div2");                     pcPPS->setDeblockingFilterCrTcOffsetDiv2( iCode );
+      CHECK(  pcPPS->getDeblockingFilterCrTcOffsetDiv2() < -12 ||
+              pcPPS->getDeblockingFilterCrTcOffsetDiv2() > 12, "Invalid deblocking filter configuration" );
+#else
       READ_SVLC ( iCode, "pps_beta_offset_div2" );                     pcPPS->setDeblockingFilterBetaOffsetDiv2( iCode );
       READ_SVLC ( iCode, "pps_tc_offset_div2" );                       pcPPS->setDeblockingFilterTcOffsetDiv2( iCode );
+#endif
     }
   }
   READ_FLAG( uiCode, "constant_slice_header_params_enabled_flag"); pcPPS->setConstantSliceHeaderParamsEnabledFlag(uiCode);
@@ -2539,6 +2565,42 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag
 
     if(picHeader->getDeblockingFilterOverrideFlag())
     {
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      READ_FLAG( uiCode, "ph_deblocking_filter_disabled_flag" );
+      picHeader->setDeblockingFilterDisable(uiCode != 0);
+      if (!picHeader->getDeblockingFilterDisable())
+      {
+        READ_SVLC( iCode, "ph_beta_offset_div2" );
+        picHeader->setDeblockingFilterBetaOffsetDiv2(iCode);
+        CHECK(  picHeader->getDeblockingFilterBetaOffsetDiv2() < -12 ||
+                picHeader->getDeblockingFilterBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+        READ_SVLC( iCode, "ph_tc_offset_div2" );
+        picHeader->setDeblockingFilterTcOffsetDiv2(iCode);
+        CHECK(  picHeader->getDeblockingFilterTcOffsetDiv2() < -12 ||
+                picHeader->getDeblockingFilterTcOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+        READ_SVLC( iCode, "ph_cb_beta_offset_div2" );
+        picHeader->setDeblockingFilterCbBetaOffsetDiv2(iCode);
+        CHECK(  picHeader->getDeblockingFilterCbBetaOffsetDiv2() < -12 ||
+                picHeader->getDeblockingFilterCbBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+        READ_SVLC( iCode, "ph_cb_tc_offset_div2" );
+        picHeader->setDeblockingFilterCbTcOffsetDiv2(iCode);
+        CHECK(  picHeader->getDeblockingFilterCbTcOffsetDiv2() < -12 ||
+                picHeader->getDeblockingFilterCbTcOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+        READ_SVLC( iCode, "ph_cr_beta_offset_div2" );
+        picHeader->setDeblockingFilterCrBetaOffsetDiv2(iCode);
+        CHECK(  picHeader->getDeblockingFilterCrBetaOffsetDiv2() < -12 ||
+                picHeader->getDeblockingFilterCrBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+        READ_SVLC( iCode, "ph_cr_tc_offset_div2" );
+        picHeader->setDeblockingFilterCrTcOffsetDiv2(iCode);
+        CHECK(  picHeader->getDeblockingFilterCrTcOffsetDiv2() < -12 ||
+                picHeader->getDeblockingFilterCrTcOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+      }
+#else
       READ_FLAG ( uiCode, "pic_deblocking_filter_disabled_flag" );
       picHeader->setDeblockingFilterDisable(uiCode != 0);
       if(!picHeader->getDeblockingFilterDisable())
@@ -2553,12 +2615,19 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag
         CHECK  (picHeader->getDeblockingFilterTcOffsetDiv2() < -6 &&
                 picHeader->getDeblockingFilterTcOffsetDiv2() >  6, "Invalid deblocking filter configuration");
       }
+#endif
     }
     else
     {
       picHeader->setDeblockingFilterDisable       ( pps->getPPSDeblockingFilterDisabledFlag() );
       picHeader->setDeblockingFilterBetaOffsetDiv2( pps->getDeblockingFilterBetaOffsetDiv2() );
       picHeader->setDeblockingFilterTcOffsetDiv2  ( pps->getDeblockingFilterTcOffsetDiv2() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      picHeader->setDeblockingFilterCbBetaOffsetDiv2( pps->getDeblockingFilterCbBetaOffsetDiv2() );
+      picHeader->setDeblockingFilterCbTcOffsetDiv2  ( pps->getDeblockingFilterCbTcOffsetDiv2() );
+      picHeader->setDeblockingFilterCrBetaOffsetDiv2( pps->getDeblockingFilterCrBetaOffsetDiv2() );
+      picHeader->setDeblockingFilterCrTcOffsetDiv2  ( pps->getDeblockingFilterCrTcOffsetDiv2() );
+#endif
     }
   }
   else
@@ -2566,6 +2635,12 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag
     picHeader->setDeblockingFilterDisable       ( false );
     picHeader->setDeblockingFilterBetaOffsetDiv2( 0 );
     picHeader->setDeblockingFilterTcOffsetDiv2  ( 0 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    picHeader->setDeblockingFilterCbBetaOffsetDiv2( 0 );
+    picHeader->setDeblockingFilterCbTcOffsetDiv2  ( 0 );
+    picHeader->setDeblockingFilterCrBetaOffsetDiv2(0);
+    picHeader->setDeblockingFilterCrTcOffsetDiv2(0);
+#endif
   }
 
   // luma mapping / chroma scaling controls
@@ -3250,12 +3325,35 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
         READ_FLAG ( uiCode, "slice_deblocking_filter_disabled_flag" );   pcSlice->setDeblockingFilterDisable(uiCode ? 1 : 0);
         if(!pcSlice->getDeblockingFilterDisable())
         {
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+          READ_SVLC( iCode, "slice_beta_offset_div2" );                     pcSlice->setDeblockingFilterBetaOffsetDiv2( iCode );
+          CHECK(  pcSlice->getDeblockingFilterBetaOffsetDiv2() < -12 ||
+                  pcSlice->getDeblockingFilterBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+          READ_SVLC( iCode, "slice_tc_offset_div2" );                       pcSlice->setDeblockingFilterTcOffsetDiv2( iCode );
+          CHECK(  pcSlice->getDeblockingFilterTcOffsetDiv2() < -12 ||
+                  pcSlice->getDeblockingFilterTcOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+          READ_SVLC( iCode, "slice_cb_beta_offset_div2" );                  pcSlice->setDeblockingFilterCbBetaOffsetDiv2( iCode );
+          CHECK(  pcSlice->getDeblockingFilterCbBetaOffsetDiv2() < -12 ||
+                  pcSlice->getDeblockingFilterCbBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+          READ_SVLC( iCode, "slice_cb_tc_offset_div2" );                    pcSlice->setDeblockingFilterCbTcOffsetDiv2( iCode );
+          CHECK(  pcSlice->getDeblockingFilterCbTcOffsetDiv2() < -12 ||
+                  pcSlice->getDeblockingFilterCbTcOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+
+          READ_SVLC( iCode, "slice_cr_beta_offset_div2" );                  pcSlice->setDeblockingFilterCrBetaOffsetDiv2( iCode );
+          CHECK(  pcSlice->getDeblockingFilterCrBetaOffsetDiv2() < -12 ||
+                  pcSlice->getDeblockingFilterCrBetaOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+          READ_SVLC( iCode, "slice_cr_tc_offset_div2" );                    pcSlice->setDeblockingFilterCrTcOffsetDiv2( iCode );
+          CHECK(  pcSlice->getDeblockingFilterCrTcOffsetDiv2() < -12 ||
+                  pcSlice->getDeblockingFilterCrTcOffsetDiv2() > 12, "Invalid deblocking filter configuration");
+#else
           READ_SVLC( iCode, "slice_beta_offset_div2" );                       pcSlice->setDeblockingFilterBetaOffsetDiv2(iCode);
           CHECK(  pcSlice->getDeblockingFilterBetaOffsetDiv2() < -6 &&
                   pcSlice->getDeblockingFilterBetaOffsetDiv2() >  6, "Invalid deblocking filter configuration");
           READ_SVLC( iCode, "slice_tc_offset_div2" );                         pcSlice->setDeblockingFilterTcOffsetDiv2(iCode);
           CHECK  (pcSlice->getDeblockingFilterTcOffsetDiv2() < -6 &&
                   pcSlice->getDeblockingFilterTcOffsetDiv2() >  6, "Invalid deblocking filter configuration");
+#endif
         }
       }
       else
@@ -3263,6 +3361,12 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
         pcSlice->setDeblockingFilterDisable       ( picHeader->getDeblockingFilterDisable() );
         pcSlice->setDeblockingFilterBetaOffsetDiv2( picHeader->getDeblockingFilterBetaOffsetDiv2() );
         pcSlice->setDeblockingFilterTcOffsetDiv2  ( picHeader->getDeblockingFilterTcOffsetDiv2() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        pcSlice->setDeblockingFilterCbBetaOffsetDiv2( picHeader->getDeblockingFilterCbBetaOffsetDiv2() );
+        pcSlice->setDeblockingFilterCbTcOffsetDiv2  ( picHeader->getDeblockingFilterCbTcOffsetDiv2() );
+        pcSlice->setDeblockingFilterCrBetaOffsetDiv2(picHeader->getDeblockingFilterCrBetaOffsetDiv2());
+        pcSlice->setDeblockingFilterCrTcOffsetDiv2(picHeader->getDeblockingFilterCrTcOffsetDiv2());
+#endif
       }
     }
     else
@@ -3270,6 +3374,12 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
       pcSlice->setDeblockingFilterDisable       ( false );
       pcSlice->setDeblockingFilterBetaOffsetDiv2( 0 );
       pcSlice->setDeblockingFilterTcOffsetDiv2  ( 0 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      pcSlice->setDeblockingFilterCbBetaOffsetDiv2( 0 );
+      pcSlice->setDeblockingFilterCbTcOffsetDiv2  ( 0 );
+      pcSlice->setDeblockingFilterCrBetaOffsetDiv2( 0 );
+      pcSlice->setDeblockingFilterCrTcOffsetDiv2  ( 0 );
+#endif
     }
 
 
diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h
index 2316ae3832f55afeb965f33e335f725ba336b1f5..6b66f9ff67a1c522e8ecbf33620d212251ceff5c 100644
--- a/source/Lib/EncoderLib/EncCfg.h
+++ b/source/Lib/EncoderLib/EncCfg.h
@@ -66,6 +66,12 @@ struct GOPEntry
   double m_QPFactor;
   int m_tcOffsetDiv2;
   int m_betaOffsetDiv2;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int m_CbTcOffsetDiv2;
+  int m_CbBetaOffsetDiv2;
+  int m_CrTcOffsetDiv2;
+  int m_CrBetaOffsetDiv2;
+#endif
   int m_temporalId;
   bool m_refPic;
   int8_t m_sliceType;
@@ -91,6 +97,12 @@ struct GOPEntry
   , m_QPFactor(0)
   , m_tcOffsetDiv2(0)
   , m_betaOffsetDiv2(0)
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  , m_CbTcOffsetDiv2(0)
+  , m_CbBetaOffsetDiv2(0)
+  , m_CrTcOffsetDiv2(0)
+  , m_CrBetaOffsetDiv2(0)
+#endif
   , m_temporalId(0)
   , m_refPic(false)
   , m_sliceType('P')
@@ -367,6 +379,12 @@ protected:
   bool      m_loopFilterOffsetInPPS;
   int       m_loopFilterBetaOffsetDiv2;
   int       m_loopFilterTcOffsetDiv2;
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int       m_loopFilterCbBetaOffsetDiv2;
+  int       m_loopFilterCbTcOffsetDiv2;
+  int       m_loopFilterCrBetaOffsetDiv2;
+  int       m_loopFilterCrTcOffsetDiv2;
+#endif
 #if W0038_DB_OPT
   int       m_deblockingFilterMetric;
 #else
@@ -1124,6 +1142,12 @@ public:
   void      setLoopFilterOffsetInPPS        ( bool  b )      { m_loopFilterOffsetInPPS      = b; }
   void      setLoopFilterBetaOffset         ( int   i )      { m_loopFilterBetaOffsetDiv2  = i; }
   void      setLoopFilterTcOffset           ( int   i )      { m_loopFilterTcOffsetDiv2    = i; }
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  void      setLoopFilterCbBetaOffset       ( int   i )      { m_loopFilterCbBetaOffsetDiv2  = i; }
+  void      setLoopFilterCbTcOffset         ( int   i )      { m_loopFilterCbTcOffsetDiv2    = i; }
+  void      setLoopFilterCrBetaOffset       ( int   i )      { m_loopFilterCrBetaOffsetDiv2  = i; }
+  void      setLoopFilterCrTcOffset         ( int   i )      { m_loopFilterCrTcOffsetDiv2    = i; }
+#endif
 #if W0038_DB_OPT
   void      setDeblockingFilterMetric       ( int   i )      { m_deblockingFilterMetric = i; }
 #else
@@ -1236,6 +1260,12 @@ public:
   bool      getLoopFilterOffsetInPPS        ()      { return m_loopFilterOffsetInPPS; }
   int       getLoopFilterBetaOffset         ()      { return m_loopFilterBetaOffsetDiv2; }
   int       getLoopFilterTcOffset           ()      { return m_loopFilterTcOffsetDiv2; }
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  int       getLoopFilterCbBetaOffset       ()      { return m_loopFilterCbBetaOffsetDiv2; }
+  int       getLoopFilterCbTcOffset         ()      { return m_loopFilterCbTcOffsetDiv2;   }
+  int       getLoopFilterCrBetaOffset       ()      { return m_loopFilterCrBetaOffsetDiv2; }
+  int       getLoopFilterCrTcOffset         ()      { return m_loopFilterCrTcOffsetDiv2;   }
+#endif
 #if W0038_DB_OPT
   int       getDeblockingFilterMetric       ()      { return m_deblockingFilterMetric; }
 #else
diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp
index 7e0843829922394be2b7228cf2ba7c13d87e5310..11bd8813a18cc1c15c6976b82bae4659e9510fe2 100644
--- a/source/Lib/EncoderLib/EncGOP.cpp
+++ b/source/Lib/EncoderLib/EncGOP.cpp
@@ -3076,6 +3076,12 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic,
             picHeader->setDeblockingFilterDisable        ( pcSlice->getDeblockingFilterDisable()        ); 
             picHeader->setDeblockingFilterBetaOffsetDiv2 ( pcSlice->getDeblockingFilterBetaOffsetDiv2() ); 
             picHeader->setDeblockingFilterTcOffsetDiv2   ( pcSlice->getDeblockingFilterTcOffsetDiv2()   );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+            picHeader->setDeblockingFilterCbBetaOffsetDiv2( pcSlice->getDeblockingFilterCbBetaOffsetDiv2() );
+            picHeader->setDeblockingFilterCbTcOffsetDiv2  ( pcSlice->getDeblockingFilterCbTcOffsetDiv2() );
+            picHeader->setDeblockingFilterCrBetaOffsetDiv2( pcSlice->getDeblockingFilterCrBetaOffsetDiv2() );
+            picHeader->setDeblockingFilterCrTcOffsetDiv2  ( pcSlice->getDeblockingFilterCrTcOffsetDiv2() );
+#endif
           }
           else {
             picHeader->setDeblockingFilterOverridePresentFlag( false );
@@ -4848,6 +4854,12 @@ void EncGOP::applyDeblockingFilterMetric( Picture* pcPic, uint32_t uiNumSlices )
       pcLocalSlice->setDeblockingFilterDisable        ( false);
       pcLocalSlice->setDeblockingFilterBetaOffsetDiv2 ( offset );
       pcLocalSlice->setDeblockingFilterTcOffsetDiv2   ( offset );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      pcLocalSlice->setDeblockingFilterCbBetaOffsetDiv2 ( offset );
+      pcLocalSlice->setDeblockingFilterCbTcOffsetDiv2   ( offset );
+      pcLocalSlice->setDeblockingFilterCrBetaOffsetDiv2 ( offset );
+      pcLocalSlice->setDeblockingFilterCrTcOffsetDiv2   ( offset );
+#endif
     }
   }
   else
@@ -4860,6 +4872,12 @@ void EncGOP::applyDeblockingFilterMetric( Picture* pcPic, uint32_t uiNumSlices )
       pcLocalSlice->setDeblockingFilterDisable       ( pcPPS->getPPSDeblockingFilterDisabledFlag() );
       pcLocalSlice->setDeblockingFilterBetaOffsetDiv2( pcPPS->getDeblockingFilterBetaOffsetDiv2() );
       pcLocalSlice->setDeblockingFilterTcOffsetDiv2  ( pcPPS->getDeblockingFilterTcOffsetDiv2()   );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      pcLocalSlice->setDeblockingFilterCbBetaOffsetDiv2 ( pcPPS->getDeblockingFilterCbBetaOffsetDiv2() );
+      pcLocalSlice->setDeblockingFilterCbTcOffsetDiv2   ( pcPPS->getDeblockingFilterCbTcOffsetDiv2() );
+      pcLocalSlice->setDeblockingFilterCrBetaOffsetDiv2 ( pcPPS->getDeblockingFilterCrBetaOffsetDiv2() );
+      pcLocalSlice->setDeblockingFilterCrTcOffsetDiv2   ( pcPPS->getDeblockingFilterCrTcOffsetDiv2() );
+#endif
     }
   }
 }
@@ -4921,6 +4939,12 @@ void EncGOP::applyDeblockingFilterParameterSelection( Picture* pcPic, const uint
         pcSlice->setDeblockingFilterDisable       ( false);
         pcSlice->setDeblockingFilterBetaOffsetDiv2( betaOffsetDiv2 );
         pcSlice->setDeblockingFilterTcOffsetDiv2  ( tcOffsetDiv2 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        pcSlice->setDeblockingFilterCbBetaOffsetDiv2( betaOffsetDiv2 );
+        pcSlice->setDeblockingFilterCbTcOffsetDiv2  ( tcOffsetDiv2 );
+        pcSlice->setDeblockingFilterCrBetaOffsetDiv2( betaOffsetDiv2 );
+        pcSlice->setDeblockingFilterCrTcOffsetDiv2  ( tcOffsetDiv2 );
+#endif
       }
 
       // restore reconstruction
@@ -4979,6 +5003,12 @@ void EncGOP::applyDeblockingFilterParameterSelection( Picture* pcPic, const uint
       pcSlice->setDeblockingFilterDisable        ( pcPPS->getPPSDeblockingFilterDisabledFlag() );
       pcSlice->setDeblockingFilterBetaOffsetDiv2 ( pcPPS->getDeblockingFilterBetaOffsetDiv2() );
       pcSlice->setDeblockingFilterTcOffsetDiv2   ( pcPPS->getDeblockingFilterTcOffsetDiv2()   );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      pcSlice->setDeblockingFilterCbBetaOffsetDiv2 ( pcPPS->getDeblockingFilterBetaOffsetDiv2() );
+      pcSlice->setDeblockingFilterCbTcOffsetDiv2   ( pcPPS->getDeblockingFilterTcOffsetDiv2()   );
+      pcSlice->setDeblockingFilterCrBetaOffsetDiv2 ( pcPPS->getDeblockingFilterBetaOffsetDiv2() );
+      pcSlice->setDeblockingFilterCrTcOffsetDiv2   ( pcPPS->getDeblockingFilterTcOffsetDiv2()   );
+#endif
     }
   }
   else
@@ -4990,6 +5020,12 @@ void EncGOP::applyDeblockingFilterParameterSelection( Picture* pcPic, const uint
       pcSlice->setDeblockingFilterDisable        ( false );
       pcSlice->setDeblockingFilterBetaOffsetDiv2 ( betaOffsetDiv2Best);
       pcSlice->setDeblockingFilterTcOffsetDiv2   ( tcOffsetDiv2Best);
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      pcSlice->setDeblockingFilterCbBetaOffsetDiv2 ( betaOffsetDiv2Best);
+      pcSlice->setDeblockingFilterCbTcOffsetDiv2   ( tcOffsetDiv2Best);
+      pcSlice->setDeblockingFilterCrBetaOffsetDiv2 ( betaOffsetDiv2Best);
+      pcSlice->setDeblockingFilterCrTcOffsetDiv2   ( tcOffsetDiv2Best);
+#endif
     }
   }
 }
diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index 22dde7f8bab8ac7e7833aca62161a23d14d65f82..4595b865aaa592d1e4f3bb2034a719bcb39004b5 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -1523,18 +1523,41 @@ void EncLib::xInitPPS(PPS &pps, const SPS &sps)
   {
     pps.setDeblockingFilterBetaOffsetDiv2( getLoopFilterBetaOffset() );
     pps.setDeblockingFilterTcOffsetDiv2( getLoopFilterTcOffset() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    pps.setDeblockingFilterCbBetaOffsetDiv2( getLoopFilterCbBetaOffset() );
+    pps.setDeblockingFilterCbTcOffsetDiv2( getLoopFilterCbTcOffset() );
+    pps.setDeblockingFilterCrBetaOffsetDiv2( getLoopFilterCrBetaOffset() );
+    pps.setDeblockingFilterCrTcOffsetDiv2( getLoopFilterCrTcOffset() );
+#endif
   }
   else
   {
     pps.setDeblockingFilterBetaOffsetDiv2(0);
     pps.setDeblockingFilterTcOffsetDiv2(0);
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    pps.setDeblockingFilterCbBetaOffsetDiv2(0);
+    pps.setDeblockingFilterCbTcOffsetDiv2(0);
+    pps.setDeblockingFilterCrBetaOffsetDiv2(0);
+    pps.setDeblockingFilterCrTcOffsetDiv2(0);
+#endif
   }
 
   // deblockingFilterControlPresentFlag is true if any of the settings differ from the inferred values:
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+  const bool deblockingFilterControlPresentFlag = pps.getDeblockingFilterOverrideEnabledFlag()   ||
+                                                  pps.getPPSDeblockingFilterDisabledFlag()       ||
+                                                  pps.getDeblockingFilterBetaOffsetDiv2() != 0   ||
+                                                  pps.getDeblockingFilterTcOffsetDiv2() != 0     ||
+                                                  pps.getDeblockingFilterCbBetaOffsetDiv2() != 0 ||
+                                                  pps.getDeblockingFilterCbTcOffsetDiv2() != 0   ||
+                                                  pps.getDeblockingFilterCrBetaOffsetDiv2() != 0 ||
+                                                  pps.getDeblockingFilterCrTcOffsetDiv2() != 0;
+#else
   const bool deblockingFilterControlPresentFlag = pps.getDeblockingFilterOverrideEnabledFlag() ||
                                                   pps.getPPSDeblockingFilterDisabledFlag()     ||
                                                   pps.getDeblockingFilterBetaOffsetDiv2() != 0 ||
                                                   pps.getDeblockingFilterTcOffsetDiv2() != 0;
+#endif
 
   pps.setDeblockingFilterControlPresentFlag(deblockingFilterControlPresentFlag);
 
diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp
index 8e54f7b2873ad0e0d612c07b72eb13a36786a869..979743ec4672a302dabfdf2afe59b8a05db0f97e 100644
--- a/source/Lib/EncoderLib/EncSlice.cpp
+++ b/source/Lib/EncoderLib/EncSlice.cpp
@@ -596,6 +596,12 @@ void EncSlice::initEncSlice(Picture* pcPic, const int pocLast, const int pocCurr
     rpcSlice->setDeblockingFilterDisable(false);
     rpcSlice->setDeblockingFilterBetaOffsetDiv2( 0 );
     rpcSlice->setDeblockingFilterTcOffsetDiv2( 0 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( 0 );
+    rpcSlice->setDeblockingFilterCbTcOffsetDiv2( 0 );
+    rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( 0 );
+    rpcSlice->setDeblockingFilterCrTcOffsetDiv2( 0 );
+#endif
   }
   else if (rpcSlice->getPPS()->getDeblockingFilterControlPresentFlag())
   {
@@ -607,11 +613,23 @@ void EncSlice::initEncSlice(Picture* pcPic, const int pocLast, const int pocCurr
       {
         rpcSlice->setDeblockingFilterBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_betaOffsetDiv2 + m_pcCfg->getLoopFilterBetaOffset()  );
         rpcSlice->setDeblockingFilterTcOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_tcOffsetDiv2 + m_pcCfg->getLoopFilterTcOffset() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_CbBetaOffsetDiv2 + m_pcCfg->getLoopFilterCbBetaOffset()  );
+        rpcSlice->setDeblockingFilterCbTcOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_CbTcOffsetDiv2 + m_pcCfg->getLoopFilterCbTcOffset() );
+        rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_CrBetaOffsetDiv2 + m_pcCfg->getLoopFilterCrBetaOffset()  );
+        rpcSlice->setDeblockingFilterCrTcOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_CrTcOffsetDiv2 + m_pcCfg->getLoopFilterCrTcOffset() );
+#endif
       }
       else
       {
         rpcSlice->setDeblockingFilterBetaOffsetDiv2( m_pcCfg->getLoopFilterBetaOffset() );
         rpcSlice->setDeblockingFilterTcOffsetDiv2( m_pcCfg->getLoopFilterTcOffset() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( m_pcCfg->getLoopFilterCbBetaOffset() );
+        rpcSlice->setDeblockingFilterCbTcOffsetDiv2( m_pcCfg->getLoopFilterCbTcOffset() );
+        rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( m_pcCfg->getLoopFilterCrBetaOffset() );
+        rpcSlice->setDeblockingFilterCrTcOffsetDiv2( m_pcCfg->getLoopFilterCrTcOffset() );
+#endif
       }
     }
   }
@@ -621,6 +639,12 @@ void EncSlice::initEncSlice(Picture* pcPic, const int pocLast, const int pocCurr
     rpcSlice->setDeblockingFilterDisable( false );
     rpcSlice->setDeblockingFilterBetaOffsetDiv2( 0 );
     rpcSlice->setDeblockingFilterTcOffsetDiv2( 0 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( 0 );
+    rpcSlice->setDeblockingFilterCbTcOffsetDiv2( 0 );
+    rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( 0 );
+    rpcSlice->setDeblockingFilterCrTcOffsetDiv2( 0 );
+#endif
   }
 
   pcPic->layer =  temporalId;
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 9c84cd6026990198cdd285a7f6d7b16c4bd8a406..056819f01ce1d6f7022da56a63b942d20df033f5 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -417,6 +417,12 @@ void HLSWriter::codePPS( const PPS* pcPPS, const SPS* pcSPS )
     {
       WRITE_SVLC( pcPPS->getDeblockingFilterBetaOffsetDiv2(),             "pps_beta_offset_div2" );
       WRITE_SVLC( pcPPS->getDeblockingFilterTcOffsetDiv2(),               "pps_tc_offset_div2" );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      WRITE_SVLC( pcPPS->getDeblockingFilterCbBetaOffsetDiv2(),           "pps_cb_beta_offset_div2" );
+      WRITE_SVLC( pcPPS->getDeblockingFilterCbTcOffsetDiv2(),             "pps_cb_tc_offset_div2" );
+      WRITE_SVLC( pcPPS->getDeblockingFilterCrBetaOffsetDiv2(),           "pps_cr_beta_offset_div2" );
+      WRITE_SVLC( pcPPS->getDeblockingFilterCrTcOffsetDiv2(),             "pps_cr_tc_offset_div2" );
+#endif
     }
   }
   WRITE_FLAG( pcPPS->getConstantSliceHeaderParamsEnabledFlag(),              "constant_slice_header_params_enabled_flag");
@@ -1809,18 +1815,37 @@ void HLSWriter::codePictureHeader( PicHeader* picHeader )
 
     if(picHeader->getDeblockingFilterOverrideFlag())
     {
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      WRITE_FLAG( picHeader->getDeblockingFilterDisable(), "ph_deblocking_filter_disabled_flag" );
+      if( !picHeader->getDeblockingFilterDisable() )
+      {
+        WRITE_SVLC( picHeader->getDeblockingFilterBetaOffsetDiv2(), "ph_beta_offset_div2" );
+        WRITE_SVLC( picHeader->getDeblockingFilterTcOffsetDiv2(), "ph_tc_offset_div2" );
+        WRITE_SVLC( picHeader->getDeblockingFilterBetaOffsetDiv2(), "ph_cb_beta_offset_div2" );
+        WRITE_SVLC( picHeader->getDeblockingFilterTcOffsetDiv2(), "ph_cb_tc_offset_div2" );
+        WRITE_SVLC( picHeader->getDeblockingFilterBetaOffsetDiv2(), "ph_cr_beta_offset_div2" );
+        WRITE_SVLC( picHeader->getDeblockingFilterTcOffsetDiv2(), "ph_cr_tc_offset_div2" );
+      }
+#else
       WRITE_FLAG ( picHeader->getDeblockingFilterDisable(), "pic_deblocking_filter_disabled_flag" );
       if(!picHeader->getDeblockingFilterDisable())
       {
         WRITE_SVLC( picHeader->getDeblockingFilterBetaOffsetDiv2(), "pic_beta_offset_div2" );
         WRITE_SVLC( picHeader->getDeblockingFilterTcOffsetDiv2(), "pic_tc_offset_div2" );
       }
+#endif
     }
     else
     {
       picHeader->setDeblockingFilterDisable       ( pps->getPPSDeblockingFilterDisabledFlag() );
       picHeader->setDeblockingFilterBetaOffsetDiv2( pps->getDeblockingFilterBetaOffsetDiv2() );
       picHeader->setDeblockingFilterTcOffsetDiv2  ( pps->getDeblockingFilterTcOffsetDiv2() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      picHeader->setDeblockingFilterCbBetaOffsetDiv2( pps->getDeblockingFilterCbBetaOffsetDiv2() );
+      picHeader->setDeblockingFilterCbTcOffsetDiv2  ( pps->getDeblockingFilterCbTcOffsetDiv2() );
+      picHeader->setDeblockingFilterCrBetaOffsetDiv2( pps->getDeblockingFilterCrBetaOffsetDiv2() );
+      picHeader->setDeblockingFilterCrTcOffsetDiv2  ( pps->getDeblockingFilterCrTcOffsetDiv2() );
+#endif
     }
   }
   else
@@ -1828,6 +1853,12 @@ void HLSWriter::codePictureHeader( PicHeader* picHeader )
     picHeader->setDeblockingFilterDisable       ( false );
     picHeader->setDeblockingFilterBetaOffsetDiv2( 0 );
     picHeader->setDeblockingFilterTcOffsetDiv2  ( 0 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+    picHeader->setDeblockingFilterCbBetaOffsetDiv2( 0 );
+    picHeader->setDeblockingFilterCbTcOffsetDiv2  ( 0 );
+    picHeader->setDeblockingFilterCrBetaOffsetDiv2( 0 );
+    picHeader->setDeblockingFilterCrTcOffsetDiv2  ( 0 );
+#endif
   }
 
   // luma mapping / chroma scaling controls
@@ -2246,6 +2277,12 @@ void HLSWriter::codeSliceHeader         ( Slice* pcSlice )
         {
           WRITE_SVLC (pcSlice->getDeblockingFilterBetaOffsetDiv2(), "slice_beta_offset_div2");
           WRITE_SVLC (pcSlice->getDeblockingFilterTcOffsetDiv2(),   "slice_tc_offset_div2");
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+          WRITE_SVLC (pcSlice->getDeblockingFilterCbBetaOffsetDiv2(), "slice_cb_beta_offset_div2");
+          WRITE_SVLC (pcSlice->getDeblockingFilterCbTcOffsetDiv2(),   "slice_cb_tc_offset_div2");
+          WRITE_SVLC (pcSlice->getDeblockingFilterCrBetaOffsetDiv2(), "slice_cr_beta_offset_div2");
+          WRITE_SVLC (pcSlice->getDeblockingFilterCrTcOffsetDiv2(),   "slice_cr_tc_offset_div2");
+#endif
         }
       }
       else
@@ -2253,6 +2290,12 @@ void HLSWriter::codeSliceHeader         ( Slice* pcSlice )
         pcSlice->setDeblockingFilterDisable       ( picHeader->getDeblockingFilterDisable() );
         pcSlice->setDeblockingFilterBetaOffsetDiv2( picHeader->getDeblockingFilterBetaOffsetDiv2() );
         pcSlice->setDeblockingFilterTcOffsetDiv2  ( picHeader->getDeblockingFilterTcOffsetDiv2() );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+        pcSlice->setDeblockingFilterCbBetaOffsetDiv2( picHeader->getDeblockingFilterCbBetaOffsetDiv2() );
+        pcSlice->setDeblockingFilterCbTcOffsetDiv2  ( picHeader->getDeblockingFilterCbTcOffsetDiv2() );
+        pcSlice->setDeblockingFilterCrBetaOffsetDiv2( picHeader->getDeblockingFilterCrBetaOffsetDiv2() );
+        pcSlice->setDeblockingFilterCrTcOffsetDiv2  ( picHeader->getDeblockingFilterCrTcOffsetDiv2() );
+#endif
       }
     }
     else
@@ -2260,6 +2303,12 @@ void HLSWriter::codeSliceHeader         ( Slice* pcSlice )
       pcSlice->setDeblockingFilterDisable       ( false );
       pcSlice->setDeblockingFilterBetaOffsetDiv2( 0 );
       pcSlice->setDeblockingFilterTcOffsetDiv2  ( 0 );
+#if JVET_Q0121_DEBLOCKING_CONTROL_PARAMETERS
+      pcSlice->setDeblockingFilterCbBetaOffsetDiv2( 0 );
+      pcSlice->setDeblockingFilterCbTcOffsetDiv2  ( 0 );
+      pcSlice->setDeblockingFilterCrBetaOffsetDiv2( 0 );
+      pcSlice->setDeblockingFilterCrTcOffsetDiv2  ( 0 );
+#endif
     }
 
   if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag())