From 222271b819290378684d121fc1d19df7c47e21a8 Mon Sep 17 00:00:00 2001 From: "hm.jang" <hm.jang@lge.com> Date: Sat, 26 Oct 2019 12:44:28 +0900 Subject: [PATCH] implement JVET-P0571 : CE5/CE8: Deblocking Filter for BDPCM coded block. Detail - Align SW with specification. - Boundary strength for BDPCM is independently derived for each component. --- source/Lib/CommonLib/LoopFilter.cpp | 8 ++++++++ source/Lib/CommonLib/TypeDef.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/source/Lib/CommonLib/LoopFilter.cpp b/source/Lib/CommonLib/LoopFilter.cpp index c7b4d9fd2..2200bfd2b 100644 --- a/source/Lib/CommonLib/LoopFilter.cpp +++ b/source/Lib/CommonLib/LoopFilter.cpp @@ -689,15 +689,23 @@ unsigned LoopFilter::xGetBoundaryStrengthSingle ( const CodingUnit& cu, const De const CodingUnit& cuQ = cu; const CodingUnit& cuP = *cu.cs->getCU( posP, cu.chType ); +#if !JVET_P0571_FIX_BS_BDPCM_CHROMA if( ( MODE_INTRA == cuP.predMode && cuP.bdpcmMode ) && ( MODE_INTRA == cuQ.predMode && cuQ.bdpcmMode ) ) { return 0; } +#endif //-- Set BS for Intra MB : BS = 4 or 3 if( ( MODE_INTRA == cuP.predMode ) || ( MODE_INTRA == cuQ.predMode ) ) { +#if JVET_P0571_FIX_BS_BDPCM_CHROMA + int bsY = (MODE_INTRA == cuP.predMode && cuP.bdpcmMode) && (MODE_INTRA == cuQ.predMode && cuQ.bdpcmMode) ? 0 : 2; + int bsC = 2; + return (BsSet(bsY, COMPONENT_Y) + BsSet(bsC, COMPONENT_Cb) + BsSet(bsC, COMPONENT_Cr)); +#else return (BsSet(2, COMPONENT_Y) + BsSet(2, COMPONENT_Cb) + BsSet(2, COMPONENT_Cr)); +#endif } const TransformUnit& tuQ = *cuQ.cs->getTU(posQ, cuQ.chType); diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 93e22e548..b44993893 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -49,6 +49,8 @@ #include <cstring> #include <assert.h> #include <cassert> +#define JVET_P0571_FIX_BS_BDPCM_CHROMA 1 // JVET-P0571: align boundary strength for Chroma BDPCM + #define JVET_P0983_REMOVE_SPS_SBT_MAX_SIZE_FLAG 1 // JVET-P0983/JVET-P0391: Remove sps_sbt_max_size_64_flag #define JVET_P0530_TPM_WEIGHT_ALIGN 1 // JVET-P0530: align chroma weights with luma weights for TPM blending -- GitLab