diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index a3bc155c55aa50840c14b33f417b6365c723a93a..53c17d1ee59ec885380127e5624ba2af743af03b 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 16a26e1459526f26fab1253aa5efc245fd5a1a69..c9b750c0035a57958cbe6474cb02efcefe366ee2 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1035,9 +1035,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 55c36ff7735566a2dd656e6f326199caedc09852..c1c4db002c36276f03ce7d41edcaec2c5c497707 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -708,7 +708,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" );