Opened 12 years ago Closed 12 years ago #1041 closed enhancement (invalid)Undefined behaviour if num_ref_idx_l0_active_minus1 >= NumPocTotalCurr and ref_pic_list_modification_flag_l0==0
Description
What should be the behaviour if ref_pic_list_modification_flag_l0 == 0 and num_ref_idx_l0_active_minus1 >= NumPocTotalCurr?
This is important in 8.3.4 "Decoding process for reference picture lists construction" of JCTVC-L1003_v29.
RefPicList0[num_ref_idx_l0_active_minus1] is a function of RefPicListTemp0[num_ref_idx_l0_active_minus1], but this value will not have been defined if NumPocTotalCurr is too small.
In other words, what should happen if num_ref_idx_l0_active_minus1 specifies more reference pictures than have been defined in the reference picture sets? I am guessing that this is not allowed, but I can't see where it is explicitly forbidden.
I suggest adding an additional restriction to the semantics for num_ref_idx_l0_default_active_minus1 to prohibit this case.
(A similar change would be needed for num_ref_idx_l1_default_active_minus1) Change History (4)comment:1 Changed 12 years ago by DefaultCC Plugin
comment:2 Changed 12 years ago by ykcomment:3 Changed 12 years ago by peterderivaz
Thanks for the comment, you are quite right and this ticket can be marked as invalid.
In my reading I hadn't spotted that there was a while loop before the for loops.
Thanks for the help! 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
|
This is already clear in the text, as the following clearly specifies the behavior when ref_pic_list_modification_flag_l0 == 0 and num_ref_idx_l0_active_minus1 >= NumPocTotalCurr (and there is a similar process for list 1):
The variable NumRpsCurrTempList0 is set equal to Max( num_ref_idx_l0_active_minus1 + 1, NumPocTotalCurr ) and the list RefPicListTemp0 is constructed as follows:
rIdx = 0
while( rIdx < NumRpsCurrTempList0 ) {
}