#1095 closed defect (invalid)Undefined behaviour when choosing longterm reference pictures.
Description
In the derivation process for the RPS and picture marking (equation 8-6 of JCTVC-L1003_v34) what should happen if there is more than one reference picture in the DPB with slice_pic_order_cnt_lsb equal to PocLtCurr[i]?
For example, suppose MaxPicOrderCntLsb=16 and we have 4 short term frames in the DPB with POCs of 0,16,32,48. If the next picture decides to use:
The function TComSlice::xGetLongTermRefPic in the reference decoder simply selects the first match, but this behaviour does not appear to be defined in the specification.
I wonder if this situation is meant to never occur? Section 8.3.2 "Decoding process for reference picture set" contains a number of requirements for bitstream conformance but they do not seem to rule out this case.
Perhaps I have overlooked some requirement? Change History (4)comment:1 Changed 12 years ago by DefaultCC Plugin
comment:2 Changed 12 years ago by adarshcomment:3 Changed 12 years ago by ksuehring
Closing as invalid. The constraint that Adarsh noted above should prevent that situation. comment:4 Changed 12 years ago by peterderivaz
@adarsh
Thank you very much for your kind comment pointing me in the right direction. It makes perfect sense now. 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
|
It's not those equations in 8.3.2 that would prevent this case from occuring, but rather the semantics of delta_poc_msb_present_flag.
delta_poc_msb_present_flag[ i ] equal to 1 specifies that delta_poc_msb_cycle_lt[ i ] is present. delta_poc_msb_present_flag[ i ] equal to 0 specifies that delta_poc_msb_cycle_lt[ i ] is not present.
Let prevTid0Pic be the previous picture in decoding order that has TemporalId equal to 0 and is not a RASL picture, a RADL picture, or a sub-layer non-reference picture. Let setOfPrevPocVals be a set consisting of the following:
– the PicOrderCntVal of prevTid0Pic,
– the PicOrderCntVal of each picture in the RPS of prevTid0Pic,
– the PicOrderCntVal of each picture that follows prevTid0Pic in decoding order and precedes the current picture in decoding order.
When there is more than one value in setOfPrevPocVals for which the value modulo MaxPicOrderCntLsb is equal to PocLsbLt[ i ], delta_poc_msb_present_flag[ i ] shall be equal to 1.
Hence, in your example, CurrDeltaPocMsbPresentFlag cannot be zero, and the MSB of the LT picture would be signalled. I hope that addresses your concern.