uint64 for number of time steps parameter

This commit is contained in:
Gregor Weiss 2024-08-28 12:00:14 +02:00
parent bbc538d5e8
commit e970a0d892
Signed by: Gregor Weiss
GPG key ID: 61E170A8BBFE5756
4 changed files with 18 additions and 19 deletions

View file

@ -85,14 +85,14 @@
uint64 const nX,
uint64 const nY,
uint64 const nZ,
uint16 const nTS,
uint64 const nTS,
uint8 const nPar,
bwc_precision const prec);
//==========|==========================|======================|======|=======|====================
bwc_codec* bwc_alloc_coder (uint64 const nX,
uint64 const nY,
uint64 const nZ,
uint16 const nTS,
uint64 const nTS,
uint8 const nPar,
bwc_precision const prec);
//==========|==========================|======================|======|=======|====================
@ -158,4 +158,4 @@
//==========|==========================|======================|======|=======|====================
uchar bwc_decompress (bwc_codec *const codec,
bwc_stream *const stream);
#endif
#endif

View file

@ -97,7 +97,7 @@ def initialize_data(data, nX, nY, nZ, nTS, nPar, file_extension):
ctypes.c_uint64,
ctypes.c_uint64,
ctypes.c_uint64,
ctypes.c_uint16,
ctypes.c_uint64,
ctypes.c_uint8,
ctypes.c_char_p]
return ctypes.c_void_p(fun(data, nX, nY, nZ, nTS, nPar, file_extension.encode('utf-8')))

View file

