diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 04de41c875df11c5ede678b82888df1f84fa3304..590811c02975aaec2789de4b53a7115a745c2878 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -56,6 +56,10 @@ #if JVET_M0445_MCTS #define JVET_M0445_MCTS_DEC_CHECK 1 // Check at decoder side the MCTS restrictions #endif + +#define JVET_M0415_WRAPAROUND_HLS 1 // HLS for Wrap-around MC + + #define JCTVC_Y0038_PARAMS 1 #define JVET_M0600_RATE_CTRL 1 //frame level bit allocation by qdf diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 5bcd4e35bb7f4496e55d0976d247efe92ac506ea..dc8b1f81e583caa2b4b2f68a21f14526af6692b1 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1094,9 +1094,14 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) } READ_FLAG(uiCode, "sps_ref_wraparound_enabled_flag"); pcSPS->setWrapAroundEnabledFlag( uiCode ? true : false ); + if (pcSPS->getWrapAroundEnabledFlag()) { +#if JVET_M0415_WRAPAROUND_HLS + READ_UVLC(uiCode, "sps_ref_wraparound_offset_minus1"); pcSPS->setWrapAroundOffset( (uiCode+1)*(1 << pcSPS->getLog2MinCodingBlockSize())); +#else READ_UVLC(uiCode, "sps_ref_wraparound_offset"); pcSPS->setWrapAroundOffset( uiCode ); +#endif } READ_FLAG( uiCode, "sps_temporal_mvp_enabled_flag" ); pcSPS->setSPSTemporalMVPEnabledFlag(uiCode); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 93af6cb2f61d43abb429520b590e70c9b1d58573..f2f806cdb0e30621a22ae91ab1ee07d2d7f8b520 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -749,7 +749,11 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_FLAG( pcSPS->getWrapAroundEnabledFlag() ? 1 : 0, "sps_ref_wraparound_enabled_flag" ); if( pcSPS->getWrapAroundEnabledFlag() ) { +#if JVET_M0415_WRAPAROUND_HLS + WRITE_UVLC( (pcSPS->getWrapAroundOffset()/(1 << pcSPS->getLog2MinCodingBlockSize()))-1, "sps_ref_wraparound_offset_minus1" ); +#else WRITE_UVLC( pcSPS->getWrapAroundOffset(), "sps_ref_wraparound_offset" ); +#endif } WRITE_FLAG( pcSPS->getSPSTemporalMVPEnabledFlag() ? 1 : 0, "sps_temporal_mvp_enabled_flag" );