Opened 9 years ago

Closed 9 years ago

#376 closed defect (fixed)

section 6.5.1 raster order to tile scan order

Reported by: stworrall Owned by: bbross
Priority: minor Milestone: D7
Component: Text Version: D6 (H1003) dI/dJ/dK
Keywords: Cc: bbross, wjhan, jct-vc@…

Description

(From version dk)

In 6.5.1, an array CtbAddrTS[] is defined, seemingly for conversion of raster scan to tile scan order.

In the slice data syntax tables, an undefined array is referenced: CtbAddrRStoTS. It looks like the array in 6.5.1 (CtbAddrTS) and CtbAddrRStoTS might be the same, and their names should be aligned. Note that CtbAddrTS is widely referenced elsewhere as a variable, rather than an array.

Also, the definition of the raster scan to tile scan array in 6.5.1 does not look correct, and needs checking.

Change History (6)

comment:1 Changed 9 years ago by DefaultCC Plugin

  • Cc bbross wjhan jct-vc@… added

comment:2 in reply to: ↑ description ; follow-up: Changed 9 years ago by stworrall

Corrected pseudocode for section 6.5.1 (to replace first block of pseudocode):

for( ctbAddrRS = 0; ctbAddrRS < PicHeightInCtbs * PicWidthInCtbs; ctbAddrRS++ ) {

tbX = ctbAddrRS % PicWidthInCtbs
tbY = ctbAddrRS / PicWidthInCtbs


for( j = 0; j <= num_tile_columns_minus1; j++ ) {

if( tbX >= ColBd[j] ) {

tileX = j

}

}
for( i = 0; i <= num_tile_rows_minus1; i++ ) {

if( tbY >= RowBd[i] ) {

tileY = i

}

}
for( CtbAddrTS[ ctbAddrRS ] = 0, i = 0; i < tileX; i++ ) {

CtbAddrTS[ ctbAddrRS ] += RowHeight[tileY] * ColumnWidth[i]

}
for( i = 0; i < tileY; i++ ) {

CtbAddrTS[ ctbAddrRS ] += PicWidthInCtbs * RowHeight[i]

}
CtbAddrTS[ ctbAddrRS ] += (tbY - RowBd[tileY] ) * ColumnWidth[ tileY ] + tbX - ColBd[ tileX ]

}

Replying to stworrall:

(From version dk)

In 6.5.1, an array CtbAddrTS[] is defined, seemingly for conversion of raster scan to tile scan order.

In the slice data syntax tables, an undefined array is referenced: CtbAddrRStoTS. It looks like the array in 6.5.1 (CtbAddrTS) and CtbAddrRStoTS might be the same, and their names should be aligned. Note that CtbAddrTS is widely referenced elsewhere as a variable, rather than an array.

Also, the definition of the raster scan to tile scan array in 6.5.1 does not look correct, and needs checking.

comment:3 in reply to: ↑ 2 ; follow-up: Changed 9 years ago by shilin.xu

We think the original pseudocode in the CD text is incorrect, and we also think the "Corrected pseudocode" is incorrect as well, the recommended pseudocode is:


for( ctbAddrRS = 0; ctbAddrRS < PicHeightInCtbs * PicWidthInCtbs; ctbAddrRS++ ) {

tbX = ctbAddrRS % PicWidthInCtbs
tbY = ctbAddrRS / PicWidthInCtbs
for( j = 0; j <= num_tile_columns_minus1; j++ )

if( tbX < ColBd[ j + 1 ] )

tileX = j

for( i = 0; i <= num_tile_rows_minus1; i++ )

if( tbY < RowBd[ i + 1 ] )

tileY = i

CtbAddrTS[ ctbAddrRS ] = 0;
for( i = 0; i < tileX; i++ )

CtbAddrTS[ ctbAddrRS ] += RowHeight[ tileY ] * ColumnWidth[ i ]

for( j = 0; j < tileY: j++)

CtbAddrTS[ ctbAddrRS ] += RowHeight[ j ] * PicWidthInCtbs;

CtbAddrTS[ ctbAddrRS ] += ( tbY − RowBd[ tileY ] ) * ColumnWidth[ tileX ] + tbX − ColBd[ tileX ]

}


comment:4 in reply to: ↑ 3 Changed 9 years ago by stworrall

Merged corrections:

for( ctbAddrRS = 0; ctbAddrRS < PicHeightInCtbs * PicWidthInCtbs; ctbAddrRS++ ) {

tbX = ctbAddrRS % PicWidthInCtbs
tbY = ctbAddrRS / PicWidthInCtbs

for( j = 0; j <= num_tile_columns_minus1; j++ ) {

if( tbX >= ColBd[j] ) {

tileX = j

}

}
for( i = 0; i <= num_tile_rows_minus1; i++ ) {

if( tbY >= RowBd[i] ) {

tileY = i

}

}
for( CtbAddrTS[ ctbAddrRS ] = 0, i = 0; i < tileX; i++ ) {

CtbAddrTS[ ctbAddrRS ] += RowHeight[tileY] * ColumnWidth[i]

}
for( i = 0; i < tileY; i++ ) {

CtbAddrTS[ ctbAddrRS ] += PicWidthInCtbs * RowHeight[i]

}
CtbAddrTS[ ctbAddrRS ] += (tbY - RowBd[tileY] ) * ColumnWidth[ tileX ] + tbX - ColBd[ tileX ]

}

Replying to shilin.xu:

We think the original pseudocode in the CD text is incorrect, and we also think the "Corrected pseudocode" is incorrect as well, the recommended pseudocode is:


for( ctbAddrRS = 0; ctbAddrRS < PicHeightInCtbs * PicWidthInCtbs; ctbAddrRS++ ) {

tbX = ctbAddrRS % PicWidthInCtbs
tbY = ctbAddrRS / PicWidthInCtbs
for( j = 0; j <= num_tile_columns_minus1; j++ )

if( tbX < ColBd[ j + 1 ] )

tileX = j

for( i = 0; i <= num_tile_rows_minus1; i++ )

if( tbY < RowBd[ i + 1 ] )

tileY = i

CtbAddrTS[ ctbAddrRS ] = 0;
for( i = 0; i < tileX; i++ )

CtbAddrTS[ ctbAddrRS ] += RowHeight[ tileY ] * ColumnWidth[ i ]

for( j = 0; j < tileY: j++)

CtbAddrTS[ ctbAddrRS ] += RowHeight[ j ] * PicWidthInCtbs;

CtbAddrTS[ ctbAddrRS ] += ( tbY − RowBd[ tileY ] ) * ColumnWidth[ tileX ] + tbX − ColBd[ tileX ]

}


comment:5 Changed 9 years ago by bbross

  • Milestone set to D7

comment:6 Changed 9 years ago by bbross

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

Fixed in draft 7 (JCVTC-I1003_d3.doc)

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)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Always)
  • Shilin Xu(Participant)
  • Stewart Worrall(Reporter, Participant)
  • Woo-Jin Han(Subscriber)