diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 4e5bbc845034fe952a0b46316edaf5d8b996ebe1..66b4d26b60487e463601bf86096f50c755e9efe2 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -50,6 +50,8 @@ #include <assert.h> #include <cassert> +#define JVET_O0616_400_CHROMA_SUPPORT 1 // JVET-O0616: Various chroma format support in VVC + #define JVET_O1136_TS_BDPCM_SIGNALLING 1 // JVET-O1136: Unified syntax for JVET-O0165/O0200/O0783 on TS and BDPCM signalling #define JVET_O0219_LFNST_TRANSFORM_SET_FOR_LMCMODE 1 diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 1f7817faba04d938648ef2a3b1bfcc22b16dc1b5..dbfaff778578a45855f7f6aee357da9923c808a9 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1808,7 +1808,18 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, ParameterSetManager *para pcSlice->setAlfAPSs(apsId); - alfChromaIdc = truncatedUnaryEqProb(3); //alf_chroma_idc +#if JVET_O0616_400_CHROMA_SUPPORT + if (bChroma) + { +#endif + alfChromaIdc = truncatedUnaryEqProb(3); //alf_chroma_idc +#if JVET_O0616_400_CHROMA_SUPPORT + } + else + { + alfChromaIdc = 0; + } +#endif if (alfChromaIdc) { #if JVET_O0288_UNIFY_ALF_SLICE_TYPE_REMOVAL @@ -2180,10 +2191,14 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, ParameterSetManager *para #if !JVET_O1109_UNFIY_CRS if (!(sps->getUseDualITree() && pcSlice->isIntra())) { +#endif +#if JVET_O0616_400_CHROMA_SUPPORT + if (bChroma) + { #endif READ_FLAG(uiCode, "slice_chroma_residual_scale_flag"); pcSlice->setLmcsChromaResidualScaleFlag(uiCode == 1); -#if !JVET_O1109_UNFIY_CRS +#if !JVET_O1109_UNFIY_CRS || JVET_O0616_400_CHROMA_SUPPORT } else { diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 90f7a64f4bd26655c48861991b1521d5560b0877..090b22b84f6a144e8c39f3af8849a93fcb82007c 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -1249,7 +1249,14 @@ void HLSWriter::codeSliceHeader ( Slice* pcSlice ) } const int alfChromaIdc = pcSlice->getTileGroupAlfEnabledFlag(COMPONENT_Cb) + pcSlice->getTileGroupAlfEnabledFlag(COMPONENT_Cr) * 2 ; - truncatedUnaryEqProb(alfChromaIdc, 3); // alf_chroma_idc +#if JVET_O0616_400_CHROMA_SUPPORT + if (chromaEnabled) + { +#endif + truncatedUnaryEqProb(alfChromaIdc, 3); // alf_chroma_idc +#if JVET_O0616_400_CHROMA_SUPPORT + } +#endif if (alfChromaIdc) { #if JVET_O0288_UNIFY_ALF_SLICE_TYPE_REMOVAL @@ -1491,7 +1498,14 @@ void HLSWriter::codeSliceHeader ( Slice* pcSlice ) #if !JVET_O1109_UNFIY_CRS if (!(pcSlice->getSPS()->getUseDualITree() && pcSlice->isIntra())) #endif - WRITE_FLAG(pcSlice->getLmcsChromaResidualScaleFlag(), "slice_chroma_residual_scale_flag"); +#if JVET_O0616_400_CHROMA_SUPPORT + if (chromaEnabled) + { +#endif + WRITE_FLAG(pcSlice->getLmcsChromaResidualScaleFlag(), "slice_chroma_residual_scale_flag"); +#if JVET_O0616_400_CHROMA_SUPPORT + } +#endif } }