Opened 4 years ago
Closed 4 years 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@… |
Description
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],
sps_num_ref_pic_lists[1]).
Change history (2)
comment:1 Changed 4 years ago by yk
comment:2 Changed 4 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Fixed as discussed/suggested in JVET-T0110-v2.
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 ].