Opened 4 years ago
Closed 4 years ago
#1238 closed defect (fixed)
Mismatch between Spec and VTM for deriving sliceWidthInTiles[ i + j ] (6.5.1)
Reported by: | shih-ta.hsiang | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | VVC D10 vE |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
In 6.5.1, if( sliceWidthInTiles[ i ] = = 1 && sliceHeightInTiles[ i ] = = 1 ) and NumSlicesInTile[ i ] > 1, tileIdx += sliceWidthInTiles[ i ] involves an undefined value for sliceWidthInTiles[ i ] after setting i += NumSlicesInTile[ i ] − 1.
In VTM-9.3, if( sliceWidthInTiles[ i ] = = 1 && sliceHeightInTiles[ i ] = = 1 ), both sliceWidthInTiles[ i + j ] and sliceHeightInTiles[ i + j ] are set equal to 1 for each j = 0 .. NumSlicesInTile[ i ] - 1
Recommned to align Spec with VTM as follows:
for( j = 0; j < NumSlicesInTile[ i ]; j++ ) {
AddCtbsToSlice( i + j, tileColBd[ tileX ], tileColBd[ tileX + 1 ], ctbY, ctbY + sliceHeightInCtus[ i + j ] )
ctbY += sliceHeightInCtus[ i + j ]
sliceWidthInTiles[ i + j ] = 1
sliceHeightInTiles[ i + j ] = 1
}
Change history (5)
comment:1 Changed 4 years ago by yk
comment:2 Changed 4 years ago by chiaming
Considering the case involving
(a) number of slices in a picture is larger than 1, and
(b) number of slices in the current tile is also larger than 1.
The value of i will be increased by "i += NumSlicesInTile[ i ] − 1". And if the "increased i" is still less than number of slices in a picture, the following pseudo code segment will be executed.
Then, sliceWidthInTiles[ i ] and sliceHeightInTiles[ i ] are both undefined, and tileIdx will be used in the next for loop index.
if( i < pps_num_slices_in_pic_minus1 ) { if( pps_tile_idx_delta_present_flag ) tileIdx += pps_tile_idx_delta_val[ i ] else { tileIdx += sliceWidthInTiles[ i ] if( tileIdx % NumTileColumns = = 0 ) tileIdx += ( sliceHeightInTiles[ i ] − 1 ) * NumTileColumns } }
comment:3 Changed 4 years ago by yk
Thanks! I see, you are right. To be safe, it'd be great if someone else can confirm.
comment:4 Changed 4 years ago by hendry197
The problem, IMO, is valid. In the case that Shih-Ta described, the i-th slice is still the slice inside the same tile. The issue here is the value i has been changed due to the addition with NuhSlicesInTile[i] - 1.
Aligning with VTM should be correct as it is the intent.
comment:5 Changed 4 years ago by yk
- Resolution set to fixed
- Status changed from new to closed
Thanks to you all. Fixed in a version being prepared for JVET-S2001-vF.
I think the pseudo code pieces "tileIdx += sliceWidthInTiles[ i ]" and "tileIdx += ( sliceHeightInTiles[ i ] − 1 ) * NumTileColumns)" in Equation 21 would never be executed for a value of i when sliceHeightInTiles[ i ] is not defined in the equation (because of of the execution of "i += NumSlicesInTile[ i ] − 1" before jumping to the above-mentioned places in the equation when sliceWidthInTiles[ i ] = = 1 && sliceHeightInTiles[ i ] = = 1 && NumSlicesInTile[ i ] > 1). Therefore, personally I don't see a need of adding what's suggested. Please correct me if I am wrong.