Opened 12 years ago

Closed 7 years ago

#659 closed enhancement (fixed)

"byte_alignment" presence condition in the slice_data syntax is not correct for tiles_enabled_flag=1 and entropy_coding_sync_enabled_flag=1

Reported by: chung Owned by: bbross
Priority: minor Milestone:
Component: Text Version: D10 (L1003) v33
Keywords: Cc: bbross, wjhan, jct-vc@…

Description

In chapter 7.3.4.1 of JCTVC-J1003_d3, the condition for the presence of byte_alignment() is :

if( !end_of_slice_flag &&

( ( tiles_enabled_flag && TileId[ CtbAddrTS ] != TileId[ CtbAddrTS − 1 ] )

( entropy_coding_sync_enabled_flag && CtbAddrTS % PicWidthInCtbs = = 0 ) )

)

byte_alignment( )

My understanding is that the byte_alignment is used for the entry_points of a slice.
The condition is not correct, when tiles_enabled_flag=1 and entropy_coding_sync_enabled_flag=1. Indeed, in this case, there is an entry_point per tile Ctb row.

Let's define the function TileWidthInCtbs[TileId], that returns the width of tile TileId in unit of Ctb. (If tiles_enabled_flag=0, this returns the picture width in unit of Ctb)
The condition above becomes :

if( !end_of_slice_flag &&

( ( tiles_enabled_flag && TileId[ CtbAddrTS ] != TileId[ CtbAddrTS − 1 ] )

( entropy_coding_sync_enabled_flag && CtbAddrTS % TileWidthInCtbs[TileId[ CtbAddrTS ]] = = 0 ) )

)

byte_alignment( )

Change History (17)

comment:1 Changed 12 years ago by DefaultCC Plugin

  • Cc bbross wjhan jct-vc@… added

comment:2 Changed 12 years ago by chung

The "OR" did not appear in the formula. Please read :

  • in the draft :

if( !end_of_slice_flag &&

( ( tiles_enabled_flag && TileId[ CtbAddrTS ] != TileId[ CtbAddrTS − 1 ] ) | |

( entropy_coding_sync_enabled_flag && CtbAddrTS % PicWidthInCtbs = = 0 ) )

)

byte_alignment( )

  • proposed solution :

if( !end_of_slice_flag &&

( ( tiles_enabled_flag && TileId[ CtbAddrTS ] != TileId[ CtbAddrTS − 1 ] ) | |

( entropy_coding_sync_enabled_flag && CtbAddrTS % TileWidthInCtbs[TileId[ CtbAddrTS ]] = = 0 ) )

)

byte_alignment( )

comment:3 Changed 12 years ago by conrad.ho

The main profile has restricted that "tiles_enabled_flag && entropy_coding_sync_enabled_flag equal to 0".

comment:4 Changed 12 years ago by bbross

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

comment:5 Changed 12 years ago by bbross

  • Resolution fixed deleted
  • Status changed from closed to new

comment:6 Changed 12 years ago by bbross

  • Version changed from D8 (J1003) d7 to D9 (K1003) v10

comment:7 Changed 12 years ago by bbross

  • Version changed from D9 (K1003) v10 to D9 (K1003) v11

comment:8 Changed 12 years ago by bbross

  • Version changed from D9 (K1003) v11 to D10 (L1003) v1

comment:9 Changed 12 years ago by bbross

  • Milestone set to D10

comment:10 Changed 12 years ago by bbross

  • Version changed from D10 (L1003) v1 to D10 (L1003) v2

comment:11 Changed 12 years ago by bbross

  • Type changed from defect to enhancement
  • Version changed from D10 (L1003) v2 to D10 (L1003) v28

No issue in version 1 HEVC so I consider this as an enhancement. Also it relates to #707:

"The main profile restricts that " tiles_enabled_flag && entropy_coding_sync_enabled_flag equal to 0".
To follow such restriction, sentences refer to tiles_enabled_flag=1 and entropy_coding_sync_enabled_flag=1 should be removed. See definitions of num_entry_point_offsets and entry_point_offset[ i ].
To preserve the possibility of tiles_enabled_flag=1 and entropy_coding_sync_enabled_flag=1 (for other future profile), the initialization and memorization condition in 9.3 need to be revised.
Also the byte_alignment( ) issue mentioned in #659 needs to be solved."

and #740:
"In chapter 8.6.1 : Derivation process for quantization parameters, the following condition to derive of qPY_prev is incorrect :
"The current quantization group is the first quantization group in a coding tree block row and entropy_coding_sync_enabled_flag is equal to 1." (taking into account ticket #721)
According to entropy_coding_sync_enabled_flag definition :
"entropy_coding_sync_enabled_flag equal to 1 specifies that a specific synchronization process for context variables is invoked before decoding the first coding tree block of a row of coding tree blocks in each tile..."
the condition should be :
The current quantization group is the first quantization group in a coding tree block row of a tile and entropy_coding_sync_enabled_flag is equal to 1."

comment:12 Changed 12 years ago by bbross

Ticket #740 has been marked as a duplicate of this ticket.

comment:13 Changed 12 years ago by bbross

Ticket #707 has been marked as a duplicate of this ticket.

comment:14 Changed 12 years ago by bbross

  • Milestone D10 deleted

comment:15 Changed 12 years ago by bbross

  • Version changed from D10 (L1003) v28 to D10 (L1003) v31

comment:16 Changed 12 years ago by bbross

  • Version changed from D10 (L1003) v31 to D10 (L1003) v33

comment:17 Changed 7 years ago by bbross

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

In the 2016/12 release of the HEVC specification:

  • The byte_alignment aspect is fixed
  • The initialization and memorization condition in 9.3 includes support for simultaneous use of tiles and wavefront (e.g., as is possible in the High Throughput profiles).
Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • Benjamin Bross(Owner, Subscriber, Participant)
  • Conrad Ho(Participant)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Always)
  • Woo-Jin Han(Subscriber)