Opened 7 weeks ago

Closed 3 weeks ago

#1379 closed defect (fixed)

Undefined behaviour when pps_rpl1_idx_present_flag == 0, and sps_num_ref_pic_lists[0] > sps_num_ref_pic_lists[1]

Reported by: forayr Owned by:
Priority: minor Milestone:
Component: spec Version: VVC D10 vG
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…


In rpl_sps[i] semantics, the following inference rules are present:

When rpl_sps_flag[i] is equal to 1 and sps_num_ref_pic_lists[i] is equal to 1, the value of rpl_idx[i] is inferred to be equal to 0.
When rpl_sps_flag[i] is equal to 1 and pps_rpl1_idx_present_flag is equal to 0, the value of rpl_idx[1] is inferred to be equal to rpl_idx[0].

In the second case (sps_num_ref_pic_lists[i] > 1), there is no check that rpl_idx[1] (inferred to rpl_idx[0]) is less then sps_num_ref_pic_lists[1], and we might use an undefined RPL if sps_num_ref_pic_lists[1] > sps_num_ref_pic_lists[0].

I think that the following constraint should be added in rpl_idx[i] semantics:
When pps_rpl1_idx_present_flag is equal to 0 and sps_num_ref_pic_lists[1] is not equal to 1, rpl_idx[i] should be less than min(sps_num_ref_pic_lists[0],

Change history (2)

comment:1 Changed 5 weeks ago by yk

Note that there is the following constraint: The value of rpl_idx[ i ] shall be in the range of 0 to sps_num_ref_pic_lists[ i ] − 1, inclusive.

So in the second case, if the value of rpl_idx[ 1 ] (inferred to rpl_idx[ 0 ]) is not less than sps_num_ref_pic_lists[ 1 ], the above constraint would be violated.

Therefore, the suggested constraint is already implied and does not need to be added.

However, as an editorial improvement, I suggest moving the existing constraint to be after the inference rules, such that it is clearer to readers that the constraint applies to both signalled and inferred values.

Furthermore, as another editorial improvement, I suggest changing the inference wording of the second case to be as follows, such that it is clear that the inference of rpl_idx[ 1 ] to be equal to rpl_idx[ 0 ] for the second case happens only when i is equal to 1: When rpl_sps_flag[ 1 ] is equal to 1 and pps_rpl1_idx_present_flag is equal to 0, the value of rpl_idx[ 1 ] is inferred to be equal to rpl_idx[ 0 ].

comment:2 Changed 3 weeks ago by bbross

  • Resolution set to fixed
  • Status changed from new to closed

Fixed as discussed/suggested in JVET-T0110-v2.

Note: See TracTickets for help on using tickets.