Custom query (105 matches)
Results (4 - 6 of 105)
Ticket | Resolution | Summary | Owner | Reporter |
---|---|---|---|---|
#77 | fixed | Broken logic when sps_sub_layer_ordering_info_present_flag==0 | Vadim | johnnyVidyo |
Description |
There is an error in decoding the SPS. When sps_sub_layer_ordering_info_present_flag is 0, the values of sps_max_dec_pic_buffering_minus1[] are handled incorrectly. Existing problematic code in parseSPS(): UInt subLayerOrderingInfoPresentFlag; READ_FLAG(subLayerOrderingInfoPresentFlag, "sps_sub_layer_ordering_info_present_flag"); for(UInt i=0; i <= pcSPS->getMaxTLayers()-1; i++) { READ_UVLC ( uiCode, "sps_max_dec_pic_buffering_minus1[i]"); pcSPS->setMaxDecPicBuffering( uiCode + 1, i); READ_UVLC ( uiCode, "sps_num_reorder_pics[i]" ); pcSPS->setNumReorderPics(uiCode, i); READ_UVLC ( uiCode, "sps_max_latency_increase_plus1[i]"); pcSPS->setMaxLatencyIncrease( uiCode, i ); if (!subLayerOrderingInfoPresentFlag) { for (i++; i <= pcSPS->getMaxTLayers()-1; i++) { #if SVC_EXTENSION // When sps_max_dec_pic_buffering_minus1[ i ] is not present for i in the range of 0 to sps_max_sub_layers_minus1 - 1, inclusive, // due to sps_sub_layer_ordering_info_present_flag being equal to 0, it is inferred to be equal to sps_max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ]. pcSPS->setMaxDecPicBuffering( pcSPS->getMaxDecPicBuffering(pcSPS->getMaxTLayers()-1), i ); #else pcSPS->setMaxDecPicBuffering(pcSPS->getMaxDecPicBuffering(0), i); #endif pcSPS->setNumReorderPics(pcSPS->getNumReorderPics(0), i); pcSPS->setMaxLatencyIncrease(pcSPS->getMaxLatencyIncrease(0), i); } break; } Recommended fix to better reflect wording of the spec: UInt subLayerOrderingInfoPresentFlag; READ_FLAG(subLayerOrderingInfoPresentFlag, "sps_sub_layer_ordering_info_present_flag"); for(UInt i = subLayerOrderingInfoPresentFlag ? 0 : pcSPS->getMaxTLayers()-1; i <= pcSPS->getMaxTLayers()-1; i++) { READ_UVLC ( uiCode, "sps_max_dec_pic_buffering_minus1[i]"); pcSPS->setMaxDecPicBuffering( uiCode + 1, i); READ_UVLC ( uiCode, "sps_num_reorder_pics[i]" ); pcSPS->setNumReorderPics(uiCode, i); READ_UVLC ( uiCode, "sps_max_latency_increase_plus1[i]"); pcSPS->setMaxLatencyIncrease( uiCode, i ); if (!subLayerOrderingInfoPresentFlag) { for(UInt j = 0; j < i; j++) { #if SVC_EXTENSION // When sps_max_dec_pic_buffering_minus1[ i ] is not present for i in the range of 0 to sps_max_sub_layers_minus1 - 1, inclusive, // due to sps_sub_layer_ordering_info_present_flag being equal to 0, it is inferred to be equal to sps_max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ]. pcSPS->setMaxDecPicBuffering( pcSPS->getMaxDecPicBuffering(i), j ); #else pcSPS->setMaxDecPicBuffering(pcSPS->getMaxDecPicBuffering(0), i); #endif pcSPS->setNumReorderPics(pcSPS->getNumReorderPics(i), j); pcSPS->setMaxLatencyIncrease(pcSPS->getMaxLatencyIncrease(i), j); } break; } |
|||
#8 | fixed | Bug in All Intra configuration with inter-layer prediction disabled | Vadim | bugdayci |
Description |
Encoder crashes in all intra configuration due to wrong slice type while encoding enhancement layers when inter-layer prediction is disabled. SHM2.0 was able to code all intra but the problem occurs in SHM3.0.1 and SHM4.0. Below piece of code in initEncSlice function, TEncSlice.cpp line 431, sets the slice type of enhancement layers to B_SLICE. #if SVC_EXTENSION
#endif In SHM2.0, some later process was correcting the slice type, however in the later versions of the software, slice type is not set correctly. The issue is resolved by changing the code as:
But I am not sure whether it should be corrected at this stage or at a later process as in SHM2.0. |
|||
#114 | fixed | Bug in parsing of Profile Tier Level | Vadim | CFeldmann |
Description |
There is a smaller bug in the TDecCavlc::parseProfileTier(...) function. The brackets got misplaced. See attached patch. |