#728 closed defect (fixed)Decoder stops on assert when EnableTMVPFlag = 1, ColDir = 1 and NumRexIdx(REF_PIC_LIST_0) > 1
Description
This bug occures when EnableTMVPFlag = 1, ColDir = 1 and NumRexIdx(REF_PIC_LIST_0) > 1
Reference decoder parses Slice header of first slice in the picture twice (except the very first slice). First - when variable m_bFirstSliceInPicture is false and second - when this variable is true. When m_bFirstSliceInPicture is false decoder initializes current slice data by data of previous slice (just in case the current slice is dependent one I believe), when m_bFirstSliceInPicture is true – by default values.
Let’s consider what will happen if current slice is the first slice of P picture following after B picture in decoding order. Last slice of B picture had ColDir = 1. Default values for ColDir is 0. In code below the "collocated_ref_idx" will be read if ColDir == 0 (right case for P_SLICE, second pass of slice header parsing) and won’t be read if ColDir == 1 (first pass of slice header parsing). So when decoder is trying to parse Slice header for the first time with wrong value of ColDir it skips reading of "collocated_ref_idx" , brokes CABAC decoding and stops on some asserts (see example in attachment)
if ( rpcSlice->getEnableTMVPFlag() )
}
The bug could be easily fixed for example by initializing of ColDir to 0 (rpcSlice->setColDir(0);) before line “if ( rpcSlice->getSliceType() == B_SLICE )” Change History (4)comment:1 Changed 12 years ago by DefaultCC Plugin
comment:2 Changed 12 years ago by deryzhovcomment:3 Changed 12 years ago by ksuehring
fixed in r2753 comment:4 Changed 12 years ago by ksuehring
Note: See
TracTickets for help on using
tickets. | This list contains all users that will be notified about changes made to this ticket. These roles will be notified: Reporter, Owner, Subscriber, Participant
|
Sorry, size of encoded file is bigger then allowed for attachment.