Opened 5 years ago

Closed 5 years ago

#836 closed defect (fixed)

Variables in rectangular slice map initialization

Reported by: luoda Owned by:
Priority: minor Milestone:
Component: spec Version:
Keywords: VVC D8 vA Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

In VVC D8 vA, 6.5.1 rectangular slice map derivation, num_slices_in_tile_minus1 is not a syntax element in the following text,

else {
	tileIdx = 0
	for( i = 0; i  <=  num_slices_in_pic_minus1; i++ )
		NumCtusInSlice[ i ] = 0
	for( i = 0; i  <=  num_slices_in_pic_minus1; i++ ) {
		SliceTopLeftTileIdx[ i ] = tileIdx
		tileX = tileIdx % NumTileColumns
		tileY = tileIdx / NumTileColumns
		if( i  = =  num_slices_in_pic_minus1 ) {
			slice_width_in_tiles_minus1[ i ] = NumTileColumns − 1 − tileX
			slice_height_in_tiles_minus1[ i ] = NumTileRows − 1 − tileY
			num_slices_in_tile_minus1[ i ] = 0
		}
		if( slice_width_in_tiles_minus1[ i ]  = =  0  &&  slice_height_in_tiles_minus1[ i ]  = =  0 ) {	(29)
			ctbY = tileRowBd[ tileY ]
			numSlicesInTileMinus1 = NumSlicesInTile[ i ] − 1
			for( j = 0; j < num_slices_in_tile_minus1[ i ]; j++ ) {
				AddCtbsToSlice( i, tileColBd[ tileX ], tileColBd[ tileX + 1 ],
						ctbY, ctbY + SliceHeightInCtusMinus1[ i ] + 1 )
				ctbY  +=  SliceHeightInCtusMinus1[ i ] + 1
				i++
			}
			AddCtbsToSlice( i, tileColBd[ tileX ], tileColBd[ tileX + 1 ], ctbY, tileRowBd[ tileY + 1 ] )
		} else
			for( j = 0; j  <=  slice_height_in_tiles_minus1[ i ]; j++ )
				for( k = 0; k  <=  slice_width_in_tiles_minus1[ i ]; k++ )
					AddCtbsToSlice( i, tileColBd[ tileX + k ], tileColBd[ tileX + k + 1 ],
						tileRowBd[ tileY + j ], tileRowBd[ tileY + j + 1 ] )
		if( tile_idx_delta_present_flag )
			tileIdx  +=  tile_idx_delta[ i ]
		else {
			tileIdx  +=  slice_width_in_tiles_minus1[ i ] + 1
			if( tileIdx % NumTileColumns  = =  0 )
				tileIdx  +=  slice_height_in_tiles_minus1[ i ] * NumTileColumns
		}
	}
}

Suggest to change it to the following:

else {
	tileIdx = 0
	for( i = 0; i  <=  num_slices_in_pic_minus1; i++ )
		NumCtusInSlice[ i ] = 0
	for( i = 0; i  <=  num_slices_in_pic_minus1; i++ ) {
		SliceTopLeftTileIdx[ i ] = tileIdx
		tileX = tileIdx % NumTileColumns
		tileY = tileIdx / NumTileColumns
		if( i  = =  num_slices_in_pic_minus1 ) {
			slice_width_in_tiles_minus1[ i ] = NumTileColumns − 1 − tileX
			slice_height_in_tiles_minus1[ i ] = NumTileRows − 1 − tileY
			NumSliceInTile[ i ] = 1
		}
		if( slice_width_in_tiles_minus1[ i ]  = =  0  &&  slice_height_in_tiles_minus1[ i ]  = =  0 ) {	(29)
			ctbY = tileRowBd[ tileY ]
			for( j = 0; j < NumSlicesInTiles[ i ] - 1; j++ ) {
				AddCtbsToSlice( i, tileColBd[ tileX ], tileColBd[ tileX + 1 ],
						ctbY, ctbY + SliceHeightInCtusMinus1[ i ] + 1 )
				ctbY  +=  SliceHeightInCtusMinus1[ i ] + 1
				i++
			}
			AddCtbsToSlice( i, tileColBd[ tileX ], tileColBd[ tileX + 1 ], ctbY, tileRowBd[ tileY + 1 ] )
		} else
			for( j = 0; j  <=  slice_height_in_tiles_minus1[ i ]; j++ )
				for( k = 0; k  <=  slice_width_in_tiles_minus1[ i ]; k++ )
					AddCtbsToSlice( i, tileColBd[ tileX + k ], tileColBd[ tileX + k + 1 ],
						tileRowBd[ tileY + j ], tileRowBd[ tileY + j + 1 ] )
		if( tile_idx_delta_present_flag )
			tileIdx  +=  tile_idx_delta[ i ]
		else {
			tileIdx  +=  slice_width_in_tiles_minus1[ i ] + 1
			if( tileIdx % NumTileColumns  = =  0 )
				tileIdx  +=  slice_height_in_tiles_minus1[ i ] * NumTileColumns
		}
	}
}

Change history (1)

comment:1 Changed 5 years ago by yk

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

Good catch! Thanks! To be fixed in JVET-Q2001-vB.

Note: See TracTickets for help on using tickets.