Opened 5 years ago
Closed 5 years ago
#772 closed defect (fixed)
Issue in tileIdx derivation in 6.5.1
Reported by: | forayr | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | spec | Version: | |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
In the process of derivation of CtbAddrInSlice and NumCtuInSlice in 6.5.1,
the intermediate value tileIdx is used.
Considering the following context:
- 4 tiles (2 columns, 2 rows)
- 3 rectangular slices of sizes (1x2, 1x1, 1x1) in unit of tile
- tile_idx_delta_present_flag = 0
The following tileIdx value are obtained when following the specification:
For the 1st slice, tileIdx = 0.
For the 2nd slice, tileIdx = 1.
For the 3rd slice, tileIdx = 2, but this tile is inside the first slice !
For the 3rd slice tileIdx shall be 3 instead.
This issue is present as soon as the left rectangular slice of a slice end on a row below the last row of the current slice.
Change history (4)
comment:1 Changed 5 years ago by bheng
comment:2 Changed 5 years ago by forayr
In this case, I think it should be explicitly written in the semantics of slice_height_in_tiles_minus1 that if tile_idx_delta_present_flag is equal to 0, all slices in the same tile row shall have the same value of slice_height_in_tiles_minus1.
comment:3 Changed 5 years ago by bheng
We noticed the same thing, and are planning a contribution where the slice_height_in_tiles is only sent at the start of a row when tile_idx_delta_present_flag is 0, eliminating the redundancy, and thereby making it impossible to make that mistake.
comment:4 Changed 5 years ago by yk
- Resolution set to fixed
- Status changed from new to closed
Fixed by actions taken at the 17th JVET meeting.
If I follow your example correctly, the value tile_idx_delta_present_flag=0 cannot be used for this pattern of slices.
The simplified "raster scanned rectangular slices" (tile_idx_delta_present_flag=0) was added to save overhead bits for simple cases where the rectangular slices follow a raster scan pattern and all rectangular slice in a row have the same slice_height_in_tiles_minus1.
Attempting to use tile_idx_delta_present_flag=0 with any series of slices that violate this simple pattern (like the slices described above), will create an illegal stream. Specifically, it will cause overlapping slices and violate the condition that the slices in the picture "shall include all CTB addresses in the range 0 to PicSizeInCtbsY − 1 once and only once".
The regular tile_idx_delta_present_flag=1 usage can be used to code this pattern of slices instead.