From 9bf4d0a24740761f42582d03c77b09602e9ccb16 Mon Sep 17 00:00:00 2001 From: Yuling Hsiao <yuling.hsiao@mediatek.com> Date: Wed, 16 Oct 2019 10:15:31 +0800 Subject: [PATCH] remove pps_five_minus_max_num_subblock_merge_cand_plus1 --- source/App/EncoderApp/EncApp.cpp | 2 ++ source/App/EncoderApp/EncAppCfg.cpp | 8 ++++++++ source/App/EncoderApp/EncAppCfg.h | 2 ++ source/Lib/CommonLib/Slice.cpp | 2 ++ source/Lib/CommonLib/Slice.h | 4 ++++ source/Lib/CommonLib/TypeDef.h | 2 ++ source/Lib/DecoderLib/VLCReader.cpp | 8 ++++++++ source/Lib/EncoderLib/EncCfg.h | 4 ++++ source/Lib/EncoderLib/EncLib.cpp | 2 ++ source/Lib/EncoderLib/VLCWriter.cpp | 6 ++++++ 10 files changed, 40 insertions(+) diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index e7e6ee4e5..a774e69e1 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -561,7 +561,9 @@ void EncApp::xInitLibCfg() m_cEncLib.setPPSMvdL1ZeroIdc ( m_PPSMvdL1ZeroIdc ); m_cEncLib.setPPSCollocatedFromL0Idc ( m_PPSCollocatedFromL0Idc ); m_cEncLib.setPPSSixMinusMaxNumMergeCandPlus1 ( m_PPSSixMinusMaxNumMergeCandPlus1 ); +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND m_cEncLib.setPPSFiveMinusMaxNumSubblockMergeCandPlus1 ( m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 ); +#endif m_cEncLib.setPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 ( m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 ); m_cEncLib.setUseScalingListId ( m_useScalingListId ); m_cEncLib.setScalingListFileName ( m_scalingListFileName ); diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 635e0046c..505959ea3 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -3262,7 +3262,9 @@ bool EncAppCfg::xCheckParameter() m_PPSMvdL1ZeroIdc = 0; m_PPSCollocatedFromL0Idc = 0; m_PPSSixMinusMaxNumMergeCandPlus1 = 0; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 = 0; +#endif m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 = 0; break; case 1: // RA setting @@ -3276,7 +3278,9 @@ bool EncAppCfg::xCheckParameter() m_PPSMvdL1ZeroIdc = 0; m_PPSCollocatedFromL0Idc = 0; m_PPSSixMinusMaxNumMergeCandPlus1 = 6 - m_maxNumMergeCand + 1; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 = 5 - m_maxNumAffineMergeCand + 1; +#endif m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 = m_maxNumMergeCand - m_maxNumTriangleCand + 1; break; case 2: // LDB setting @@ -3290,7 +3294,9 @@ bool EncAppCfg::xCheckParameter() m_PPSMvdL1ZeroIdc = 2; m_PPSCollocatedFromL0Idc = 1; m_PPSSixMinusMaxNumMergeCandPlus1 = 6 - m_maxNumMergeCand + 1; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 = 5 - m_maxNumAffineMergeCand + 1; +#endif m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 = m_maxNumMergeCand - m_maxNumTriangleCand + 1; break; case 3: // LDP setting @@ -3304,7 +3310,9 @@ bool EncAppCfg::xCheckParameter() m_PPSMvdL1ZeroIdc = 0; m_PPSCollocatedFromL0Idc = 0; m_PPSSixMinusMaxNumMergeCandPlus1 = 6 - m_maxNumMergeCand + 1; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 = 5 - m_maxNumAffineMergeCand + 1; +#endif m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 = 0; break; default: diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index a59199b48..c6493979f 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -547,7 +547,9 @@ protected: int m_PPSMvdL1ZeroIdc; int m_PPSCollocatedFromL0Idc; uint32_t m_PPSSixMinusMaxNumMergeCandPlus1; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND uint32_t m_PPSFiveMinusMaxNumSubblockMergeCandPlus1; +#endif uint32_t m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1; bool m_depQuantEnabledFlag; bool m_signDataHidingEnabledFlag; diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index 0b607527a..66e81d059 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -1822,7 +1822,9 @@ PPS::PPS() , m_PPSMvdL1ZeroIdc (0) , m_PPSCollocatedFromL0Idc (0) , m_PPSSixMinusMaxNumMergeCandPlus1 (0) +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND , m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 (0) +#endif , m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 (0) , m_cabacInitPresentFlag (false) , m_sliceHeaderExtensionPresentFlag (false) diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index dc98597b8..a8b1a737e 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -1245,7 +1245,9 @@ private: int m_PPSMvdL1ZeroIdc; int m_PPSCollocatedFromL0Idc; uint32_t m_PPSSixMinusMaxNumMergeCandPlus1; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND uint32_t m_PPSFiveMinusMaxNumSubblockMergeCandPlus1; +#endif uint32_t m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1; bool m_cabacInitPresentFlag; @@ -1451,8 +1453,10 @@ public: void setPPSCollocatedFromL0Idc(int u) { m_PPSCollocatedFromL0Idc = u; } uint32_t getPPSSixMinusMaxNumMergeCandPlus1() const { return m_PPSSixMinusMaxNumMergeCandPlus1; } void setPPSSixMinusMaxNumMergeCandPlus1(uint32_t u) { m_PPSSixMinusMaxNumMergeCandPlus1 = u; } +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND uint32_t getPPSFiveMinusMaxNumSubblockMergeCandPlus1() const { return m_PPSFiveMinusMaxNumSubblockMergeCandPlus1; } void setPPSFiveMinusMaxNumSubblockMergeCandPlus1(uint32_t u) { m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 = u; } +#endif uint32_t getPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1() const { return m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1; } void setPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1(uint32_t u) { m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 = u; } diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 579b04df0..91fdb2bdf 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -145,6 +145,8 @@ #define JVET_P0158_ALIGN_ALF_VB 1 // JVET-P0158: Apply ALF VB on the bottom CTU row +#define JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND 1 // JVET-P0152: remove pps_five_minus_max_num_subblock_merge_cand_plus1 + #define JVET_O0145_ENTRYPOINT_SIGNALLING 0 // JVET-O0145: Not signalling num_entry_point_offsets but derive it at decoder #define JVET_P0088_P0353_RPR_FILTERS 1 // JVET-P0088 and JVET-P0353 Filters to use for downsampling in RPR diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 4a220e106..04b7fdfc0 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -411,7 +411,9 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS, ParameterSetManager *parameterSetMana READ_CODE( 2, uiCode, "pps_mvd_l1_zero_idc"); pcPPS->setPPSMvdL1ZeroIdc(uiCode); READ_CODE( 2, uiCode, "pps_collocated_from_l0_idc"); pcPPS->setPPSCollocatedFromL0Idc(uiCode); READ_UVLC( uiCode, "pps_six_minus_max_num_merge_cand_plus1"); pcPPS->setPPSSixMinusMaxNumMergeCandPlus1(uiCode); +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND READ_UVLC( uiCode, "pps_five_minus_max_num_subblock_merge_cand_plus1"); pcPPS->setPPSFiveMinusMaxNumSubblockMergeCandPlus1(uiCode); +#endif READ_UVLC( uiCode, "pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1");pcPPS->setPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1(uiCode); } else @@ -425,7 +427,9 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS, ParameterSetManager *parameterSetMana pcPPS->setPPSMvdL1ZeroIdc(0); pcPPS->setPPSCollocatedFromL0Idc(0); pcPPS->setPPSSixMinusMaxNumMergeCandPlus1(0); +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND pcPPS->setPPSFiveMinusMaxNumSubblockMergeCandPlus1(0); +#endif pcPPS->setPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1(0); } @@ -2216,6 +2220,9 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, ParameterSetManager *para else if ( sps->getUseAffine() ) { +#if JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND + READ_UVLC(uiCode, "five_minus_max_num_subblock_merge_cand"); +#else if (!pps->getPPSFiveMinusMaxNumSubblockMergeCandPlus1()) { READ_UVLC(uiCode, "five_minus_max_num_subblock_merge_cand"); @@ -2224,6 +2231,7 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, ParameterSetManager *para { uiCode = pps->getPPSFiveMinusMaxNumSubblockMergeCandPlus1() - 1; } +#endif pcSlice->setMaxNumAffineMergeCand( AFFINE_MRG_MAX_NUM_CANDS - uiCode ); } if ( sps->getFpelMmvdEnabledFlag() ) diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index ed1aeefd9..feb45aadf 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -593,7 +593,9 @@ protected: int m_PPSMvdL1ZeroIdc; int m_PPSCollocatedFromL0Idc; uint32_t m_PPSSixMinusMaxNumMergeCandPlus1; +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND uint32_t m_PPSFiveMinusMaxNumSubblockMergeCandPlus1; +#endif uint32_t m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1; bool m_DepQuantEnabledFlag; bool m_SignDataHidingEnabledFlag; @@ -1515,8 +1517,10 @@ public: int getPPSCollocatedFromL0Idc () { return m_PPSCollocatedFromL0Idc; } void setPPSSixMinusMaxNumMergeCandPlus1 ( uint32_t u ) { m_PPSSixMinusMaxNumMergeCandPlus1 = u; } uint32_t getPPSSixMinusMaxNumMergeCandPlus1 () { return m_PPSSixMinusMaxNumMergeCandPlus1; } +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND void setPPSFiveMinusMaxNumSubblockMergeCandPlus1 ( uint32_t u ) { m_PPSFiveMinusMaxNumSubblockMergeCandPlus1 = u; } uint32_t getPPSFiveMinusMaxNumSubblockMergeCandPlus1 () { return m_PPSFiveMinusMaxNumSubblockMergeCandPlus1; } +#endif void setPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 ( uint32_t u ) { m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 = u; } uint32_t getPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1 () { return m_PPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1; } WeightedPredictionMethod getWeightedPredictionMethod() const { return m_weightedPredictionMethod; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index 37a1184f7..f3909dd1e 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -1171,7 +1171,9 @@ void EncLib::xInitPPS(PPS &pps, const SPS &sps) pps.setPPSMvdL1ZeroIdc(getPPSMvdL1ZeroIdc()); pps.setPPSCollocatedFromL0Idc(getPPSCollocatedFromL0Idc()); pps.setPPSSixMinusMaxNumMergeCandPlus1(getPPSSixMinusMaxNumMergeCandPlus1()); +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND pps.setPPSFiveMinusMaxNumSubblockMergeCandPlus1(getPPSFiveMinusMaxNumSubblockMergeCandPlus1()); +#endif pps.setPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1(getPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1()); pps.setConstrainedIntraPred( m_bUseConstrainedIntraPred ); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index d5d10ce27..c2f5e9f35 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -242,7 +242,9 @@ void HLSWriter::codePPS( const PPS* pcPPS, const SPS* pcSPS ) WRITE_CODE( pcPPS->getPPSMvdL1ZeroIdc(), 2, "pps_mvd_l1_zero_idc"); WRITE_CODE( pcPPS->getPPSCollocatedFromL0Idc(), 2, "pps_collocated_from_l0_idc"); WRITE_UVLC( pcPPS->getPPSSixMinusMaxNumMergeCandPlus1(), "pps_six_minus_max_num_merge_cand_plus1"); +#if !JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND WRITE_UVLC( pcPPS->getPPSFiveMinusMaxNumSubblockMergeCandPlus1(), "pps_five_minus_max_num_subblock_merge_cand_plus1"); +#endif WRITE_UVLC( pcPPS->getPPSMaxNumMergeCandMinusMaxNumTriangleCandPlus1(), "pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1"); } @@ -1396,10 +1398,14 @@ void HLSWriter::codeSliceHeader ( Slice* pcSlice ) if ( pcSlice->getSPS()->getUseAffine() ) { CHECK( pcSlice->getMaxNumAffineMergeCand() > AFFINE_MRG_MAX_NUM_CANDS, "More affine merge candidates signalled than supported" ); +#if JVET_P0152_REMOVE_PPS_NUM_SUBBLOCK_MERGE_CAND + WRITE_UVLC( AFFINE_MRG_MAX_NUM_CANDS - pcSlice->getMaxNumAffineMergeCand(), "five_minus_max_num_subblock_merge_cand" ); +#else if (!pcSlice->getPPS()->getPPSFiveMinusMaxNumSubblockMergeCandPlus1()) { WRITE_UVLC( AFFINE_MRG_MAX_NUM_CANDS - pcSlice->getMaxNumAffineMergeCand(), "five_minus_max_num_subblock_merge_cand" ); } +#endif } if ( pcSlice->getSPS()->getFpelMmvdEnabledFlag() ) { -- GitLab