Opened 4 years ago

Closed 4 years ago

#890 closed defect (fixed)

Inconsistency in weighted pred flags values in case wp_info_in_ph_flag = 1

Reported by: audrey.turquin Owned by:
Priority: minor Milestone:
Component: spec Version: VVC D8 vB
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In the specification, in case wp_info_in_ph_flag = 1 and weighted pred is actually not enabled, there is no mechanism to 'reset' the values for the weighted pred flags (luma_weight_l0_flag, luma_weight_l1_flag, chroma_weight_l0_flag, chroma_weight_l1_flag).
And this is an issue because these flags take part of the conditions to send the syntax element 'bcw_idx'.

For example, in case :

  • wp_info_in_ph_flag = 1
  • pps_weighted_pred_flag = 1
  • pps_weighted_bi_pred_flag = 0
  • slice_type = 0 (slice B)

The weighted pred table is sent in the PH, but as the slice_type is B and pps_weighted_bi_pred_flag = 0, the weighted pred is not enabled on this slice.
So, luma_weight_l1_flag[i] is supposed to be equal to which value ?
According to the spec, luma_weight_l1_flag[i] should be equal to the value sent in the PH (as there is no mechanism to change these values), which can be 1. But it is not consistent with the fact that WP is not enabled on this slice.

I think a mechanism is missing in the spec to reset the weight flags to 0 in case the weighted pred is not enabled on a slice.
This mechanism is present in the VTM, so there is a mismatch between spec and VTM.

Change history (3)

comment:1 Changed 4 years ago by yk

I think this is a valid issue in the spec and can be fixed by adding the following inference to the slice header semantics:

When pps_weighted_pred_flag is equal to 0 and slice_type is equal to P, for each value of i in the range of 0 to NumRefIdxActive[ 0 ] − 1, inclusive, the values of both luma_weight_l0_flag[ i ] and chroma_weight_l0_flag[ i ] are inferred to be equal to 0.

When pps_weighted_bipred_flag is equal to 0 and slice_type is equal to B, for each value of i in the range of 0 to NumRefIdxActive[ 0 ] − 1, inclusive, the values of both luma_weight_l0_flag[ i ] and chroma_weight_l0_flag[ i ] are inferred to be equal to 0, and for each value of i in the range of 0 to NumRefIdxActive[ 1 ] − 1, inclusive, the values of both luma_weight_l1_flag[ i ] and chroma_weight_10_flag[ i ] are inferred to be equal to 0.

Can someone confirm? If confirmed, I will integrate the fix into the next version of Q2001.

comment:2 Changed 4 years ago by hendry197

Agree that the issue is valid.

To be consistent with the previous signalling method before we allow the signaling of WP in picture header, we should condition the presence of num_l1_weights on the value of pps_weighted_bipred_flag. When pps_weighted_bipred_flag is equal to 0 it means that WP is not enabled for any B-slices that refer to the PH so there should not be any weighted signalled for L1. When luma_weight_l1_flag[i] is not present, it is inferred to be equal to 0.

comment:3 Changed 4 years ago by yk

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

Will be fixed in Q2001-vD.

Note: See TracTickets for help on using tickets.