diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 29ff143e6a1c6af220bf9c0d07fc036cbf3deab5..f6d418a1810c55b4f0c88c8b918c298b3817978d 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -50,6 +50,8 @@ #include <assert.h> #include <cassert> +#define JVET_M0118_M0185_TRIANGLE_FLAG_FIX 1 // Avoid signaling triangle flag if a CU uses MMVD or CIIP + #define JVET_M0487_INT_EXTEND 1 // CE9.1.1 b: integer reference samples as 1 extended samples #define JVET_M0444_SMVD 1 // SMVD mode diff --git a/source/Lib/DecoderLib/CABACReader.cpp b/source/Lib/DecoderLib/CABACReader.cpp index ff9154f307cc3446299a30ea63d6a55045014abc..6015b1921d223706e2740de44633a9e6e42c505d 100644 --- a/source/Lib/DecoderLib/CABACReader.cpp +++ b/source/Lib/DecoderLib/CABACReader.cpp @@ -1951,6 +1951,18 @@ void CABACReader::triangle_mode( CodingUnit& cu ) return; } +#if JVET_M0118_M0185_TRIANGLE_FLAG_FIX + if ( cu.firstPU->mmvdMergeFlag || cu.mmvdSkip ) + { + return; + } + + if ( cu.firstPU->mhIntraFlag ) + { + return; + } +#endif + unsigned flag_idx = DeriveCtx::CtxTriangleFlag( cu ); cu.triangle = m_BinDecoder.decodeBin( Ctx::TriangleFlag(flag_idx) ); diff --git a/source/Lib/EncoderLib/CABACWriter.cpp b/source/Lib/EncoderLib/CABACWriter.cpp index 50e02fd06fb43108678687e19a6bea742cffab79..a9795b6dbf2e120a85cfced81944161f270c5930 100644 --- a/source/Lib/EncoderLib/CABACWriter.cpp +++ b/source/Lib/EncoderLib/CABACWriter.cpp @@ -1782,6 +1782,18 @@ void CABACWriter::triangle_mode( const CodingUnit& cu ) return; } +#if JVET_M0118_M0185_TRIANGLE_FLAG_FIX + if ( cu.firstPU->mmvdMergeFlag || cu.mmvdSkip ) + { + return; + } + + if ( cu.firstPU->mhIntraFlag ) + { + return; + } +#endif + unsigned flag_idx = DeriveCtx::CtxTriangleFlag( cu ); m_BinEncoder.encodeBin( cu.triangle, Ctx::TriangleFlag(flag_idx) );