Opened 4 years ago

Closed 4 years ago

#1298 closed enhancement (invalid)

Last rectangular slice in frame is not always locate in bottom right corner

Reported by: kerzhy Owned by:
Priority: minor Milestone:
Component: VTM Version: VTM-9.3
Keywords: slice partition Cc: ksuehring, XiangLi, fbossen, jvet@…, jvet@…

Description

Due to spec, the last slice is not signalled, assuming it is located in the bottom right corner.

It is supposed to be located in bottom right corner due to this condition from spec:

tileX = tileIdx % NumTileColumns
tileY = tileIdx / NumTileColumns
if( i < pps_num_slices_in_pic_minus1 ) {
    sliceWidthInTiles[ i ] = pps_slice_width_in_tiles_minus1[ i ] + 1
    sliceHeightInTiles[ i ] = pps_slice_height_in_tiles_minus1[ i ] + 1
} else {
      sliceWidthInTiles[ i ] = NumTileColumns − tileX
      sliceHeightInTiles[ i ] = NumTileRows − tileY
      NumSlicesInTile[ i ] = 1
}

However, if we use tile_delta_idx values and multiple slices in tile we can get situation where last slice will not be located in the bottom right corner.

Example:

  • Red lines – slice boundaries
  • Green lines – tile boundaries

https://drive.google.com/file/d/1lhMEdViqxiu37JRIv007JSoLNwXgGUu2/view

Here we can see, that num_slices_in_pic_minus1 = 3, and current slice (slice with purple square) has index = 3 (so it is the last).

And bottom right slice has index 1:

https://drive.google.com/file/d/1oK1z0QNJlKPjYuNZ4RHDQuH1bRxgMhvw/view

So is it a bug or a feature that last slice supposed to be in the right bottom corner (by spec) but this condition can be violated and overcome in some cases?

P.S. Stream is in attachments.

Attachments (1)

test_vvc_not_last_slice.vvc (10.1 KB) - added by kerzhy 4 years ago.
Stream from the example

Download all attachments as: .zip

Change history (4)

Changed 4 years ago by kerzhy

Stream from the example

comment:1 Changed 4 years ago by kerzhy

  • Keywords partition added; patrtition removed

comment:2 Changed 4 years ago by bheng

I believe such a stream is illegal based on the following requirement from Section 7.4.8 - Slice header semantics:

"The shapes of the slices of a picture shall be such that each CTU, when decoded, shall have its entire left boundary and entire top boundary consisting of a picture boundary or consisting of boundaries of previously decoded CTU(s)."

The syntax is not designed to prevent every possible illegal configuration, but the statement above should make such streams invalid.

comment:3 Changed 4 years ago by ksuehring

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

The images don't load anymore, so I can't follow all details.

But I tend to I agree to Biran's understanding. I think the constraint should prohibit cases where the last slice is not bottom right.

I'm closing as "invalid". Please re-open if there is still an issue.

Note: See TracTickets for help on using tickets.