diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 33a59e12e4444fc9aac6faadb3188ac1be36af50..da3f53d911220db4a03a8af5418a97b1e4c0eb02 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -4655,27 +4655,58 @@ void HLSyntaxReader::parseSliceHeaderToPoc (Slice* pcSlice, PicHeader* picHeader #else // picture order count READ_CODE(sps->getBitsForPOC(), uiCode, "slice_pic_order_cnt_lsb"); +#endif +#if JVET_P0116_POC_MSB +#if JVET_Q0819_PH_CHANGES + int iPOClsb = pocLsb; +#else + int iPOClsb = uiCode; +#endif + int iMaxPOClsb = 1 << sps->getBitsForPOC(); + int iPOCmsb; #endif if (pcSlice->getIdrPicFlag()) { +#if JVET_P0116_POC_MSB + if (picHeader->getPocMsbPresentFlag()) + { + iPOCmsb = picHeader->getPocMsbVal()*iMaxPOClsb; + } + else + { + iPOCmsb = 0; + } +#if JVET_Q0819_PH_CHANGES + pcSlice->setPOC(iPOCmsb + pocLsb); +#else + pcSlice->setPOC(iPOCmsb + uiCode); +#endif +#else #if JVET_Q0819_PH_CHANGES pcSlice->setPOC(pocLsb); #else pcSlice->setPOC(uiCode); +#endif #endif } else { +#if !JVET_P0116_POC_MSB #if JVET_Q0819_PH_CHANGES int iPOClsb = pocLsb; #else int iPOClsb = uiCode; +#endif #endif int iPrevPOC = prevTid0POC; +#if !JVET_P0116_POC_MSB int iMaxPOClsb = 1 << sps->getBitsForPOC(); +#endif int iPrevPOClsb = iPrevPOC & (iMaxPOClsb - 1); int iPrevPOCmsb = iPrevPOC - iPrevPOClsb; +#if !JVET_P0116_POC_MSB int iPOCmsb; +#endif #if JVET_P0116_POC_MSB if (picHeader->getPocMsbPresentFlag()) {