Opened 5 years ago

Closed 5 years ago

#954 closed defect (invalid)

Issue on lmcsCW value range

Reported by: abe.kiyo Owned by:
Priority: minor Milestone:
Component: spec Version:
Keywords: Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In 7.4.3.20 Luma mapping with chroma scaling data semantics, there is the following description.

lmcs_delta_sign_cw_flag[ i ] specifies the sign of the variable lmcsDeltaCW[ i ] as follows:
...
The variable lmcsCW[ i ] is derived as follows:
– For i = 0.. lmcs_min_bin_idx − 1, lmcsCW[ i ] is set equal 0.
– For i = lmcs_min_bin_idx..LmcsMaxBinIdx, the following applies:

lmcsCW[ i ] = OrgCW + lmcsDeltaCW[ i ]
The value of lmcsCW[ i ] shall be in the range of OrgCW >> 3 to ( OrgCW << 3 ) − 1, inclusive.

– For i = LmcsMaxBinIdx + 1..15, lmcsCW[ i ] is set equal 0.
...

However, lmcsCW[ i ] can be equal to 0 when LmcsPivot[ i ] is a multiple of 1 << ( BitDepth − 5 ).
So the red sentence should be modify as follows (align to the description of lmcs_delta_sign_crs_flag);

It is a requirement of bitstream conformance that, when lmcsCW[ i ] is not equal to 0, lmcsCW[ i ] shall be in the range of ( OrgCW >> 3 ) to ( ( OrgCW << 3 ) − 1 ), inclusive.

Change history (6)

comment:1 Changed 5 years ago by taoranlu

it seems like a reasonable editorial improvement.

comment:2 Changed 5 years ago by fbossen

This doesn't look editorial to me.

comment:3 Changed 5 years ago by abe.kiyo

There is the following constraint in the semantics of lmcs_delta_sign_cw_flag as well.

It is a requirement of bitstream conformance that, for i = lmcs_min_bin_idx..LmcsMaxBinIdx, when the value of LmcsPivot[ i ] is not a multiple of 1 << ( BitDepth − 5 ), the value of ( LmcsPivot[ i ] >> ( BitDepth − 5 ) ) shall not be equal to the value of ( LmcsPivot[ i + 1 ] >> ( BitDepth − 5 ) ).

lmcsCW[ i ] is defined as follows;

LmcsPivot[ i + 1 ] = LmcsPivot[ i ] + lmcsCW[ i ]

This constraint says that lmcsCW[ i ] can be equal to 0 when LmcsPivot[ i ] is a multiple of 1 << ( BitDepth − 5 ). Therefore, lmcsCW[ i ] can be in the range of ( OrgCW >> 3 ) to ( ( OrgCW << 3 ) − 1 ), and also it can be equal to 0. I believe it is a simple editorial error that just overlooked this condition.

comment:4 Changed 5 years ago by fbossen

@abe.kiyo I believe your logic is flawed. The constraint expresses a restriction. It invalidates certain combinations of LmcsPivot[i] values, not the other way around.

If I apply your logic, I could reason as follows:
The constraint says that lmcsCW[ i ] can be equal to any value k if LmcsPivot[i-1] is equal to a multiple of (1 << (BitDepth - 5)) minus k. Therefore lmcsCW[i] can be equal to any value in the range 0 to 8*OrgCW-1.
That doesn't seem right.

If this an editorial error, can you point to the meeting decision that says that lmcsCW[i] may take value 0 for any i, not just for i < lmcs_min_bin_idx and i > LmcsMaxBinIdx? Thanks.

comment:5 Changed 5 years ago by abe.kiyo

Thanks for detail explanation.
I have checked VVC text and VTM code again. As the result, I have noticed that I was misunderstanding this specification. Now, I agree with you. I'd like to withdraw this ticket.
Thanks.

comment:6 Changed 5 years ago by yk

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

OK, it seems that this ticket can be closed.

Note: See TracTickets for help on using tickets.