From 9c5103885e731896e7d67c34dc328446e813673e Mon Sep 17 00:00:00 2001 From: Karsten Suehring <karsten.suehring@hhi.fraunhofer.de> Date: Fri, 7 May 2021 15:04:07 +0200 Subject: [PATCH] Rename loop filter appropriately to deblocking filter --- cfg/encoder_intra_vtm.cfg | 18 ++--- cfg/encoder_lowdelay_P_vtm.cfg | 18 ++--- cfg/encoder_lowdelay_vtm.cfg | 18 ++--- cfg/encoder_randomaccess_vtm.cfg | 18 ++--- cfg/encoder_randomaccess_vtm_gop16.cfg | 18 ++--- cfg/lossless/lossless.cfg | 2 +- cfg/lossless/lossless_mixed.cfg | 2 +- doc/software-manual.tex | 28 ++++---- source/App/EncoderApp/EncApp.cpp | 16 ++--- source/App/EncoderApp/EncAppCfg.cpp | 44 ++++++------- source/App/EncoderApp/EncAppCfg.h | 16 ++--- .../{LoopFilter.cpp => DeblockingFilter.cpp} | 66 +++++++++---------- .../{LoopFilter.h => DeblockingFilter.h} | 17 +++-- source/Lib/DecoderLib/DecLib.cpp | 8 +-- source/Lib/DecoderLib/DecLib.h | 4 +- source/Lib/EncoderLib/EncCfg.h | 48 +++++++------- source/Lib/EncoderLib/EncCu.cpp | 16 ++--- source/Lib/EncoderLib/EncCu.h | 4 +- source/Lib/EncoderLib/EncGOP.cpp | 8 +-- source/Lib/EncoderLib/EncGOP.h | 4 +- source/Lib/EncoderLib/EncLib.cpp | 24 +++---- source/Lib/EncoderLib/EncLib.h | 6 +- source/Lib/EncoderLib/EncSlice.cpp | 28 ++++---- 23 files changed, 215 insertions(+), 216 deletions(-) rename source/Lib/CommonLib/{LoopFilter.cpp => DeblockingFilter.cpp} (94%) rename source/Lib/CommonLib/{LoopFilter.h => DeblockingFilter.h} (96%) diff --git a/cfg/encoder_intra_vtm.cfg b/cfg/encoder_intra_vtm.cfg index 05ee5bbb7..d3c22b385 100644 --- a/cfg/encoder_intra_vtm.cfg +++ b/cfg/encoder_intra_vtm.cfg @@ -31,15 +31,15 @@ RDOQ : 1 # RDOQ 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: -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) +DeblockingFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) +DeblockingFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) +DeblockingFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (DeblockingFilterOffsetInPPS and DeblockingFilterDisable must be 0) #=========== Misc. ============ InternalBitDepth : 10 # codec operating bit-depth diff --git a/cfg/encoder_lowdelay_P_vtm.cfg b/cfg/encoder_lowdelay_P_vtm.cfg index 7e7efcd92..5c1c492a5 100644 --- a/cfg/encoder_lowdelay_P_vtm.cfg +++ b/cfg/encoder_lowdelay_P_vtm.cfg @@ -43,15 +43,15 @@ RDOQ : 1 # RDOQ 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: -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) +DeblockingFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) +DeblockingFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) +DeblockingFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (DeblockingFilterOffsetInPPS and DeblockingFilterDisable must be 0) #=========== Misc. ============ InternalBitDepth : 10 # codec operating bit-depth diff --git a/cfg/encoder_lowdelay_vtm.cfg b/cfg/encoder_lowdelay_vtm.cfg index 7d07b1f0b..d4643fc94 100644 --- a/cfg/encoder_lowdelay_vtm.cfg +++ b/cfg/encoder_lowdelay_vtm.cfg @@ -43,15 +43,15 @@ RDOQ : 1 # RDOQ 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: -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) +DeblockingFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) +DeblockingFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) +DeblockingFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (DeblockingFilterOffsetInPPS and DeblockingFilterDisable must be 0) #=========== Misc. ============ InternalBitDepth : 10 # codec operating bit-depth diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg index 0e4f2c4b1..82064508d 100644 --- a/cfg/encoder_randomaccess_vtm.cfg +++ b/cfg/encoder_randomaccess_vtm.cfg @@ -69,15 +69,15 @@ RDOQ : 1 # RDOQ 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: -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) +DeblockingFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) +DeblockingFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) +DeblockingFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (DeblockingFilterOffsetInPPS and DeblockingFilterDisable must be 0) #=========== Misc. ============ InternalBitDepth : 10 # codec operating bit-depth diff --git a/cfg/encoder_randomaccess_vtm_gop16.cfg b/cfg/encoder_randomaccess_vtm_gop16.cfg index 879496205..48f3b2d00 100644 --- a/cfg/encoder_randomaccess_vtm_gop16.cfg +++ b/cfg/encoder_randomaccess_vtm_gop16.cfg @@ -53,15 +53,15 @@ RDOQ : 1 # RDOQ 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: -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) +DeblockingFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) +DeblockingFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) +DeblockingFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 +DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (DeblockingFilterOffsetInPPS and DeblockingFilterDisable must be 0) #=========== Misc. ============ InternalBitDepth : 10 # codec operating bit-depth diff --git a/cfg/lossless/lossless.cfg b/cfg/lossless/lossless.cfg index 793b2bedb..42c6884ba 100644 --- a/cfg/lossless/lossless.cfg +++ b/cfg/lossless/lossless.cfg @@ -11,7 +11,7 @@ ISP : 0 MTS : 0 LFNST : 0 JointCbCr : 0 -LoopFilterDisable : 1 +DeblockingFilterDisable : 1 SAO : 0 ALF : 0 CCALF : 0 diff --git a/cfg/lossless/lossless_mixed.cfg b/cfg/lossless/lossless_mixed.cfg index 5fbdd0bed..e7d38327f 100644 --- a/cfg/lossless/lossless_mixed.cfg +++ b/cfg/lossless/lossless_mixed.cfg @@ -11,7 +11,7 @@ ISP : 0 MTS : 0 LFNST : 0 JointCbCr : 0 -LoopFilterDisable : 0 +DeblockingFilterDisable : 0 SAO : 1 ALF : 1 CCALF : 0 diff --git a/doc/software-manual.tex b/doc/software-manual.tex index 151335ca2..5f6da0766 100644 --- a/doc/software-manual.tex +++ b/doc/software-manual.tex @@ -453,32 +453,32 @@ range is between 0.3 and 1. \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 +is added to the base parameter DeblockingFilterTcOffset_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{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 +is added to the base parameter DeblockingFilterBetaOffset_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{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 +is added to the base parameter DeblockingFilterCbTcOffset_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 +is added to the base parameter DeblockingFilterCbBetaOffset_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 +is added to the base parameter DeblockingFilterCrTcOffset_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 +is added to the base parameter DeblockingFilterCrBetaOffset_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$. @@ -2557,13 +2557,13 @@ Target subpic index for target output layers that containing multiple subpicture %% In-loop filtering parameters %% \begin{OptionTableNoShorthand}{In-loop filtering parameters}{tab:inloop-filter} -\Option{LoopFilterDisable} & +\Option{DeblockingFilterDisable} & %\ShortOption{\None} & \Default{false} & Enables or disables the in-loop deblocking filter. \\ -\Option{LoopFilterOffsetInPPS}& +\Option{DeblockingFilterOffsetInPPS}& %\ShortOption{\None}& \Default{false}& If enabled, the in-loop deblocking filter control parameters are sent in PPS. @@ -2576,42 +2576,42 @@ In this case, the final value of the deblocking filter parameter sent for a cert (base parameter + GOP parameter for this picture). Intra-pictures use the base parameters values. \\ -\Option{LoopFilterTcOffset_div2}& +\Option{DeblockingFilterTcOffset_div2}& %\ShortOption{\None}& \Default{0}& 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}& +\Option{DeblockingFilterBetaOffset_div2}& %\ShortOption{\None}& \Default{0}& 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}& +\Option{DeblockingFilterCbTcOffset_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}& +\Option{DeblockingFilterCbBetaOffset_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}& +\Option{DeblockingFilterCrTcOffset_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}& +\Option{DeblockingFilterCrBetaOffset_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 diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index 4f0ec0ec2..b0651d307 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -565,14 +565,14 @@ void EncApp::xInitLibCfg() //===== Slice ======== //====== Loop/Deblock Filter ======== - m_cEncLib.setLoopFilterDisable ( m_bLoopFilterDisable ); - m_cEncLib.setLoopFilterOffsetInPPS ( m_loopFilterOffsetInPPS ); - m_cEncLib.setLoopFilterBetaOffset ( m_loopFilterBetaOffsetDiv2 ); - m_cEncLib.setLoopFilterTcOffset ( m_loopFilterTcOffsetDiv2 ); - m_cEncLib.setLoopFilterCbBetaOffset ( m_loopFilterCbBetaOffsetDiv2 ); - m_cEncLib.setLoopFilterCbTcOffset ( m_loopFilterCbTcOffsetDiv2 ); - m_cEncLib.setLoopFilterCrBetaOffset ( m_loopFilterCrBetaOffsetDiv2 ); - m_cEncLib.setLoopFilterCrTcOffset ( m_loopFilterCrTcOffsetDiv2 ); + m_cEncLib.setDeblockingFilterDisable ( m_deblockingFilterDisable ); + m_cEncLib.setDeblockingFilterOffsetInPPS ( m_deblockingFilterOffsetInPPS ); + m_cEncLib.setDeblockingFilterBetaOffset ( m_deblockingFilterBetaOffsetDiv2 ); + m_cEncLib.setDeblockingFilterTcOffset ( m_deblockingFilterTcOffsetDiv2 ); + m_cEncLib.setDeblockingFilterCbBetaOffset ( m_deblockingFilterCbBetaOffsetDiv2 ); + m_cEncLib.setDeblockingFilterCbTcOffset ( m_deblockingFilterCbTcOffsetDiv2 ); + m_cEncLib.setDeblockingFilterCrBetaOffset ( m_deblockingFilterCrBetaOffsetDiv2 ); + m_cEncLib.setDeblockingFilterCrTcOffset ( m_deblockingFilterCrTcOffsetDiv2 ); #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 f71dd81e2..08fb2edf2 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -1106,14 +1106,14 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("RDpenalty", m_rdPenalty, 0, "RD-penalty for 32x32 TU for intra in non-intra slices. 0:disabled 1:RD-penalty 2:maximum RD-penalty") // Deblocking filter parameters - ("LoopFilterDisable", m_bLoopFilterDisable, false) - ("LoopFilterOffsetInPPS", m_loopFilterOffsetInPPS, true) - ("LoopFilterBetaOffset_div2", m_loopFilterBetaOffsetDiv2, 0) - ("LoopFilterTcOffset_div2", m_loopFilterTcOffsetDiv2, 0) - ("LoopFilterCbBetaOffset_div2", m_loopFilterCbBetaOffsetDiv2, 0) - ("LoopFilterCbTcOffset_div2", m_loopFilterCbTcOffsetDiv2, 0) - ("LoopFilterCrBetaOffset_div2", m_loopFilterCrBetaOffsetDiv2, 0) - ("LoopFilterCrTcOffset_div2", m_loopFilterCrTcOffsetDiv2, 0) + ("DeblockingFilterDisable", m_deblockingFilterDisable, false) + ("DeblockingFilterOffsetInPPS", m_deblockingFilterOffsetInPPS, true) + ("DeblockingFilterBetaOffset_div2", m_deblockingFilterBetaOffsetDiv2, 0) + ("DeblockingFilterTcOffset_div2", m_deblockingFilterTcOffsetDiv2, 0) + ("DeblockingFilterCbBetaOffset_div2", m_deblockingFilterCbBetaOffsetDiv2, 0) + ("DeblockingFilterCbTcOffset_div2", m_deblockingFilterCbTcOffsetDiv2, 0) + ("DeblockingFilterCrBetaOffset_div2", m_deblockingFilterCrBetaOffsetDiv2, 0) + ("DeblockingFilterCrTcOffset_div2", m_deblockingFilterCrTcOffsetDiv2, 0) #if W0038_DB_OPT ("DeblockingFilterMetric", m_deblockingFilterMetric, 0) #else @@ -2782,16 +2782,16 @@ bool EncAppCfg::xCheckParameter() xConfirmPara( m_iQP < -6 * (m_internalBitDepth[CHANNEL_TYPE_LUMA] - 8) || m_iQP > MAX_QP, "QP exceeds supported range (-QpBDOffsety to 63)" ); #if W0038_DB_OPT - xConfirmPara( m_deblockingFilterMetric!=0 && (m_bLoopFilterDisable || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is non-zero then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0"); + xConfirmPara( m_deblockingFilterMetric!=0 && (m_deblockingFilterDisable || m_deblockingFilterOffsetInPPS), "If DeblockingFilterMetric is non-zero then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0"); #else xConfirmPara( m_DeblockingFilterMetric && (m_bLoopFilterDisable || m_loopFilterOffsetInPPS), "If DeblockingFilterMetric is true then both LoopFilterDisable and LoopFilterOffsetInPPS must be 0"); #endif - 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)" ); + xConfirmPara( m_deblockingFilterBetaOffsetDiv2 < -12 || m_deblockingFilterBetaOffsetDiv2 > 12, "Loop Filter Beta Offset div. 2 exceeds supported range (-12 to 12" ); + xConfirmPara( m_deblockingFilterTcOffsetDiv2 < -12 || m_deblockingFilterTcOffsetDiv2 > 12, "Loop Filter Tc Offset div. 2 exceeds supported range (-12 to 12)" ); + xConfirmPara( m_deblockingFilterCbBetaOffsetDiv2 < -12 || m_deblockingFilterCbBetaOffsetDiv2 > 12, "Loop Filter Beta Offset div. 2 exceeds supported range (-12 to 12" ); + xConfirmPara( m_deblockingFilterCbTcOffsetDiv2 < -12 || m_deblockingFilterCbTcOffsetDiv2 > 12, "Loop Filter Tc Offset div. 2 exceeds supported range (-12 to 12)" ); + xConfirmPara( m_deblockingFilterCrBetaOffsetDiv2 < -12 || m_deblockingFilterCrBetaOffsetDiv2 > 12, "Loop Filter Beta Offset div. 2 exceeds supported range (-12 to 12" ); + xConfirmPara( m_deblockingFilterCrTcOffsetDiv2 < -12 || m_deblockingFilterCrTcOffsetDiv2 > 12, "Loop Filter Tc Offset div. 2 exceeds supported range (-12 to 12)" ); 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" ); @@ -3073,16 +3073,16 @@ bool EncAppCfg::xCheckParameter() } } - if ( (m_iIntraPeriod != 1) && !m_loopFilterOffsetInPPS && (!m_bLoopFilterDisable) ) + if ( (m_iIntraPeriod != 1) && !m_deblockingFilterOffsetInPPS && (!m_deblockingFilterDisable) ) { for(int i=0; i<m_iGOPSize; i++) { - 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)" ); + xConfirmPara( (m_GOPList[i].m_betaOffsetDiv2 + m_deblockingFilterBetaOffsetDiv2) < -12 || (m_GOPList[i].m_betaOffsetDiv2 + m_deblockingFilterBetaOffsetDiv2) > 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_deblockingFilterTcOffsetDiv2) < -12 || (m_GOPList[i].m_tcOffsetDiv2 + m_deblockingFilterTcOffsetDiv2) > 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_deblockingFilterCbBetaOffsetDiv2) < -12 || (m_GOPList[i].m_CbBetaOffsetDiv2 + m_deblockingFilterCbBetaOffsetDiv2) > 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_deblockingFilterCbTcOffsetDiv2) < -12 || (m_GOPList[i].m_CbTcOffsetDiv2 + m_deblockingFilterCbTcOffsetDiv2) > 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_deblockingFilterCrBetaOffsetDiv2) < -12 || (m_GOPList[i].m_CrBetaOffsetDiv2 + m_deblockingFilterCrBetaOffsetDiv2) > 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_deblockingFilterCrTcOffsetDiv2) < -12 || (m_GOPList[i].m_CrTcOffsetDiv2 + m_deblockingFilterCrTcOffsetDiv2) > 12, "Loop Filter Tc Offset div. 2 for one of the GOP entries exceeds supported range (-12 to 12)" ); } } diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index 8e8254484..79dea3652 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -425,14 +425,14 @@ protected: bool m_saoCtuBoundary; ///< SAO parameter estimation using non-deblocked pixels for CTU bottom and right boundary areas bool m_saoGreedyMergeEnc; ///< SAO greedy merge encoding algorithm // coding tools (loop filter) - bool m_bLoopFilterDisable; ///< flag for using deblocking filter - 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 - 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 + bool m_deblockingFilterDisable; ///< flag for using deblocking filter + bool m_deblockingFilterOffsetInPPS; ///< offset for deblocking filter in 0 = slice header, 1 = PPS + int m_deblockingFilterBetaOffsetDiv2; ///< beta offset for deblocking filter + int m_deblockingFilterTcOffsetDiv2; ///< tc offset for deblocking filter + 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 #if W0038_DB_OPT int m_deblockingFilterMetric; ///< blockiness metric in encoder #else diff --git a/source/Lib/CommonLib/LoopFilter.cpp b/source/Lib/CommonLib/DeblockingFilter.cpp similarity index 94% rename from source/Lib/CommonLib/LoopFilter.cpp rename to source/Lib/CommonLib/DeblockingFilter.cpp index f9d83dc60..1e8c9c555 100644 --- a/source/Lib/CommonLib/LoopFilter.cpp +++ b/source/Lib/CommonLib/DeblockingFilter.cpp @@ -31,11 +31,11 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -/** \file LoopFilter.cpp +/** \file DeblockingFilter.cpp \brief deblocking filter */ -#include "LoopFilter.h" +#include "DeblockingFilter.h" #include "Slice.h" #include "Mv.h" #include "Unit.h" @@ -58,13 +58,13 @@ // Tables // ==================================================================================================================== -const uint16_t LoopFilter::sm_tcTable[MAX_QP + 1 + DEFAULT_INTRA_TC_OFFSET] = { +const uint16_t DeblockingFilter::sm_tcTable[MAX_QP + 1 + DEFAULT_INTRA_TC_OFFSET] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 4, 4, 5, 5, 5, 5, 7, 7, 8, 9, 10, 10, 11, 13, 14, 15, 17, 19, 21, 24, 25, 29, 33, 36, 41, 45, 51, 57, 64, 71, 80, 89, 100, 112, 125, 141, 157, 177, 198, 222, 250, 280, 314, 352, 395 }; -const uint8_t LoopFilter::sm_betaTable[MAX_QP + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +const uint8_t DeblockingFilter::sm_betaTable[MAX_QP + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88 }; @@ -92,18 +92,18 @@ static bool isAvailableAbove( const CodingUnit& cu, const CodingUnit& cu2, const // Constructor / destructor / create / destroy // ==================================================================================================================== -LoopFilter::LoopFilter() +DeblockingFilter::DeblockingFilter() { } -LoopFilter::~LoopFilter() +DeblockingFilter::~DeblockingFilter() { } // ==================================================================================================================== // Public member functions // ==================================================================================================================== -void LoopFilter::create( const unsigned uiMaxCUDepth ) +void DeblockingFilter::create( const unsigned uiMaxCUDepth ) { destroy(); const unsigned numPartitions = 1 << ( uiMaxCUDepth << 1 ); @@ -115,14 +115,14 @@ void LoopFilter::create( const unsigned uiMaxCUDepth ) m_enc = false; } -void LoopFilter::initEncPicYuvBuffer(ChromaFormat chromaFormat, const Size &size, const unsigned maxCUSize) +void DeblockingFilter::initEncPicYuvBuffer(ChromaFormat chromaFormat, const Size &size, const unsigned maxCUSize) { const Area a = Area(Position(), size); m_encPicYuvBuffer.destroy(); m_encPicYuvBuffer.create(chromaFormat, a, maxCUSize, 7); } -void LoopFilter::destroy() +void DeblockingFilter::destroy() { for( int edgeDir = 0; edgeDir < NUM_EDGE_DIR; edgeDir++ ) { @@ -137,7 +137,7 @@ void LoopFilter::destroy() . \param pcPic picture class (Pic) pointer */ -void LoopFilter::loopFilterPic( CodingStructure& cs +void DeblockingFilter::deblockingFilterPic( CodingStructure& cs ) { const PreCalcValues& pcv = *cs.pcv; @@ -238,11 +238,11 @@ void LoopFilter::loopFilterPic( CodingStructure& cs DTRACE_PIC_COMP(D_REC_CB_CHROMA_LF, cs, cs.getRecoBuf(), COMPONENT_Cb); DTRACE_PIC_COMP(D_REC_CB_CHROMA_LF, cs, cs.getRecoBuf(), COMPONENT_Cr); - DTRACE ( g_trace_ctx, D_CRC, "LoopFilter" ); + DTRACE ( g_trace_ctx, D_CRC, "DeblockingFilter" ); DTRACE_CRC( g_trace_ctx, D_CRC, cs, cs.getRecoBuf() ); } -void LoopFilter::resetFilterLengths() +void DeblockingFilter::resetFilterLengths() { memset(m_aapucBS[EDGE_VER].data(), 0, m_aapucBS[EDGE_VER].byte_size()); memset(m_aapbEdgeFilter[EDGE_VER].data(), false, m_aapbEdgeFilter[EDGE_VER].byte_size()); @@ -263,7 +263,7 @@ void LoopFilter::resetFilterLengths() \param cu the CU to be deblocked \param edgeDir the direction of the edge in block boundary (horizontal/vertical), which is added newly */ -void LoopFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) +void DeblockingFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) { const PreCalcValues& pcv = *cu.cs->pcv; const Area area = cu.Y().valid() ? cu.Y() : Area( recalcPosition( cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, cu.blocks[cu.chType].pos() ), recalcSize( cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, cu.blocks[cu.chType].size() ) ); @@ -275,7 +275,7 @@ void LoopFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) bool isCuCrossedByVirtualBoundaries = isCrossedByVirtualBoundaries( area.x, area.y, area.width, area.height, numHorVirBndry, numVerVirBndry, horVirBndryPos, verVirBndryPos, cu.cs->picHeader ); - xSetLoopfilterParam( cu ); + xSetDeblockingFilterParam( cu ); static_vector<int, 2*MAX_CU_SIZE> edgeIdx; edgeIdx.clear(); @@ -445,7 +445,7 @@ void LoopFilter::xDeblockCU( CodingUnit& cu, const DeblockEdgeDir edgeDir ) } } -inline bool LoopFilter::isCrossedByVirtualBoundaries(const int xPos, const int yPos, const int width, const int height, int& numHorVirBndry, int& numVerVirBndry, int horVirBndryPos[], int verVirBndryPos[], const PicHeader* picHeader ) +inline bool DeblockingFilter::isCrossedByVirtualBoundaries(const int xPos, const int yPos, const int width, const int height, int& numHorVirBndry, int& numVerVirBndry, int horVirBndryPos[], int verVirBndryPos[], const PicHeader* picHeader ) { numHorVirBndry = 0; numVerVirBndry = 0; if( picHeader->getVirtualBoundariesPresentFlag() ) @@ -468,7 +468,7 @@ inline bool LoopFilter::isCrossedByVirtualBoundaries(const int xPos, const int y return numHorVirBndry > 0 || numVerVirBndry > 0; } -inline void LoopFilter::xDeriveEdgefilterParam( const int xPos, const int yPos, const int numVerVirBndry, const int numHorVirBndry, const int verVirBndryPos[], const int horVirBndryPos[], bool &verEdgeFilter, bool &horEdgeFilter ) +inline void DeblockingFilter::xDeriveEdgefilterParam( const int xPos, const int yPos, const int numVerVirBndry, const int numHorVirBndry, const int verVirBndryPos[], const int horVirBndryPos[], bool &verEdgeFilter, bool &horEdgeFilter ) { for (int i = 0; i < numVerVirBndry; i++) { @@ -489,7 +489,7 @@ inline void LoopFilter::xDeriveEdgefilterParam( const int xPos, const int yPos, } } -void LoopFilter::xSetMaxFilterLengthPQFromTransformSizes(const DeblockEdgeDir edgeDir, const CodingUnit &cu, +void DeblockingFilter::xSetMaxFilterLengthPQFromTransformSizes(const DeblockEdgeDir edgeDir, const CodingUnit &cu, const TransformUnit &currTU, const int firstComponent) { const TransformUnit& tuQ = currTU; @@ -586,7 +586,7 @@ void LoopFilter::xSetMaxFilterLengthPQFromTransformSizes(const DeblockEdgeDir ed } } -void LoopFilter::xSetMaxFilterLengthPQForCodingSubBlocks( const DeblockEdgeDir edgeDir, const CodingUnit& cu, const PredictionUnit& currPU, const bool& mvSubBlocks, const int& subBlockSize, const Area& areaPu ) +void DeblockingFilter::xSetMaxFilterLengthPQForCodingSubBlocks( const DeblockEdgeDir edgeDir, const CodingUnit& cu, const PredictionUnit& currPU, const bool& mvSubBlocks, const int& subBlockSize, const Area& areaPu ) { if ( mvSubBlocks && currPU.Y().valid() ) { @@ -663,7 +663,7 @@ void LoopFilter::xSetMaxFilterLengthPQForCodingSubBlocks( const DeblockEdgeDir e } } -void LoopFilter::xSetEdgefilterMultiple( const CodingUnit& cu, +void DeblockingFilter::xSetEdgefilterMultiple( const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Area& area, const bool bValue, @@ -693,7 +693,7 @@ void LoopFilter::xSetEdgefilterMultiple( const CodingUnit& cu, } } -void LoopFilter::xSetLoopfilterParam( const CodingUnit& cu ) +void DeblockingFilter::xSetDeblockingFilterParam( const CodingUnit& cu ) { const Slice& slice = *cu.slice; const PPS& pps = *cu.cs->pps; @@ -714,7 +714,7 @@ void LoopFilter::xSetLoopfilterParam( const CodingUnit& cu ) !( pps.getSubPicFromCU(cu).getloopFilterAcrossEnabledFlag() && pps.getSubPicFromCU(*cu.cs->getCU(pos.offset(0, -1), cu.chType)).getloopFilterAcrossEnabledFlag())); } -unsigned LoopFilter::xGetBoundaryStrengthSingle ( const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos, const ChannelType chType ) const +unsigned DeblockingFilter::xGetBoundaryStrengthSingle ( const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos, const ChannelType chType ) const { // The boundary strength that is output by the function xGetBoundaryStrengthSingle is a multi component boundary strength that contains boundary strength for luma (bits 0 to 1), cb (bits 2 to 3) and cr (bits 4 to 5). @@ -903,7 +903,7 @@ unsigned LoopFilter::xGetBoundaryStrengthSingle ( const CodingUnit& cu, const De } #if LUMA_ADAPTIVE_DEBLOCKING_FILTER_QP_OFFSET -void LoopFilter::deriveLADFShift( const Pel* src, const int stride, int& shift, const DeblockEdgeDir edgeDir, const SPS sps ) +void DeblockingFilter::deriveLADFShift( const Pel* src, const int stride, int& shift, const DeblockEdgeDir edgeDir, const SPS sps ) { uint32_t lumaLevel = 0; shift = sps.getLadfQpOffset(0); @@ -932,7 +932,7 @@ void LoopFilter::deriveLADFShift( const Pel* src, const int stride, int& shift, } #endif -void LoopFilter::xEdgeFilterLuma( const CodingUnit& cu, const DeblockEdgeDir edgeDir, const int iEdge ) +void DeblockingFilter::xEdgeFilterLuma( const CodingUnit& cu, const DeblockEdgeDir edgeDir, const int iEdge ) { const CompArea& lumaArea = cu.block(COMPONENT_Y); const PreCalcValues& pcv = *cu.cs->pcv; @@ -1180,7 +1180,7 @@ void LoopFilter::xEdgeFilterLuma( const CodingUnit& cu, const DeblockEdgeDir edg } -void LoopFilter::xEdgeFilterChroma(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const int iEdge) +void DeblockingFilter::xEdgeFilterChroma(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const int iEdge) { const Position lumaPos = cu.Y().valid() ? cu.Y().pos() : recalcPosition( cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, cu.blocks[cu.chType].pos() ); const Size lumaSize = cu.Y().valid() ? cu.Y().size() : recalcSize( cu.chromaFormat, cu.chType, CHANNEL_TYPE_LUMA, cu.blocks[cu.chType].size() ); @@ -1406,7 +1406,7 @@ void LoopFilter::xEdgeFilterChroma(const CodingUnit& cu, const DeblockEdgeDir ed \param bFilterSecondQ decision weak filter/no filter for partQ \param bitDepthLuma luma bit depth */ -inline void LoopFilter::xBilinearFilter(Pel* srcP, Pel* srcQ, int offset, int refMiddle, int refP, int refQ, int numberPSide, int numberQSide, const int* dbCoeffsP, const int* dbCoeffsQ, int tc) const +inline void DeblockingFilter::xBilinearFilter(Pel* srcP, Pel* srcQ, int offset, int refMiddle, int refP, int refQ, int numberPSide, int numberQSide, const int* dbCoeffsP, const int* dbCoeffsQ, int tc) const { const char tc7[7] = { 6, 5, 4, 3, 2, 1, 1 }; const char tc3[3] = { 6, 4, 2 }; @@ -1430,7 +1430,7 @@ inline void LoopFilter::xBilinearFilter(Pel* srcP, Pel* srcQ, int offset, int re } } -inline void LoopFilter::xFilteringPandQ(Pel* src, int offset, int numberPSide, int numberQSide, int tc) const +inline void DeblockingFilter::xFilteringPandQ(Pel* src, int offset, int numberPSide, int numberQSide, int tc) const { CHECK(numberPSide <= 3 && numberQSide <= 3, "Short filtering in long filtering function"); Pel* srcP = src-offset; @@ -1504,7 +1504,7 @@ inline void LoopFilter::xFilteringPandQ(Pel* src, int offset, int numberPSide, i xBilinearFilter(srcP,srcQ,offset,refMiddle,refP,refQ,numberPSide,numberQSide,dbCoeffsP,dbCoeffsQ,tc); } -inline void LoopFilter::xPelFilterLuma(Pel* piSrc, const int iOffset, const int tc, const bool sw, const bool bPartPNoFilter, const bool bPartQNoFilter, const int iThrCut, const bool bFilterSecondP, const bool bFilterSecondQ, const ClpRng& clpRng, bool sidePisLarge, bool sideQisLarge, int maxFilterLengthP, int maxFilterLengthQ) const +inline void DeblockingFilter::xPelFilterLuma(Pel* piSrc, const int iOffset, const int tc, const bool sw, const bool bPartPNoFilter, const bool bPartQNoFilter, const int iThrCut, const bool bFilterSecondP, const bool bFilterSecondQ, const ClpRng& clpRng, bool sidePisLarge, bool sideQisLarge, int maxFilterLengthP, int maxFilterLengthQ) const { int delta; @@ -1604,7 +1604,7 @@ inline void LoopFilter::xPelFilterLuma(Pel* piSrc, const int iOffset, const int \param bPartQNoFilter indicator to disable filtering on partQ \param bitDepthChroma chroma bit depth */ -inline void LoopFilter::xPelFilterChroma(Pel* piSrc, const int iOffset, const int tc, const bool sw, const bool bPartPNoFilter, const bool bPartQNoFilter, const ClpRng& clpRng, const bool largeBoundary, const bool isChromaHorCTBBoundary) const +inline void DeblockingFilter::xPelFilterChroma(Pel* piSrc, const int iOffset, const int tc, const bool sw, const bool bPartPNoFilter, const bool bPartQNoFilter, const ClpRng& clpRng, const bool largeBoundary, const bool isChromaHorCTBBoundary) const { int delta; @@ -1673,7 +1673,7 @@ inline void LoopFilter::xPelFilterChroma(Pel* piSrc, const int iOffset, const in \param tc tc value \param piSrc pointer to picture data */ -inline bool LoopFilter::xUseStrongFiltering(Pel* piSrc, const int iOffset, const int d, const int beta, const int tc, bool sidePisLarge, bool sideQisLarge, int maxFilterLengthP, int maxFilterLengthQ, bool isChromaHorCTBBoundary) const +inline bool DeblockingFilter::xUseStrongFiltering(Pel* piSrc, const int iOffset, const int d, const int beta, const int tc, bool sidePisLarge, bool sideQisLarge, int maxFilterLengthP, int maxFilterLengthQ, bool isChromaHorCTBBoundary) const { const Pel m4 = piSrc[ 0 ]; const Pel m3 = piSrc[-iOffset ]; @@ -1732,7 +1732,7 @@ inline bool LoopFilter::xUseStrongFiltering(Pel* piSrc, const int iOffset, const } } -inline int LoopFilter::xCalcDP(Pel* piSrc, const int iOffset, const bool isChromaHorCTBBoundary) const +inline int DeblockingFilter::xCalcDP(Pel* piSrc, const int iOffset, const bool isChromaHorCTBBoundary) const { if (isChromaHorCTBBoundary) { @@ -1744,12 +1744,12 @@ inline int LoopFilter::xCalcDP(Pel* piSrc, const int iOffset, const bool isChrom } } -inline int LoopFilter::xCalcDQ( Pel* piSrc, const int iOffset ) const +inline int DeblockingFilter::xCalcDQ( Pel* piSrc, const int iOffset ) const { return abs( piSrc[0] - 2 * piSrc[iOffset] + piSrc[iOffset * 2] ); } -inline unsigned LoopFilter::BsSet(unsigned val, const ComponentID compIdx) const { return (val << (compIdx << 1)); } -inline unsigned LoopFilter::BsGet(unsigned val, const ComponentID compIdx) const { return ((val >> (compIdx << 1)) & 3); } +inline unsigned DeblockingFilter::BsSet(unsigned val, const ComponentID compIdx) const { return (val << (compIdx << 1)); } +inline unsigned DeblockingFilter::BsGet(unsigned val, const ComponentID compIdx) const { return ((val >> (compIdx << 1)) & 3); } //! \} diff --git a/source/Lib/CommonLib/LoopFilter.h b/source/Lib/CommonLib/DeblockingFilter.h similarity index 96% rename from source/Lib/CommonLib/LoopFilter.h rename to source/Lib/CommonLib/DeblockingFilter.h index 8438799c9..9deb304c1 100644 --- a/source/Lib/CommonLib/LoopFilter.h +++ b/source/Lib/CommonLib/DeblockingFilter.h @@ -31,12 +31,12 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -/** \file LoopFilter.h +/** \file DeblockingFilter.h \brief deblocking filter (header) */ -#ifndef __LOOPFILTER__ -#define __LOOPFILTER__ +#ifndef __DEBLOCKINGFILTER__ +#define __DEBLOCKINGFILTER__ #include "CommonDef.h" #include "Unit.h" @@ -52,7 +52,7 @@ // ==================================================================================================================== /// deblocking filter class -class LoopFilter +class DeblockingFilter { private: static_vector<char, MAX_NUM_PARTS_IN_CTU> m_aapucBS [NUM_EDGE_DIR]; ///< Bs for [Ver/Hor][Y/U/V][Blk_Idx] @@ -68,7 +68,7 @@ private: private: // set / get functions - void xSetLoopfilterParam ( const CodingUnit& cu ); + void xSetDeblockingFilterParam ( const CodingUnit& cu ); // filtering functions unsigned @@ -107,8 +107,8 @@ private: public: - LoopFilter(); - ~LoopFilter(); + DeblockingFilter(); + ~DeblockingFilter(); /// CU-level deblocking function void xDeblockCU(CodingUnit& cu, const DeblockEdgeDir edgeDir); @@ -120,8 +120,7 @@ public: void destroy (); /// picture-level deblocking filter - void loopFilterPic ( CodingStructure& cs - ); + void deblockingFilterPic ( CodingStructure& cs ); static int getBeta ( const int qp ) { diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index f6bd5008b..c42c8109a 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -414,7 +414,7 @@ DecLib::DecLib() , m_cCuDecoder() , m_HLSReader() , m_seiReader() - , m_cLoopFilter() + , m_deblockingFilter() , m_cSAO() , m_cReshaper() #if JVET_J0090_MEMORY_BANDWITH_MEASURE @@ -538,7 +538,7 @@ void DecLib::deletePicBuffer ( ) } m_cALF.destroy(); m_cSAO.destroy(); - m_cLoopFilter.destroy(); + m_deblockingFilter.destroy(); #if JVET_J0090_MEMORY_BANDWITH_MEASURE m_cacheModel.reportSequence( ); m_cacheModel.destroy( ); @@ -642,7 +642,7 @@ void DecLib::executeLoopFilters() m_cSAO.setReshaper(&m_cReshaper); } // deblocking filter - m_cLoopFilter.loopFilterPic( cs ); + m_deblockingFilter.deblockingFilterPic( cs ); CS::setRefinedMotionField(cs); if( cs.sps->getSAOEnabledFlag() ) { @@ -1687,7 +1687,7 @@ void DecLib::xActivateParameterSets( const InputNALUnit nalu ) sps->getMaxCUWidth(), sps->getMaxCUHeight(), maxDepth, log2SaoOffsetScaleLuma, log2SaoOffsetScaleChroma ); - m_cLoopFilter.create(maxDepth); + m_deblockingFilter.create(maxDepth); m_cIntraPred.init( sps->getChromaFormatIdc(), sps->getBitDepth( CHANNEL_TYPE_LUMA ) ); m_cInterPred.init( &m_cRdCost, sps->getChromaFormatIdc(), sps->getMaxCUHeight() ); if (sps->getUseLmcs()) diff --git a/source/Lib/DecoderLib/DecLib.h b/source/Lib/DecoderLib/DecLib.h index b87ba26d9..d95f4a760 100644 --- a/source/Lib/DecoderLib/DecLib.h +++ b/source/Lib/DecoderLib/DecLib.h @@ -49,7 +49,7 @@ #include "CommonLib/TrQuant.h" #include "CommonLib/InterPrediction.h" #include "CommonLib/IntraPrediction.h" -#include "CommonLib/LoopFilter.h" +#include "CommonLib/DeblockingFilter.h" #include "CommonLib/AdaptiveLoopFilter.h" #include "CommonLib/SEI.h" #include "CommonLib/Unit.h" @@ -110,7 +110,7 @@ private: #if JVET_S0257_DUMP_360SEI_MESSAGE SeiCfgFileDump m_seiCfgDump; #endif - LoopFilter m_cLoopFilter; + DeblockingFilter m_deblockingFilter; SampleAdaptiveOffset m_cSAO; AdaptiveLoopFilter m_cALF; Reshape m_cReshaper; ///< reshaper class diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index 421f13c39..29ff9cab1 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -402,14 +402,14 @@ protected: uint32_t m_log2MaxTbSize; //====== Loop/Deblock Filter ======== - bool m_bLoopFilterDisable; - bool m_loopFilterOffsetInPPS; - int m_loopFilterBetaOffsetDiv2; - int m_loopFilterTcOffsetDiv2; - int m_loopFilterCbBetaOffsetDiv2; - int m_loopFilterCbTcOffsetDiv2; - int m_loopFilterCrBetaOffsetDiv2; - int m_loopFilterCrTcOffsetDiv2; + bool m_deblockingFilterDisable; + bool m_deblockingFilterOffsetInPPS; + int m_deblockingFilterBetaOffsetDiv2; + int m_deblockingFilterTcOffsetDiv2; + int m_deblockingFilterCbBetaOffsetDiv2; + int m_deblockingFilterCbTcOffsetDiv2; + int m_deblockingFilterCrBetaOffsetDiv2; + int m_deblockingFilterCrTcOffsetDiv2; #if W0038_DB_OPT int m_deblockingFilterMetric; #else @@ -1235,14 +1235,14 @@ public: void setLog2MaxTbSize ( uint32_t u ) { m_log2MaxTbSize = u; } //====== Loop/Deblock Filter ======== - void setLoopFilterDisable ( bool b ) { m_bLoopFilterDisable = b; } - void setLoopFilterOffsetInPPS ( bool b ) { m_loopFilterOffsetInPPS = b; } - void setLoopFilterBetaOffset ( int i ) { m_loopFilterBetaOffsetDiv2 = i; } - void setLoopFilterTcOffset ( int i ) { m_loopFilterTcOffsetDiv2 = i; } - 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; } + void setDeblockingFilterDisable ( bool b ) { m_deblockingFilterDisable = b; } + void setDeblockingFilterOffsetInPPS ( bool b ) { m_deblockingFilterOffsetInPPS = b; } + void setDeblockingFilterBetaOffset ( int i ) { m_deblockingFilterBetaOffsetDiv2 = i; } + void setDeblockingFilterTcOffset ( int i ) { m_deblockingFilterTcOffsetDiv2 = i; } + void setDeblockingFilterCbBetaOffset ( int i ) { m_deblockingFilterCbBetaOffsetDiv2 = i; } + void setDeblockingFilterCbTcOffset ( int i ) { m_deblockingFilterCbTcOffsetDiv2 = i; } + void setDeblockingFilterCrBetaOffset ( int i ) { m_deblockingFilterCrBetaOffsetDiv2 = i; } + void setDeblockingFilterCrTcOffset ( int i ) { m_deblockingFilterCrTcOffsetDiv2 = i; } #if W0038_DB_OPT void setDeblockingFilterMetric ( int i ) { m_deblockingFilterMetric = i; } #else @@ -1352,14 +1352,14 @@ public: void setEnablePictureHeaderInSliceHeader(bool val) { m_enablePictureHeaderInSliceHeader = val; } //==== Loop/Deblock Filter ======== - bool getLoopFilterDisable () { return m_bLoopFilterDisable; } - bool getLoopFilterOffsetInPPS () { return m_loopFilterOffsetInPPS; } - int getLoopFilterBetaOffset () { return m_loopFilterBetaOffsetDiv2; } - int getLoopFilterTcOffset () { return m_loopFilterTcOffsetDiv2; } - int getLoopFilterCbBetaOffset () { return m_loopFilterCbBetaOffsetDiv2; } - int getLoopFilterCbTcOffset () { return m_loopFilterCbTcOffsetDiv2; } - int getLoopFilterCrBetaOffset () { return m_loopFilterCrBetaOffsetDiv2; } - int getLoopFilterCrTcOffset () { return m_loopFilterCrTcOffsetDiv2; } + bool getDeblockingFilterDisable () { return m_deblockingFilterDisable; } + bool getDeblockingFilterOffsetInPPS () { return m_deblockingFilterOffsetInPPS; } + int getDeblockingFilterBetaOffset () { return m_deblockingFilterBetaOffsetDiv2; } + int getDeblockingFilterTcOffset () { return m_deblockingFilterTcOffsetDiv2; } + int getDeblockingFilterCbBetaOffset () { return m_deblockingFilterCbBetaOffsetDiv2; } + int getDeblockingFilterCbTcOffset () { return m_deblockingFilterCbTcOffsetDiv2; } + int getDeblockingFilterCrBetaOffset () { return m_deblockingFilterCrBetaOffsetDiv2; } + int getDeblockingFilterCrTcOffset () { return m_deblockingFilterCrTcOffsetDiv2; } #if W0038_DB_OPT int getDeblockingFilterMetric () { return m_deblockingFilterMetric; } #else diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp index 080d49dad..ed137ce1a 100644 --- a/source/Lib/EncoderLib/EncCu.cpp +++ b/source/Lib/EncoderLib/EncCu.cpp @@ -239,7 +239,7 @@ void EncCu::init( EncLib* pcEncLib, const SPS& sps ) m_CtxCache = pcEncLib->getCtxCache(); m_pcRateCtrl = pcEncLib->getRateCtrl(); m_pcSliceEncoder = pcEncLib->getSliceEncoder(); - m_pcLoopFilter = pcEncLib->getLoopFilter(); + m_deblockingFilter = pcEncLib->getDeblockingFilter(); m_GeoCostList.init(GEO_NUM_PARTITION_MODE, m_pcEncCfg->getMaxNumGeoCand()); m_AFFBestSATDCost = MAX_DOUBLE; @@ -4529,7 +4529,7 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal return; } - m_pcLoopFilter->setEnc(true); + m_deblockingFilter->setEnc(true); const ChromaFormat format = cs.area.chromaFormat; CodingUnit* cu = cs.getCU(partitioner.chType); const Position lumaPos = cu->Y().valid() ? cu->Y().pos() : recalcPosition( format, cu->chType, CHANNEL_TYPE_LUMA, cu->blocks[cu->chType].pos() ); @@ -4562,7 +4562,7 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal const UnitArea currCsArea = clipArea( CS::getArea( cs, cs.area, partitioner.chType ), *cs.picture ); - PelStorage& picDbBuf = m_pcLoopFilter->getDbEncPicYuvBuffer(); + PelStorage& picDbBuf = m_deblockingFilter->getDbEncPicYuvBuffer(); //deblock neighbour pixels const Size lumaSize = cu->Y().valid() ? cu->Y().size() : recalcSize( format, cu->chType, CHANNEL_TYPE_LUMA, cu->blocks[cu->chType].size() ); @@ -4608,14 +4608,14 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal //deblock if ( leftEdgeAvai ) { - m_pcLoopFilter->resetFilterLengths(); - m_pcLoopFilter->xDeblockCU( *cu, EDGE_VER ); + m_deblockingFilter->resetFilterLengths(); + m_deblockingFilter->xDeblockCU( *cu, EDGE_VER ); } if (topEdgeAvai) { - m_pcLoopFilter->resetFilterLengths(); - m_pcLoopFilter->xDeblockCU( *cu, EDGE_HOR ); + m_deblockingFilter->resetFilterLengths(); + m_deblockingFilter->xDeblockCU( *cu, EDGE_HOR ); } //update current CU SSE @@ -4660,7 +4660,7 @@ void EncCu::xCalDebCost( CodingStructure &cs, Partitioner &partitioner, bool cal cs.costDbOffset = sign * m_pcRdCost->calcRdCost( 0, distTmp ); } - m_pcLoopFilter->setEnc( false ); + m_deblockingFilter->setEnc( false ); } Distortion EncCu::getDistortionDb( CodingStructure &cs, CPelBuf org, CPelBuf reco, ComponentID compID, const CompArea& compArea, bool afterDb ) diff --git a/source/Lib/EncoderLib/EncCu.h b/source/Lib/EncoderLib/EncCu.h index f92d28304..612e212ce 100644 --- a/source/Lib/EncoderLib/EncCu.h +++ b/source/Lib/EncoderLib/EncCu.h @@ -46,7 +46,7 @@ #include "CommonLib/Unit.h" #include "CommonLib/UnitPartitioner.h" #include "CommonLib/IbcHashMap.h" -#include "CommonLib/LoopFilter.h" +#include "CommonLib/DeblockingFilter.h" #include "DecoderLib/DecCu.h" @@ -179,7 +179,7 @@ private: TrQuant* m_pcTrQuant; RdCost* m_pcRdCost; EncSlice* m_pcSliceEncoder; - LoopFilter* m_pcLoopFilter; + DeblockingFilter* m_deblockingFilter; CABACWriter* m_CABACEstimator; RateCtrl* m_pcRateCtrl; diff --git a/source/Lib/EncoderLib/EncGOP.cpp b/source/Lib/EncoderLib/EncGOP.cpp index b7131a5cf..a450523f1 100644 --- a/source/Lib/EncoderLib/EncGOP.cpp +++ b/source/Lib/EncoderLib/EncGOP.cpp @@ -210,7 +210,7 @@ void EncGOP::init ( EncLib* pcEncLib ) m_pcSliceEncoder = pcEncLib->getSliceEncoder(); m_pcListPic = pcEncLib->getListPic(); m_HLSWriter = pcEncLib->getHLSWriter(); - m_pcLoopFilter = pcEncLib->getLoopFilter(); + m_pcLoopFilter = pcEncLib->getDeblockingFilter(); m_pcSAO = pcEncLib->getSAO(); m_pcALF = pcEncLib->getALF(); m_pcRateCtrl = pcEncLib->getRateCtrl(); @@ -3039,7 +3039,7 @@ void EncGOP::compressGOP( int iPOCLast, int iNumPicRcvd, PicList& rcListPic, } } } - m_pcLoopFilter->loopFilterPic( cs ); + m_pcLoopFilter->deblockingFilterPic( cs ); CS::setRefinedMotionField(cs); @@ -3885,7 +3885,7 @@ void EncGOP::printOutSummary( uint32_t uiNumAllPicCoded, bool isField, const boo uint64_t EncGOP::preLoopFilterPicAndCalcDist( Picture* pcPic ) { CodingStructure& cs = *pcPic->cs; - m_pcLoopFilter->loopFilterPic( cs ); + m_pcLoopFilter->deblockingFilterPic( cs ); const CPelUnitBuf picOrg = pcPic->getRecoBuf(); const CPelUnitBuf picRec = cs.getRecoBuf(); @@ -5466,7 +5466,7 @@ void EncGOP::applyDeblockingFilterMetric( Picture* pcPic, uint32_t uiNumSlices ) int qp = pcSlice->getSliceQp(); const int bitDepthLuma=pcSlice->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA); int bitdepthScale = 1 << (bitDepthLuma-8); - int beta = LoopFilter::getBeta( qp ) * bitdepthScale; + int beta = DeblockingFilter::getBeta( qp ) * bitdepthScale; const int thr2 = (beta>>2); const int thr1 = 2*bitdepthScale; uint32_t a = 0; diff --git a/source/Lib/EncoderLib/EncGOP.h b/source/Lib/EncoderLib/EncGOP.h index c80df5b27..ad987a1f4 100644 --- a/source/Lib/EncoderLib/EncGOP.h +++ b/source/Lib/EncoderLib/EncGOP.h @@ -43,7 +43,7 @@ #include <stdlib.h> #include "CommonLib/Picture.h" -#include "CommonLib/LoopFilter.h" +#include "CommonLib/DeblockingFilter.h" #include "CommonLib/NAL.h" #include "EncSampleAdaptiveOffset.h" #include "EncAdaptiveLoopFilter.h" @@ -137,7 +137,7 @@ private: PicList* m_pcListPic; HLSWriter* m_HLSWriter; - LoopFilter* m_pcLoopFilter; + DeblockingFilter* m_pcLoopFilter; SEIWriter m_seiWriter; diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index d13a3ca80..9cfb1ddbe 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -104,11 +104,11 @@ void EncLib::create( const int layerId ) m_cInterSearch.cacheAssign( &m_cacheModel ); #endif - m_cLoopFilter.create(floorLog2(m_maxCUWidth) - MIN_CU_LOG2); + m_deblockingFilter.create(floorLog2(m_maxCUWidth) - MIN_CU_LOG2); - if (!m_bLoopFilterDisable && m_encDbOpt) + if (!m_deblockingFilterDisable && m_encDbOpt) { - m_cLoopFilter.initEncPicYuvBuffer(m_chromaFormatIDC, Size(getSourceWidth(), getSourceHeight()), getMaxCUWidth()); + m_deblockingFilter.initEncPicYuvBuffer(m_chromaFormatIDC, Size(getSourceWidth(), getSourceHeight()), getMaxCUWidth()); } if (m_lmcsEnabled) @@ -135,7 +135,7 @@ void EncLib::destroy () } m_cEncSAO. destroyEncData(); m_cEncSAO. destroy(); - m_cLoopFilter. destroy(); + m_deblockingFilter. destroy(); m_cRateCtrl. destroy(); m_cReshaper. destroy(); m_cInterSearch. destroy(); @@ -1671,18 +1671,18 @@ void EncLib::xInitPPS(PPS &pps, const SPS &sps) } else { - pps.setDeblockingFilterOverrideEnabledFlag( !getLoopFilterOffsetInPPS() ); - pps.setPPSDeblockingFilterDisabledFlag( getLoopFilterDisable() ); + pps.setDeblockingFilterOverrideEnabledFlag( !getDeblockingFilterOffsetInPPS() ); + pps.setPPSDeblockingFilterDisabledFlag( getDeblockingFilterDisable() ); } if (! pps.getPPSDeblockingFilterDisabledFlag()) { - pps.setDeblockingFilterBetaOffsetDiv2( getLoopFilterBetaOffset() ); - pps.setDeblockingFilterTcOffsetDiv2( getLoopFilterTcOffset() ); - pps.setDeblockingFilterCbBetaOffsetDiv2( getLoopFilterCbBetaOffset() ); - pps.setDeblockingFilterCbTcOffsetDiv2( getLoopFilterCbTcOffset() ); - pps.setDeblockingFilterCrBetaOffsetDiv2( getLoopFilterCrBetaOffset() ); - pps.setDeblockingFilterCrTcOffsetDiv2( getLoopFilterCrTcOffset() ); + pps.setDeblockingFilterBetaOffsetDiv2 ( getDeblockingFilterBetaOffset() ); + pps.setDeblockingFilterTcOffsetDiv2 ( getDeblockingFilterTcOffset() ); + pps.setDeblockingFilterCbBetaOffsetDiv2( getDeblockingFilterCbBetaOffset() ); + pps.setDeblockingFilterCbTcOffsetDiv2 ( getDeblockingFilterCbTcOffset() ); + pps.setDeblockingFilterCrBetaOffsetDiv2( getDeblockingFilterCrBetaOffset() ); + pps.setDeblockingFilterCrTcOffsetDiv2 ( getDeblockingFilterCrTcOffset() ); } else { diff --git a/source/Lib/EncoderLib/EncLib.h b/source/Lib/EncoderLib/EncLib.h index 5808f9de5..ec0616fca 100644 --- a/source/Lib/EncoderLib/EncLib.h +++ b/source/Lib/EncoderLib/EncLib.h @@ -40,7 +40,7 @@ // Include files #include "CommonLib/TrQuant.h" -#include "CommonLib/LoopFilter.h" +#include "CommonLib/DeblockingFilter.h" #include "CommonLib/NAL.h" #include "Utilities/VideoIOYuv.h" @@ -83,7 +83,7 @@ private: IntraSearch m_cIntraSearch; ///< encoder search class // coding tool TrQuant m_cTrQuant; ///< transform & quantization class - LoopFilter m_cLoopFilter; ///< deblocking filter class + DeblockingFilter m_deblockingFilter; ///< deblocking filter class EncSampleAdaptiveOffset m_cEncSAO; ///< sample adaptive offset class EncAdaptiveLoopFilter m_cEncALF; HLSWriter m_HLSWriter; ///< CAVLC encoder @@ -169,7 +169,7 @@ public: IntraSearch* getIntraSearch () { return &m_cIntraSearch; } TrQuant* getTrQuant () { return &m_cTrQuant; } - LoopFilter* getLoopFilter () { return &m_cLoopFilter; } + DeblockingFilter* getDeblockingFilter () { return &m_deblockingFilter; } EncSampleAdaptiveOffset* getSAO () { return &m_cEncSAO; } EncAdaptiveLoopFilter* getALF () { return &m_cEncALF; } EncGOP* getGOPEncoder () { return &m_cGOPEncoder; } diff --git a/source/Lib/EncoderLib/EncSlice.cpp b/source/Lib/EncoderLib/EncSlice.cpp index a4d6e07cc..14c2cb145 100644 --- a/source/Lib/EncoderLib/EncSlice.cpp +++ b/source/Lib/EncoderLib/EncSlice.cpp @@ -663,31 +663,31 @@ void EncSlice::initEncSlice(Picture* pcPic, const int pocLast, const int pocCurr { if ( rpcSlice->getDeblockingFilterOverrideFlag() && eSliceType!=I_SLICE) { - rpcSlice->setDeblockingFilterBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_betaOffsetDiv2 + m_pcCfg->getLoopFilterBetaOffset() ); - rpcSlice->setDeblockingFilterTcOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_tcOffsetDiv2 + m_pcCfg->getLoopFilterTcOffset() ); + rpcSlice->setDeblockingFilterBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_betaOffsetDiv2 + m_pcCfg->getDeblockingFilterBetaOffset() ); + rpcSlice->setDeblockingFilterTcOffsetDiv2 ( m_pcCfg->getGOPEntry(iGOPid).m_tcOffsetDiv2 + m_pcCfg->getDeblockingFilterTcOffset() ); if( rpcSlice->getPPS()->getPPSChromaToolFlag() ) { - 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() ); + rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_CbBetaOffsetDiv2 + m_pcCfg->getDeblockingFilterCbBetaOffset() ); + rpcSlice->setDeblockingFilterCbTcOffsetDiv2 ( m_pcCfg->getGOPEntry(iGOPid).m_CbTcOffsetDiv2 + m_pcCfg->getDeblockingFilterCbTcOffset() ); + rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( m_pcCfg->getGOPEntry(iGOPid).m_CrBetaOffsetDiv2 + m_pcCfg->getDeblockingFilterCrBetaOffset() ); + rpcSlice->setDeblockingFilterCrTcOffsetDiv2 ( m_pcCfg->getGOPEntry(iGOPid).m_CrTcOffsetDiv2 + m_pcCfg->getDeblockingFilterCrTcOffset() ); } else { rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( rpcSlice->getDeblockingFilterBetaOffsetDiv2() ); - rpcSlice->setDeblockingFilterCbTcOffsetDiv2( rpcSlice->getDeblockingFilterTcOffsetDiv2() ); + rpcSlice->setDeblockingFilterCbTcOffsetDiv2 ( rpcSlice->getDeblockingFilterTcOffsetDiv2() ); rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( rpcSlice->getDeblockingFilterBetaOffsetDiv2() ); - rpcSlice->setDeblockingFilterCrTcOffsetDiv2( rpcSlice->getDeblockingFilterTcOffsetDiv2() ); + rpcSlice->setDeblockingFilterCrTcOffsetDiv2 ( rpcSlice->getDeblockingFilterTcOffsetDiv2() ); } } else { - rpcSlice->setDeblockingFilterBetaOffsetDiv2( m_pcCfg->getLoopFilterBetaOffset() ); - rpcSlice->setDeblockingFilterTcOffsetDiv2( m_pcCfg->getLoopFilterTcOffset() ); - rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( m_pcCfg->getLoopFilterCbBetaOffset() ); - rpcSlice->setDeblockingFilterCbTcOffsetDiv2( m_pcCfg->getLoopFilterCbTcOffset() ); - rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( m_pcCfg->getLoopFilterCrBetaOffset() ); - rpcSlice->setDeblockingFilterCrTcOffsetDiv2( m_pcCfg->getLoopFilterCrTcOffset() ); + rpcSlice->setDeblockingFilterBetaOffsetDiv2 ( m_pcCfg->getDeblockingFilterBetaOffset() ); + rpcSlice->setDeblockingFilterTcOffsetDiv2 ( m_pcCfg->getDeblockingFilterTcOffset() ); + rpcSlice->setDeblockingFilterCbBetaOffsetDiv2( m_pcCfg->getDeblockingFilterCbBetaOffset() ); + rpcSlice->setDeblockingFilterCbTcOffsetDiv2 ( m_pcCfg->getDeblockingFilterCbTcOffset() ); + rpcSlice->setDeblockingFilterCrBetaOffsetDiv2( m_pcCfg->getDeblockingFilterCrBetaOffset() ); + rpcSlice->setDeblockingFilterCrTcOffsetDiv2 ( m_pcCfg->getDeblockingFilterCrTcOffset() ); } } } -- GitLab