@ -188,7 +188,7 @@ codestream_write_header(bitstream *const stream,
emit_symbol(stream, info->nX, 8);
emit_symbol(stream, info->nY, 8);
emit_symbol(stream, info->nZ, 8);
emit_symbol(stream, info->nTS, 2);
emit_symbol(stream, info->nTS, 8);
emit_symbol(stream, info->nPar, 1);
emit_symbol(stream, (uint8)info->data_prec, 1);
emit_symbol(stream, (uint8)info->codec_prec, 1);
@ -700,7 +700,7 @@ parse_main_header(bwc_codec *const codec, bwc_stream *const data, bitstream *con
nX = get_symbol(stream, 8);
nY = get_symbol(stream, 8);
nZ = get_symbol(stream, 8);
nTS = (uint16)get_symbol(stream, 2);
nTS = get_symbol(stream, 8);
nPar = (uint8)get_symbol(stream, 1);
data_prec = (bwc_precision)get_symbol(stream, 1);
codec_prec = (bwc_precision)get_symbol(stream, 1);
@ -1520,4 +1520,4 @@ parse_codestream(bwc_codec *const codec, bwc_stream *const data, uint8 const lay
free(stream);
return codec;
}
}

View file

@ -1742,11 +1742,11 @@ create_field(bwc_codec *const field)
tile_info->X0 = (uint64)MAX(0, x * control->tileSizeX);
tile_info->Y0 = (uint64)MAX(0, y * control->tileSizeY);
tile_info->Z0 = (uint64)MAX(0, z * control->tileSizeZ);
tile_info->TS0 = (uint16)MAX(0, t * control->tileSizeTS);
tile_info->TS0 = (uint64)MAX(0, t * control->tileSizeTS);
tile_info->X1 = (uint64)MIN(info->nX , (x + 1) * control->tileSizeX);
tile_info->Y1 = (uint64)MIN(info->nY , (y + 1) * control->tileSizeY);
tile_info->Z1 = (uint64)MIN(info->nZ , (z + 1) * control->tileSizeZ);
tile_info->TS1 = (uint16)MIN(info->nTS, (t + 1) * control->tileSizeTS);
tile_info->TS1 = (uint64)MIN(info->nTS, (t + 1) * control->tileSizeTS);
/*--------------------------------------------------------*\
! Initialize the tile header size. !
@ -2150,7 +2150,7 @@ bwc_free_codec(bwc_codec *const codec)
\*----------------------------------------------------------------------------------------------------------*/
bwc_codec*
configure_codec(bwc_codec *const codec, uint64 const nX, uint64 const nY, uint64 const nZ,
uint16 const nTS, uint8 const nPar, bwc_precision const prec)
uint64 const nTS, uint8 const nPar, bwc_precision const prec)
{
/*-----------------------*\
! DEFINE INT VARIABLES: !
@ -2321,7 +2321,7 @@ configure_codec(bwc_codec *const codec, uint64 const nX, uint64 const nY, uint64
! !
\*----------------------------------------------------------------------------------------------------------*/
bwc_codec*
bwc_alloc_coder(uint64 const nX, uint64 const nY, uint64 const nZ, uint16 const nTS,
bwc_alloc_coder(uint64 const nX, uint64 const nY, uint64 const nZ, uint64 const nTS,
uint8 const nPar, bwc_precision const prec)
{
/*--------------------------------------------------------*\
@ -3230,13 +3230,12 @@ bwc_set_qm(bwc_codec *const field, uint8 Qm)
! !
\*----------------------------------------------------------------------------------------------------------*/
void
bwc_set_tiles(bwc_codec *const field, uint64 tilesX, uint64 tilesY, uint64 tilesZ, uint16 tilesTS, bwc_tile_instr instr)
bwc_set_tiles(bwc_codec *const field, uint64 tilesX, uint64 tilesY, uint64 tilesZ, uint64 tilesTS, bwc_tile_instr instr)
{
/*-----------------------*\
! DEFINE INT VARIABLES: !
\*-----------------------*/
uint64 num_tiles_X, num_tiles_Y, num_tiles_Z;
uint16 num_tiles_TS;
uint64 num_tiles_X, num_tiles_Y, num_tiles_Z, num_tiles_TS;
/*-----------------------*\
! DEFINE STRUCTS: !
@ -3304,7 +3303,7 @@ bwc_set_tiles(bwc_codec *const field, uint64 tilesX, uint64 tilesY, uint64 tiles
num_tiles_X = (uint64)ceil(((float)info->nX / control->tileSizeX));
num_tiles_Y = (uint64)ceil(((float)info->nY / control->tileSizeY));
num_tiles_Z = (uint64)ceil(((float)info->nZ / control->tileSizeZ));
num_tiles_TS = (uint16)ceil(((float)info->nTS/ control->tileSizeTS));
num_tiles_TS = (uint64)ceil(((float)info->nTS/ control->tileSizeTS));
control->nTiles = num_tiles_X * num_tiles_Y * num_tiles_Z * num_tiles_TS;
/*--------------------------------------------------------*\
@ -3366,7 +3365,7 @@ bwc_set_tiles(bwc_codec *const field, uint64 tilesX, uint64 tilesY, uint64 tiles
control->tileSizeX = (info->nX >> 1) ? (tilesX ? (uint64)ceil(((float)info->nX / tilesX)) : info->nX) : info->nX;
control->tileSizeY = (info->nY >> 1) ? (tilesY ? (uint64)ceil(((float)info->nY / tilesY)) : info->nY) : info->nY;
control->tileSizeZ = (info->nZ >> 1) ? (tilesZ ? (uint64)ceil(((float)info->nZ / tilesZ)) : info->nZ) : info->nZ;
control->tileSizeTS = (info->nTS >> 1) ? (tilesTS ? (uint16)ceil(((float)info->nTS/ tilesTS)) : info->nTS) : info->nTS;
control->tileSizeTS = (info->nTS >> 1) ? (tilesTS ? (uint64)ceil(((float)info->nTS/ tilesTS)) : info->nTS) : info->nTS;
/*--------------------------------------------------------*\
! Check if the tile sizes have valid values. !
@ -3406,7 +3405,7 @@ bwc_set_tiles(bwc_codec *const field, uint64 tilesX, uint64 tilesY, uint64 tiles
num_tiles_X = (uint64)ceil(((float)info->nX / control->tileSizeX));
num_tiles_Y = (uint64)ceil(((float)info->nY / control->tileSizeY));
num_tiles_Z = (uint64)ceil(((float)info->nZ / control->tileSizeZ));
num_tiles_TS = (uint16)ceil(((float)info->nTS/ control->tileSizeTS));
num_tiles_TS = (uint64)ceil(((float)info->nTS/ control->tileSizeTS));
control->nTiles = num_tiles_X * num_tiles_Y * num_tiles_Z * num_tiles_TS;
}
@ -3588,8 +3587,8 @@ bwc_create_compression(bwc_codec *codec, bwc_stream *stream, char *rate_control)
/*--------------------------------------------------------*\
! Evaluate the size of the main header. !
\*--------------------------------------------------------*/
control->headerSize = 99 + info->nPar * control->nTiles * 2 * PREC_BYTE
+ control->nLayers * 4;
control->headerSize = 105 + info->nPar * control->nTiles * 2 * PREC_BYTE
+ control->nLayers * 4;
if(stream->codestream.aux != NULL)
{