feat/api #46

Open
Gregor Weiss wants to merge 55 commits from feat/api into main
16 changed files with 359 additions and 775 deletions
Showing only changes of commit 008ccfa4a9 - Show all commits

View file

@ -118,7 +118,7 @@
uchar get_bit (bitstream *const stream); uchar get_bit (bitstream *const stream);
//==========|==========================|======================|======|======|===================== //==========|==========================|======================|======|======|=====================
uchar terminate_stream (bitstream *stream, uchar terminate_stream (bitstream *stream,
bwc_stream *const packed_stream); bwc_span *const packed_stream);
//==========|==========================|======================|======|======|===================== //==========|==========================|======================|======|======|=====================
void release_packed_stream (bwc_stream *const stream); void release_packed_stream (bwc_span *const stream);
#endif #endif

View file

@ -89,16 +89,17 @@
|| | |__| |__] |___ | |___ | |__| | \| |___ | | |__| | \| ___] || || | |__| |__] |___ | |___ | |__| | \| |___ | | |__| | \| ___] ||
|| || || ||
\************************************************************************************************/ \************************************************************************************************/
uchar assemble_main_header (bwc_field *const field); uchar assemble_main_header (bwc_codec *const field);
//==========|==========================|======================|======|======|===================== //==========|==========================|======================|======|======|=====================
uchar codestream_write_aux (bwc_stream *const header, uchar codestream_write_aux (bwc_span *const header,
bwc_stream *const aux); bwc_span *const aux);
//==========|==========================|======================|======|======|===================== //==========|==========================|======================|======|======|=====================
uchar codestream_write_com (bwc_stream *const header, uchar codestream_write_com (bwc_span *const header,
bwc_stream *const com); bwc_span *const com);
//==========|==========================|======================|======|======|===================== //==========|==========================|======================|======|======|=====================
bwc_stream* assemble_codestream (bwc_field *const field); bwc_span* assemble_codestream (bwc_codec *const field,
bwc_stream *const data);
//==========|==========================|======================|======|======|===================== //==========|==========================|======================|======|======|=====================
bwc_field* parse_codestream (bwc_data *const data, bwc_codec* parse_codestream (bwc_stream *const data,
uint8 const layer); uint8 const layer);
#endif #endif

View file

@ -114,8 +114,8 @@
\*----------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------*/
typedef enum typedef enum
{ {
bwc_type_half, bwc_precision_half = 2,
bwc_type_single, bwc_precision_single = 4,
bwc_type_double, bwc_precision_double = 8,
} bwc_type; } bwc_precision;
#endif #endif

View file

@ -157,13 +157,13 @@
\************************************************************************************************/ \************************************************************************************************/
uchar initialize_gain_lut (); uchar initialize_gain_lut ();
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
bwc_float get_dwt_energy_gain (bwc_field *const field, bwc_float get_dwt_energy_gain (bwc_codec *const field,
uchar const highband_flag, uchar const highband_flag,
uint16 const level); uint16 const level);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar forward_wavelet_transform (bwc_field *const field, uchar forward_wavelet_transform (bwc_codec *const field,
bwc_parameter *const parameter); bwc_parameter *const parameter);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar inverse_wavelet_transform (bwc_field *const field, uchar inverse_wavelet_transform (bwc_codec *const field,
bwc_parameter *const parameter); bwc_parameter *const parameter);
#endif #endif

View file

@ -64,92 +64,85 @@
|| || || ||
\************************************************************************************************/ \************************************************************************************************/
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
bwc_data* bwc_initialize_data (double *const field, bwc_stream* bwc_initialize_data (void *const data,
bwc_precision const prec);
//==========|==========================|======================|======|=======|====================
uchar bwc_set_com (bwc_stream *const data,
char const *const com,
uint16 const size);
//==========|==========================|======================|======|=======|====================
uchar bwc_set_aux (bwc_stream *const data,
char const *const aux,
uint32 const size);
//==========|==========================|======================|======|=======|====================
void bwc_free_data (bwc_stream *const data);
//==========|==========================|======================|======|=======|====================
uchar create_field (bwc_codec *const field);
//==========|==========================|======================|======|=======|====================
void bwc_kill_compression (bwc_codec *const field);
//==========|==========================|======================|======|=======|====================
bwc_codec* bwc_initialize_field (bwc_precision const prec,
uint64 const nX, uint64 const nX,
uint64 const nY, uint64 const nY,
uint64 const nZ, uint64 const nZ,
uint16 const nTS, uint16 const nTS,
uint8 const nPar, uint8 const nPar);
char *const file_extension);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar bwc_set_com (bwc_data *const data, void bwc_set_error_resilience (bwc_codec *const field);
char const *const com,
uint16 const size);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar bwc_set_aux (bwc_data *const data, void set_quant_style (bwc_codec *const field,
char const *const aux,
uint32 const size);
//==========|==========================|======================|======|=======|====================
void bwc_add_param (bwc_data *const data,
char *const name,
uint8 const precision);
//==========|==========================|======================|======|=======|====================
void bwc_get_data (bwc_data *const data,
uchar *const buffer,
uint64 const size);
//==========|==========================|======================|======|=======|====================
void bwc_free_data (bwc_data *const data);
//==========|==========================|======================|======|=======|====================
uchar create_field (bwc_field *const field);
//==========|==========================|======================|======|=======|====================
void bwc_kill_compression (bwc_field *const field);
//==========|==========================|======================|======|=======|====================
bwc_field* bwc_initialize_field (bwc_data *const data);
//==========|==========================|======================|======|=======|====================
void bwc_set_error_resilience (bwc_field *const field);
//==========|==========================|======================|======|=======|====================
void set_quant_style (bwc_field *const field,
bwc_quant_st const quantization_style); bwc_quant_st const quantization_style);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void set_quant_step_size (bwc_field *const field, void set_quant_step_size (bwc_codec *const field,
double const delta); double const delta);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void set_progression (bwc_field *const field, void set_progression (bwc_codec *const field,
bwc_prog_ord const progression); bwc_prog_ord const progression);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void set_kernels (bwc_field *const field, void set_kernels (bwc_codec *const field,
bwc_dwt_filter const KernelX, bwc_dwt_filter const KernelX,
bwc_dwt_filter const KernelY, bwc_dwt_filter const KernelY,
bwc_dwt_filter const KernelZ, bwc_dwt_filter const KernelZ,
bwc_dwt_filter const KernelTS); bwc_dwt_filter const KernelTS);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void bwc_set_decomp (bwc_field *const field, void bwc_set_decomp (bwc_codec *const field,
uint8 const decompX, uint8 const decompX,
uint8 const decompY, uint8 const decompY,
uint8 const decompZ, uint8 const decompZ,
uint8 const decompTS); uint8 const decompTS);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void bwc_set_precincts (bwc_field *const field, void bwc_set_precincts (bwc_codec *const field,
uint8 const pX, uint8 const pX,
uint8 const pY, uint8 const pY,
uint8 const pZ, uint8 const pZ,
uint8 const pTS); uint8 const pTS);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void bwc_set_codeblocks (bwc_field *const field, void bwc_set_codeblocks (bwc_codec *const field,
uint8 const cbX, uint8 const cbX,
uint8 const cbY, uint8 const cbY,
uint8 const cbZ, uint8 const cbZ,
uint8 const cbTS); uint8 const cbTS);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void bwc_set_qm (bwc_field *const field, void bwc_set_qm (bwc_codec *const field,
uint8 const Qm); uint8 const Qm);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
void bwc_set_tiles (bwc_field *const field, void bwc_set_tiles (bwc_codec *const field,
uint64 const tilesX, uint64 const tilesX,
uint64 const tilesY, uint64 const tilesY,
uint64 const tilesZ, uint64 const tilesZ,
uint64 const tilesTS, uint64 const tilesTS,
bwc_tile_instr const instr); bwc_tile_instr const instr);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar bwc_create_compression (bwc_field *const field, uchar bwc_create_compression (bwc_codec *const codec,
bwc_stream *const data,
char *const rate_control); char *const rate_control);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar bwc_compress (bwc_field *const field, uchar bwc_compress (bwc_codec *const field,
bwc_data *const data); bwc_stream *const data);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
bwc_field* bwc_create_decompression (bwc_data *const data, bwc_codec* bwc_create_decompression (bwc_stream *const data,
uint8 const layer); uint8 const layer);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar bwc_decompress (bwc_field *const field, uchar bwc_decompress (bwc_codec *const field,
bwc_data *const data); bwc_stream *const data);
#endif #endif

View file

@ -16,7 +16,7 @@
|| ------------ || || ------------ ||
|| || || ||
|| This file describes a set of functions that can be used to de-/encode bwc || || This file describes a set of functions that can be used to de-/encode bwc ||
|| codeblocks described by the bwc_field structure according to the embedded block || || codeblocks described by the bwc_codec structure according to the embedded block ||
|| coding paradigm described by the JPEG 2000 standard. For more information please || || coding paradigm described by the JPEG 2000 standard. For more information please ||
|| refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. || || refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. ||
|| || || ||
@ -156,11 +156,11 @@
|| | |__| |__] |___ | |___ | |__| | \| |___ | | |__| | \| ___] || || | |__| |__] |___ | |___ | |__| | \| |___ | | |__| | \| ___] ||
|| || || ||
\************************************************************************************************/ \************************************************************************************************/
uchar t1_encode (bwc_field *const field, uchar t1_encode (bwc_codec *const field,
bwc_tile *const tile, bwc_tile *const tile,
bwc_parameter *const parameter); bwc_parameter *const parameter);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar t1_decode (bwc_field *const field, uchar t1_decode (bwc_codec *const field,
bwc_tile *const tile, bwc_tile *const tile,
bwc_parameter *const parameter); bwc_parameter *const parameter);

View file

@ -16,7 +16,7 @@
|| ------------ || || ------------ ||
|| || || ||
|| This file describes a set of functions that can be used to de-/encode bwc || || This file describes a set of functions that can be used to de-/encode bwc ||
|| codeblocks described by the bwc_field structure according to the embedded block || || codeblocks described by the bwc_codec structure according to the embedded block ||
|| coding paradigm described by the JPEG 2000 standard. For more information please || || coding paradigm described by the JPEG 2000 standard. For more information please ||
|| refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. || || refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. ||
|| || || ||
@ -76,10 +76,10 @@
|| | |__| |__] |___ | |___ | |__| | \| |___ | | |__| | \| ___] || || | |__| |__] |___ | |___ | |__| | \| |___ | | |__| | \| ___] ||
|| || || ||
\************************************************************************************************/ \************************************************************************************************/
uchar t2_encode (bwc_field *const field, uchar t2_encode (bwc_codec *const field,
bwc_tile *const tile); bwc_tile *const tile);
//==========|==========================|======================|======|=======|==================== //==========|==========================|======================|======|=======|====================
uchar parse_packet (bwc_field *const field, uchar parse_packet (bwc_codec *const field,
bwc_tile *const tile, bwc_tile *const tile,
bwc_packet *const packet, bwc_packet *const packet,
uint64 const body_size); uint64 const body_size);

View file

@ -99,7 +99,7 @@
uchar *access; // Pointer used to parse packed stream. uchar *access; // Pointer used to parse packed stream.
uchar *memory; // Memory handle for the packed stream. uchar *memory; // Memory handle for the packed stream.
} bwc_stream; } bwc_span;
/*----------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------*\
! ! ! !
@ -138,29 +138,6 @@
bwc_tagtree_node *nodes; // Pointer to the tagtree nodes. bwc_tagtree_node *nodes; // Pointer to the tagtree nodes.
} bwc_tagtree; } bwc_tagtree;
/*----------------------------------------------------------------------------------------------*\
! !
! DESCRIPTION: !
! ------------ !
! !
! This structure defines a linked list which stores the size, index, and bit pre- !
! cision The string name is used to store the parameter name supplied by the !
! function caller. !
! !
\*----------------------------------------------------------------------------------------------*/
typedef struct opt
{
char name[24]; // Parameter name.
uint8 id; // Parameter index.
uint64 size; // Parameter size after sub-sampling.
uint8 precision; // Parameter precision.
struct opt *next; // Next element in linked-list.
struct opt *root; // Linked-list root.
} bwc_cmd_opts_ll;
/*----------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------*\
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -178,12 +155,8 @@
uint8 nPar; // Number of parameters. uint8 nPar; // Number of parameters.
uint8 precision; // Flag defining codec precision. bwc_precision data_prec; // Data type of uncompressed field data.
bwc_precision codec_prec; // Encoder/decoder bit precision.
uint8 codec_prec; // Encoder/decoder bit precision.
char f_ext[20]; // Uncompressed data set file extension.
bwc_cmd_opts_ll *parameter; // Command options linked-list.
} bwc_gl_inf; } bwc_gl_inf;
/*----------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------*\
@ -197,14 +170,11 @@
\*----------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------*/
typedef struct typedef struct
{ {
bwc_gl_inf info; // Gloabal info structure.
FILE *fp; // File point to (un)compr. data-set.
struct codestream struct codestream
{ {
bwc_stream *data; // Data codestream block. bwc_span *data; // Data codestream block.
bwc_stream *aux; // Auxiliary info. codestream block. bwc_span *aux; // Auxiliary info. codestream block.
bwc_stream *com; // Comment codestream block. bwc_span *com; // Comment codestream block.
}codestream; }codestream;
struct field struct field
@ -212,7 +182,7 @@
double *d; // Double precision numerical data-set. double *d; // Double precision numerical data-set.
float *f; // Single precision numerical data-set. float *f; // Single precision numerical data-set.
}field; }field;
} bwc_data; } bwc_stream;
/*----------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------*\
! ! ! !
@ -420,8 +390,8 @@
\*----------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------*/
typedef struct typedef struct
{ {
bwc_stream header; // Packed stream header. bwc_span header; // Packed stream header.
bwc_stream body; // Packed stream body. bwc_span body; // Packed stream body.
uint8 e; // Indicator for packet cb. contributions. uint8 e; // Indicator for packet cb. contributions.
uint32 size; // Codestream packet size. uint32 size; // Codestream packet size.
@ -528,14 +498,9 @@
\*----------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------*/
typedef struct typedef struct
{ {
uint64 size; // Parameter size.
char *name; // Parameter name.
uint64 X0, Y0, Z0, TS0; // Tile parameter starting point. uint64 X0, Y0, Z0, TS0; // Tile parameter starting point.
uint64 X1, Y1, Z1, TS1; // Tile parameter end point. uint64 X1, Y1, Z1, TS1; // Tile parameter end point.
uint8 precision; // Tile parameter precision.
bwc_float parameter_min; // Min. value of tile parameter. bwc_float parameter_min; // Min. value of tile parameter.
bwc_float parameter_max; // Max. value of tile parameter. bwc_float parameter_max; // Max. value of tile parameter.
} bwc_param_inf; } bwc_param_inf;
@ -710,12 +675,9 @@
\*----------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------*/
typedef struct typedef struct
{ {
bwc_gl_inf *info; // Gloabal info structure bwc_gl_inf info; // Global info structure
bwc_gl_ctrl control; // Global control structure bwc_gl_ctrl control; // Global control structure
bwc_tile *tile; // Structure defining bwc tile. bwc_tile *tile; // Structure defining bwc tile.
} bwc_codec;
bwc_stream *aux; // Auxiliary info. codestream block.
bwc_stream *com; // Comment codestream block.
} bwc_field;
#endif #endif

View file

@ -107,42 +107,6 @@ module bwc
CHARACTER(KIND=C_CHAR) :: file_extension(*) CHARACTER(KIND=C_CHAR) :: file_extension(*)
end function initialize_data_f end function initialize_data_f
!*============================================================================================*! !*============================================================================================*!
subroutine add_param_f(data, name, sample, dim, precision) &
BIND(C, NAME="bwc_add_param")
IMPORT
!*-----------------------*!
! DEFINE POINTERS: !
!*-----------------------*!
TYPE(C_PTR), VALUE :: data
!*-----------------------*!
! DEFINE INT VARIABLES: !
!*-----------------------*!
INTEGER(KIND=C_INT16_T), VALUE :: sample
INTEGER(KIND=C_INT8_T), VALUE :: precision
INTEGER(KIND=C_SIGNED_CHAR), VALUE :: dim
!*-----------------------*!
! DEFINE CHAR VARIABLES: !
!*-----------------------*!
CHARACTER(KIND=C_CHAR) :: name(*)
end subroutine add_param_f
!*============================================================================================*!
subroutine get_data_f(data, buffer, size) &
BIND(C, NAME="bwc_get_data")
IMPORT
!*-----------------------*!
! DEFINE POINTERS: !
!*-----------------------*!
TYPE(C_PTR), VALUE :: data
TYPE(C_PTR), VALUE :: buffer
!*-----------------------*!
! DEFINE INT VARIABLES: !
!*-----------------------*!
INTEGER(KIND=C_INT64_T), Value :: size
end subroutine get_data_f
!*============================================================================================*!
subroutine free_data_f(data) & subroutine free_data_f(data) &
BIND(C, NAME="bwc_free_data") BIND(C, NAME="bwc_free_data")
IMPORT IMPORT
@ -396,11 +360,9 @@ module bwc
bwc_tile_numbof bwc_tile_numbof
public :: bwc_initialize_data, & public :: bwc_initialize_data, &
bwc_get_data, &
bwc_free_data bwc_free_data
public :: bwc_initialize_field, & public :: bwc_initialize_field, &
bwc_add_param, &
bwc_kill_compression bwc_kill_compression
public :: bwc_set_error_resilience, & public :: bwc_set_error_resilience, &

View file

@ -102,24 +102,6 @@ def initialize_data(data, nX, nY, nZ, nTS, nPar, file_extension):
ctypes.c_char_p] ctypes.c_char_p]
return ctypes.c_void_p(fun(data, nX, nY, nZ, nTS, nPar, file_extension.encode('utf-8'))) return ctypes.c_void_p(fun(data, nX, nY, nZ, nTS, nPar, file_extension.encode('utf-8')))
#==================================================================================================# #==================================================================================================#
def get_data(data, buffer, size):
fun = libbwc.bwc_get_data
fun.restype = None
fun.argtypes = [ctypes.c_void_p,
ndpointer(ctypes.c_double, flags="C_CONTIGUOUS"),
ctypes.c_uint64]
fun(data, buffer, size)
#==================================================================================================#
def add_param(data, name, sample, dim, precision):
fun = libbwc.bwc_add_param
fun.restype = None
fun.argtypes = [ctypes.c_void_p,
ctypes.c_char_p,
ctypes.c_uint16,
ctypes.c_uint8,
ctypes.c_uint8]
fun(data, name.encode('utf-8'), sample, dim, precision)
#==================================================================================================#
def kill_compression(field): def kill_compression(field):
fun = libbwc.bwc_kill_compression fun = libbwc.bwc_kill_compression
fun.restype = None fun.restype = None

View file

@ -896,7 +896,7 @@ flush_stream(bitstream *const stream)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
terminate_stream(bitstream *stream, bwc_stream *const packed_stream) terminate_stream(bitstream *stream, bwc_span *const packed_stream)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE ASSERTIONS: ! ! DEFINE ASSERTIONS: !
@ -937,7 +937,7 @@ terminate_stream(bitstream *stream, bwc_stream *const packed_stream)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: void release_packed_stream(bwc_stream *stream) ! ! FUNCTION NAME: void release_packed_stream(bwc_span *stream) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -949,7 +949,7 @@ terminate_stream(bitstream *stream, bwc_stream *const packed_stream)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! stream bwc_stream - Packed bitstream used to store parts of ! ! stream bwc_span - Packed bitstream used to store parts of !
! the bwc codestream. ! ! the bwc codestream. !
! ! ! !
! RETURN VALUE: ! ! RETURN VALUE: !
@ -967,7 +967,7 @@ terminate_stream(bitstream *stream, bwc_stream *const packed_stream)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
void void
release_packed_stream(bwc_stream *stream) release_packed_stream(bwc_span *stream)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE ASSERTIONS: ! ! DEFINE ASSERTIONS: !

View file

@ -104,7 +104,7 @@ can_read(bitstream *const stream, const uint64 length)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: void codestream_write_header(bitstream *const stream, bwc_field *const field) ! ! FUNCTION NAME: void codestream_write_header(bitstream *const stream, bwc_codec *const field) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -116,7 +116,7 @@ can_read(bitstream *const stream, const uint64 length)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! stream bitstream* - Structure used to assemble a bwc bit- ! ! stream bitstream* - Structure used to assemble a bwc bit- !
@ -138,7 +138,8 @@ can_read(bitstream *const stream, const uint64 length)
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static void static void
codestream_write_header(bitstream *const stream, codestream_write_header(bitstream *const stream,
bwc_field *const field) bwc_codec *const field,
bwc_stream *const data)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -155,10 +156,8 @@ codestream_write_header(bitstream *const stream,
\*-----------------------*/ \*-----------------------*/
bwc_gl_ctrl *control; bwc_gl_ctrl *control;
bwc_gl_inf *info; bwc_gl_inf *info;
bwc_tile *tile; bwc_span *aux;
bwc_parameter *parameter; bwc_span *com;
bwc_stream *aux;
bwc_stream *com;
/*-----------------------*\ /*-----------------------*\
! DEFINE ASSERTIONS: ! ! DEFINE ASSERTIONS: !
@ -171,17 +170,13 @@ codestream_write_header(bitstream *const stream,
! structure to temporary variables to make the code more ! ! structure to temporary variables to make the code more !
! readable. ! ! readable. !
\*--------------------------------------------------------*/ \*--------------------------------------------------------*/
info = field->info; info = &field->info;
control = &field->control; control = &field->control;
tile = &field->tile[0]; aux = data->codestream.aux;
com = data->codestream.com;
parameter = &tile->parameter[0];
aux = field->aux;
com = field->com;
Linf = 40 + info->nPar * 25; Linf = 31;
Lctr = 50 + control->nLayers * 4; Lctr = 50 + control->nLayers * 4;
Leoh = info->nPar * control->nTiles * 2 * PREC_BYTE; Leoh = info->nPar * control->nTiles * 2 * PREC_BYTE;
Lcss = control->codestreamSize; Lcss = control->codestreamSize;
@ -195,14 +190,8 @@ codestream_write_header(bitstream *const stream,
emit_symbol(stream, info->nZ, 8); emit_symbol(stream, info->nZ, 8);
emit_symbol(stream, info->nTS, 2); emit_symbol(stream, info->nTS, 2);
emit_symbol(stream, info->nPar, 1); emit_symbol(stream, info->nPar, 1);
emit_symbol(stream, info->precision, 1); emit_symbol(stream, (uint8)info->data_prec, 1);
emit_chunck(stream, (uchar*)info->f_ext, 10); emit_symbol(stream, (uint8)info->codec_prec, 1);
for(p = 0; p < info->nPar; ++p)
{
emit_chunck(stream, (uchar*)parameter[p].info.name, 24);
emit_symbol(stream, parameter[p].info.precision, 1);
}
emit_symbol(stream, SGC, 2); emit_symbol(stream, SGC, 2);
emit_symbol(stream, Lctr, 2); emit_symbol(stream, Lctr, 2);
@ -288,7 +277,7 @@ codestream_write_header(bitstream *const stream,
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar sequence_packets(bwc_field *const field, bwc_field *const field) ! ! FUNCTION NAME: uchar sequence_packets(bwc_codec *const field, bwc_codec *const field) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -299,7 +288,7 @@ codestream_write_header(bitstream *const stream,
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -319,7 +308,7 @@ codestream_write_header(bitstream *const stream,
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static uchar static uchar
sequence_packets(bwc_field *const field, bwc_tile *const tile) sequence_packets(bwc_codec *const field, bwc_tile *const tile)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -348,7 +337,7 @@ sequence_packets(bwc_field *const field, bwc_tile *const tile)
! code more readable. ! ! code more readable. !
\*--------------------------------------------------------*/ \*--------------------------------------------------------*/
control = &field->control; control = &field->control;
info = field->info; info = &field->info;
packet_sequence = tile->packet_sequence; packet_sequence = tile->packet_sequence;
@ -490,7 +479,7 @@ sequence_packets(bwc_field *const field, bwc_tile *const tile)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar sequence_packets(bwc_field *const field, bwc_field *const field) ! ! FUNCTION NAME: uchar sequence_packets(bwc_codec *const field, bwc_codec *const field) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -501,7 +490,7 @@ sequence_packets(bwc_field *const field, bwc_tile *const tile)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -521,7 +510,7 @@ sequence_packets(bwc_field *const field, bwc_tile *const tile)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static void static void
assemble_tile(bwc_field *const field, bwc_tile *const tile, bitstream *const stream) assemble_tile(bwc_codec *const field, bwc_tile *const tile, bitstream *const stream)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -613,8 +602,8 @@ assemble_tile(bwc_field *const field, bwc_tile *const tile, bitstream *const str
! - Patrick Vogler B87D120 V 0.1.0 function created ! ! - Patrick Vogler B87D120 V 0.1.0 function created !
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
bwc_field* bwc_codec*
parse_main_header(bwc_data *const data,bitstream *const stream) parse_main_header(bwc_stream *const data, bitstream *const stream)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -632,18 +621,17 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
uint16 nTS; uint16 nTS;
uint8 index, l; uint8 index, l;
uint8 nPar, p; uint8 nPar, p;
uint8 codec_prec, precision; bwc_precision data_prec, codec_prec;
/*-----------------------*\ /*-----------------------*\
! DEFINE CHAR VARIABLES: ! ! DEFINE CHAR VARIABLES: !
\*-----------------------*/ \*-----------------------*/
char* buffer_char;
char status; char status;
/*-----------------------*\ /*-----------------------*\
! DEFINE STRUCTS: ! ! DEFINE STRUCTS: !
\*-----------------------*/ \*-----------------------*/
bwc_field *field; bwc_codec *field;
bwc_gl_ctrl *control; bwc_gl_ctrl *control;
bwc_gl_inf *info; bwc_gl_inf *info;
@ -653,12 +641,6 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
assert(data); assert(data);
assert(stream); assert(stream);
/*--------------------------------------------------------*\
! Save the data info structure to a temporary variable to !
! make the code more readable. !
\*--------------------------------------------------------*/
info = &data->info;
status = CODESTREAM_OK; status = CODESTREAM_OK;
index = 0; index = 0;
@ -708,41 +690,24 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
break; break;
} }
info->nX = nX = get_symbol(stream, 8); nX = get_symbol(stream, 8);
info->nY = nY = get_symbol(stream, 8); nY = get_symbol(stream, 8);
info->nZ = nZ = get_symbol(stream, 8); nZ = get_symbol(stream, 8);
info->nTS = nTS = (uint16)get_symbol(stream, 2); nTS = (uint16)get_symbol(stream, 2);
info->nPar = nPar = (uint8)get_symbol(stream, 1); nPar = (uint8)get_symbol(stream, 1);
info->precision = codec_prec = (uint8)get_symbol(stream, 1); data_prec = (bwc_precision)get_symbol(stream, 1);
buffer_char = (char*)get_chunck(stream, 10); field = bwc_initialize_field(data_prec, nX, nY, nZ, nTS, nPar);
strncpy(info->f_ext, buffer_char, sizeof(buffer_char)/sizeof(*buffer_char));
free(buffer_char);
for(p = 0; p < nPar; ++p)
{
buffer_char = (char*)get_chunck(stream, 24);
precision = (uint8)get_symbol(stream, 1);
bwc_add_param(data, buffer_char, precision);
free(buffer_char);
}
field = bwc_initialize_field(data);
if(!field) if(!field)
{ {
status |= CODESTREAM_ERROR; status |= CODESTREAM_ERROR;
break; break;
} }
info = &field->info;
/*--------------------------------------------------------*\
! Save the global control and info structure to temporary !
! variables to make the code more readable. !
\*--------------------------------------------------------*/
info = field->info = &data->info;
control = &field->control; control = &field->control;
info->codec_prec = codec_prec = (bwc_precision)get_symbol(stream, 1);
control->codestreamSize = stream->Lmax; control->codestreamSize = stream->Lmax;
status |= CODESTREAM_SGI_READ; status |= CODESTREAM_SGI_READ;
@ -896,7 +861,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
break; break;
} }
data->codestream.aux = calloc(1, sizeof(bwc_stream)); data->codestream.aux = calloc(1, sizeof(bwc_span));
if(!data->codestream.aux) if(!data->codestream.aux)
{ {
// memory allocation error // memory allocation error
@ -934,7 +899,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
break; break;
} }
data->codestream.com = calloc(1, sizeof(bwc_stream)); data->codestream.com = calloc(1, sizeof(bwc_span));
if(!data->codestream.com) if(!data->codestream.com)
{ {
// memory allocation error // memory allocation error
@ -974,7 +939,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
break; break;
} }
if(codec_prec == 8) if(codec_prec == bwc_precision_double)
{ {
/*--------------------------------------------------------*\ /*--------------------------------------------------------*\
! Loop through all tile parameters and... ! ! Loop through all tile parameters and... !
@ -995,7 +960,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
} }
} }
} }
else if(codec_prec == 4) else if(codec_prec == bwc_precision_single)
{ {
/*--------------------------------------------------------*\ /*--------------------------------------------------------*\
! Loop through all tile parameters and... ! ! Loop through all tile parameters and... !
@ -1059,7 +1024,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar sequence_packets(bwc_field *const field, bwc_field *const field) ! ! FUNCTION NAME: uchar sequence_packets(bwc_codec *const field, bwc_codec *const field) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -1070,7 +1035,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -1090,7 +1055,7 @@ parse_main_header(bwc_data *const data,bitstream *const stream)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static uchar static uchar
parse_tile(bwc_field *const field, bitstream *const stream) parse_tile(bwc_codec *const field, bitstream *const stream)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -1240,7 +1205,7 @@ parse_tile(bwc_field *const field, bitstream *const stream)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static uchar static uchar
parse_body(bwc_field *const field, bitstream *const stream) parse_body(bwc_codec *const field, bitstream *const stream)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -1336,7 +1301,7 @@ parse_body(bwc_field *const field, bitstream *const stream)
|| || || ||
\************************************************************************************************************/ \************************************************************************************************************/
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: bwc_stream* assemble_codestream(bwc_field *const field) ! ! FUNCTION NAME: bwc_span* assemble_codestream(bwc_codec *const field) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -1347,14 +1312,14 @@ parse_body(bwc_field *const field, bitstream *const stream)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! RETURN VALUE: ! ! RETURN VALUE: !
! ------------- ! ! ------------- !
! Type Description ! ! Type Description !
! ---- ----------- ! ! ---- ----------- !
! bwc_stream* - Packed stream containing the compressed data set. ! ! bwc_span* - Packed stream containing the compressed data set. !
! ! ! !
! DEVELOPMENT HISTORY: ! ! DEVELOPMENT HISTORY: !
! -------------------- ! ! -------------------- !
@ -1364,8 +1329,8 @@ parse_body(bwc_field *const field, bitstream *const stream)
! 13.06.2019 Patrick Vogler B87D120 V 0.1.0 function created ! ! 13.06.2019 Patrick Vogler B87D120 V 0.1.0 function created !
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
bwc_stream* bwc_span*
assemble_codestream(bwc_field *const field) assemble_codestream(bwc_codec *const field, bwc_stream *const data)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -1378,7 +1343,7 @@ assemble_codestream(bwc_field *const field)
bwc_gl_ctrl *control; bwc_gl_ctrl *control;
bwc_tile *tile; bwc_tile *tile;
bitstream *stream; bitstream *stream;
bwc_stream *packed_stream; bwc_span *packed_stream;
/*-----------------------*\ /*-----------------------*\
! DEFINE ASSERTIONS: ! ! DEFINE ASSERTIONS: !
@ -1424,7 +1389,7 @@ assemble_codestream(bwc_field *const field)
! bytes. ! ! bytes. !
\*--------------------------------------------------------*/ \*--------------------------------------------------------*/
stream = init_stream(NULL, control->codestreamSize, 'c'); stream = init_stream(NULL, control->codestreamSize, 'c');
codestream_write_header(stream, field); codestream_write_header(stream, field, data);
/*--------------------------------------------------------*\ /*--------------------------------------------------------*\
! Walk through the tile structure and assemble the packed ! ! Walk through the tile structure and assemble the packed !
@ -1444,7 +1409,7 @@ assemble_codestream(bwc_field *const field)
emit_symbol(stream, EOC, 2); emit_symbol(stream, EOC, 2);
packed_stream = calloc(1, sizeof(bwc_stream)); packed_stream = calloc(1, sizeof(bwc_span));
if(!packed_stream) if(!packed_stream)
{ {
// memory allocation error // memory allocation error
@ -1463,7 +1428,7 @@ assemble_codestream(bwc_field *const field)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar parse_codestream(bwc_field *const field, bitstream *const stream) ! ! FUNCTION NAME: uchar parse_codestream(bwc_codec *const field, bitstream *const stream) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -1474,7 +1439,7 @@ assemble_codestream(bwc_field *const field)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! stream bitstream* - Structure used to assemble a bwc bit- ! ! stream bitstream* - Structure used to assemble a bwc bit- !
@ -1494,13 +1459,13 @@ assemble_codestream(bwc_field *const field)
! 05.08.2019 Patrick Vogler B87D120 V 0.1.0 function created ! ! 05.08.2019 Patrick Vogler B87D120 V 0.1.0 function created !
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
bwc_field* bwc_codec*
parse_codestream(bwc_data *const data, uint8 const layer) parse_codestream(bwc_stream *const data, uint8 const layer)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE STRUCTS: ! ! DEFINE STRUCTS: !
\*-----------------------*/ \*-----------------------*/
bwc_field *field; bwc_codec *field;
bitstream *stream; bitstream *stream;
/*-----------------------*\ /*-----------------------*\

View file

@ -1421,7 +1421,7 @@ initialize_gain_lut()
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: bwc_float get_dwt_energy_gain(bwc_field *const field, uchar highband_flag, uint16 level) ! ! FUNCTION NAME: bwc_float get_dwt_energy_gain(bwc_codec *const field, uchar highband_flag, uint16 level) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -1434,7 +1434,7 @@ initialize_gain_lut()
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! highband_flag uchar - Defines the subband for which Gb is ! ! highband_flag uchar - Defines the subband for which Gb is !
@ -1459,7 +1459,7 @@ initialize_gain_lut()
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
bwc_float bwc_float
get_dwt_energy_gain(bwc_field *const field, uchar highband_flag, uint16 level) get_dwt_energy_gain(bwc_codec *const field, uchar highband_flag, uint16 level)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -1576,7 +1576,7 @@ get_dwt_energy_gain(bwc_field *const field, uchar highband_flag, uint16 level)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar forward_discrete_wavelet_transform(bwc_field *const field, ! ! FUNCTION NAME: uchar forward_discrete_wavelet_transform(bwc_codec *const field, !
! -------------- bwc_parameter *const parameter) ! ! -------------- bwc_parameter *const parameter) !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -1594,7 +1594,7 @@ get_dwt_energy_gain(bwc_field *const field, uchar highband_flag, uint16 level)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! parameter bwc_parameter* - Structure defining a bwc parameter. ! ! parameter bwc_parameter* - Structure defining a bwc parameter. !
@ -1614,7 +1614,7 @@ get_dwt_energy_gain(bwc_field *const field, uchar highband_flag, uint16 level)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
forward_wavelet_transform(bwc_field *const field, bwc_parameter *const parameter) forward_wavelet_transform(bwc_codec *const field, bwc_parameter *const parameter)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -2117,7 +2117,7 @@ forward_wavelet_transform(bwc_field *const field, bwc_parameter *const parameter
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar inverse_discrete_wavelet_transform(bwc_field *const field, ! ! FUNCTION NAME: uchar inverse_discrete_wavelet_transform(bwc_codec *const field, !
! -------------- bwc_parameter *const parameter) ! ! -------------- bwc_parameter *const parameter) !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -2135,7 +2135,7 @@ forward_wavelet_transform(bwc_field *const field, bwc_parameter *const parameter
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! parameter bwc_parameter* - Structure defining a bwc parameter. ! ! parameter bwc_parameter* - Structure defining a bwc parameter. !
@ -2155,7 +2155,7 @@ forward_wavelet_transform(bwc_field *const field, bwc_parameter *const parameter
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
inverse_wavelet_transform(bwc_field *const field, bwc_parameter *const parameter) inverse_wavelet_transform(bwc_codec *const field, bwc_parameter *const parameter)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !

File diff suppressed because it is too large Load diff

View file

@ -16,7 +16,7 @@
|| ------------ || || ------------ ||
|| || || ||
|| This file describes a set of functions that can be used to de-/encode bwc || || This file describes a set of functions that can be used to de-/encode bwc ||
|| codeblocks described by the bwc_field structure according to the embedded block || || codeblocks described by the bwc_codec structure according to the embedded block ||
|| coding paradigm described by the JPEG 2000 standard. For more information please || || coding paradigm described by the JPEG 2000 standard. For more information please ||
|| refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. || || refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. ||
|| || || ||
@ -2274,7 +2274,7 @@ compute_convex_hull(bwc_encoded_cblk *const encoded_codeblock, double *const mse
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: bwc_encoded_cblk* encode_codeblock(bwc_field *const field, bwc_cblk_access *const access, ! ! FUNCTION NAME: bwc_encoded_cblk* encode_codeblock(bwc_codec *const field, bwc_cblk_access *const access, !
! -------------- bwc_coder_stripe *const codeblock, ! ! -------------- bwc_coder_stripe *const codeblock, !
! const uint64 width, ! ! const uint64 width, !
! const uint64 height, ! ! const uint64 height, !
@ -2307,7 +2307,7 @@ compute_convex_hull(bwc_encoded_cblk *const encoded_codeblock, double *const mse
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static void static void
encode_codeblock(bwc_field *const field, bwc_cblk_access *const access, encode_codeblock(bwc_codec *const field, bwc_cblk_access *const access,
bwc_coder_stripe *const codeblock, bwc_coder_stripe *const codeblock,
const uint64 width, const uint64 width,
const uint64 height, const uint64 height,
@ -2595,7 +2595,7 @@ encode_codeblock(bwc_field *const field, bwc_cblk_access *const access,
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: bwc_encoded_cblk* encode_codeblock(bwc_field *const field, bwc_cblk_access *const access, ! ! FUNCTION NAME: bwc_encoded_cblk* encode_codeblock(bwc_codec *const field, bwc_cblk_access *const access, !
! bwc_coder_stripe *const codeblock, ! ! bwc_coder_stripe *const codeblock, !
! const uint64 width, ! ! const uint64 width, !
! const uint64 height, ! ! const uint64 height, !
@ -2628,7 +2628,7 @@ encode_codeblock(bwc_field *const field, bwc_cblk_access *const access,
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static void static void
decode_codeblock(bwc_field *const field, bwc_cblk_access *const access, decode_codeblock(bwc_codec *const field, bwc_cblk_access *const access,
bwc_coder_stripe *const codeblock, bwc_coder_stripe *const codeblock,
const uint64 width, const uint64 width,
const uint64 height, const uint64 height,
@ -2828,7 +2828,7 @@ decode_codeblock(bwc_field *const field, bwc_cblk_access *const access,
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
t1_encode(bwc_field *const field, bwc_tile *const tile, bwc_parameter *const parameter) t1_encode(bwc_codec *const field, bwc_tile *const tile, bwc_parameter *const parameter)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -3131,7 +3131,7 @@ t1_encode(bwc_field *const field, bwc_tile *const tile, bwc_parameter *const par
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
t1_decode(bwc_field *const field, bwc_tile *const tile, bwc_parameter *const parameter) t1_decode(bwc_codec *const field, bwc_tile *const tile, bwc_parameter *const parameter)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !

View file

@ -16,7 +16,7 @@
|| ------------ || || ------------ ||
|| || || ||
|| This file describes a set of functions that can be used to de-/encode bwc || || This file describes a set of functions that can be used to de-/encode bwc ||
|| codeblocks described by the bwc_field structure according to the embedded block || || codeblocks described by the bwc_codec structure according to the embedded block ||
|| coding paradigm described by the JPEG 2000 standard. For more information please || || coding paradigm described by the JPEG 2000 standard. For more information please ||
|| refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. || || refere to JPEG2000 by D. S. Taubman and M. W. Marcellin. ||
|| || || ||
@ -312,7 +312,7 @@ encode_length(bitstream *const header, bwc_codeblock *const codeblock,
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: void create_quality_layers(bwc_field *const field, bwc_tile *const tile) ! ! FUNCTION NAME: void create_quality_layers(bwc_codec *const field, bwc_tile *const tile) !
! -------------- ! ! -------------- !
! ! ! !
! ! ! !
@ -385,7 +385,7 @@ decode_length(bitstream *const header, bwc_codeblock *const codeblock, int8 cons
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: int64 create_packet(bwc_field *const field, bwc_tile *const tile, ! ! FUNCTION NAME: int64 create_packet(bwc_codec *const field, bwc_tile *const tile, !
! -------------- bwc_resolution *const resolution, ! ! -------------- bwc_resolution *const resolution, !
! uint32 const prec_idx, ! ! uint32 const prec_idx, !
! int8 const q_layer, ! ! int8 const q_layer, !
@ -403,7 +403,7 @@ decode_length(bitstream *const header, bwc_codeblock *const codeblock, int8 cons
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -435,7 +435,7 @@ decode_length(bitstream *const header, bwc_codeblock *const codeblock, int8 cons
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static int32 static int32
create_packet(bwc_field *const field, bwc_tile *const tile, create_packet(bwc_codec *const field, bwc_tile *const tile,
bwc_resolution *const resolution, bwc_resolution *const resolution,
uint32 const prec_idx, uint32 const prec_idx,
int16 const q_layer, int16 const q_layer,
@ -498,7 +498,7 @@ create_packet(bwc_field *const field, bwc_tile *const tile,
if(!est) if(!est)
{ {
packet->body.access = packet->body.access =
packet->body.memory = calloc(packet->body.size, sizeof(bwc_stream)); packet->body.memory = calloc(packet->body.size, sizeof(bwc_span));
if(!packet->body.memory) if(!packet->body.memory)
{ {
// memory allocation error // memory allocation error
@ -706,7 +706,7 @@ create_packet(bwc_field *const field, bwc_tile *const tile,
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar create_packets(bwc_field *const field, bwc_tile *const tile) ! ! FUNCTION NAME: uchar create_packets(bwc_codec *const field, bwc_tile *const tile) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -723,7 +723,7 @@ create_packet(bwc_field *const field, bwc_tile *const tile,
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -743,7 +743,7 @@ create_packet(bwc_field *const field, bwc_tile *const tile,
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static uchar static uchar
create_packets(bwc_field *const field, bwc_tile *const tile) create_packets(bwc_codec *const field, bwc_tile *const tile)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -772,7 +772,7 @@ create_packets(bwc_field *const field, bwc_tile *const tile)
! variables to make the code more readable. ! ! variables to make the code more readable. !
\*--------------------------------------------------------*/ \*--------------------------------------------------------*/
control = &field->control; control = &field->control;
info = field->info; info = &field->info;
/*--------------------------------------------------------*\ /*--------------------------------------------------------*\
! Iterate overall quality layers for every precinct in all ! ! Iterate overall quality layers for every precinct in all !
@ -845,7 +845,7 @@ create_packets(bwc_field *const field, bwc_tile *const tile)
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: int64 create_quality_layer(bwc_field *const field, bwc_tile *const tile, ! ! FUNCTION NAME: int64 create_quality_layer(bwc_codec *const field, bwc_tile *const tile, !
! -------------- uint16 const threshold, ! ! -------------- uint16 const threshold, !
! int16 const q_layer, ! ! int16 const q_layer, !
! uchar const est) ! ! uchar const est) !
@ -860,7 +860,7 @@ create_packets(bwc_field *const field, bwc_tile *const tile)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -888,7 +888,7 @@ create_packets(bwc_field *const field, bwc_tile *const tile)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static int64 static int64
create_quality_layer(bwc_field *const field, bwc_tile *const tile, create_quality_layer(bwc_codec *const field, bwc_tile *const tile,
uint16 const threshold, uint16 const threshold,
int16 const q_layer, int16 const q_layer,
uchar const est) uchar const est)
@ -924,7 +924,7 @@ create_quality_layer(bwc_field *const field, bwc_tile *const tile,
! variables to make the code more readable. ! ! variables to make the code more readable. !
\*--------------------------------------------------------*/ \*--------------------------------------------------------*/
control = &field->control; control = &field->control;
info = field->info; info = &field->info;
for(j = 0, estimated_ql_size = 0; j < info->nPar; ++j) for(j = 0, estimated_ql_size = 0; j < info->nPar; ++j)
{ {
@ -1075,7 +1075,7 @@ create_quality_layer(bwc_field *const field, bwc_tile *const tile,
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: void create_quality_layers(bwc_field *const field, bwc_tile *const tile) ! ! FUNCTION NAME: void create_quality_layers(bwc_codec *const field, bwc_tile *const tile) !
! -------------- ! ! -------------- !
! ! ! !
! ! ! !
@ -1087,7 +1087,7 @@ create_quality_layer(bwc_field *const field, bwc_tile *const tile,
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -1107,7 +1107,7 @@ create_quality_layer(bwc_field *const field, bwc_tile *const tile,
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
static uchar static uchar
create_quality_layers(bwc_field *const field, bwc_tile *const tile) create_quality_layers(bwc_codec *const field, bwc_tile *const tile)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE INT VARIABLES: ! ! DEFINE INT VARIABLES: !
@ -1139,7 +1139,7 @@ create_quality_layers(bwc_field *const field, bwc_tile *const tile)
! temporary variables to make the code more readable. ! ! temporary variables to make the code more readable. !
\*--------------------------------------------------------*/ \*--------------------------------------------------------*/
control = &field->control; control = &field->control;
info = field->info; info = &field->info;
tile_control = &tile->control; tile_control = &tile->control;
tile_info = &tile->info; tile_info = &tile->info;
@ -1255,7 +1255,7 @@ create_quality_layers(bwc_field *const field, bwc_tile *const tile)
|| || || ||
\************************************************************************************************************/ \************************************************************************************************************/
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar t2_encode(bwc_field *const field, bwc_tile *const tile) ! ! FUNCTION NAME: uchar t2_encode(bwc_codec *const field, bwc_tile *const tile) !
! -------------- ! ! -------------- !
! ! ! !
! DESCRIPTION: ! ! DESCRIPTION: !
@ -1269,7 +1269,7 @@ create_quality_layers(bwc_field *const field, bwc_tile *const tile)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -1289,7 +1289,7 @@ create_quality_layers(bwc_field *const field, bwc_tile *const tile)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
t2_encode(bwc_field *const field, bwc_tile *const tile) t2_encode(bwc_codec *const field, bwc_tile *const tile)
{ {
/*-----------------------*\ /*-----------------------*\
! DEFINE ASSERTIONS: ! ! DEFINE ASSERTIONS: !
@ -1319,7 +1319,7 @@ t2_encode(bwc_field *const field, bwc_tile *const tile)
} }
/*----------------------------------------------------------------------------------------------------------*\ /*----------------------------------------------------------------------------------------------------------*\
! FUNCTION NAME: uchar parse_packet(bwc_field *const field, bwc_tile *const tile, ! ! FUNCTION NAME: uchar parse_packet(bwc_codec *const field, bwc_tile *const tile, !
! -------------- bwc_packet *const packet, ! ! -------------- bwc_packet *const packet, !
! uint64 const body_size) ! ! uint64 const body_size) !
! ! ! !
@ -1332,7 +1332,7 @@ t2_encode(bwc_field *const field, bwc_tile *const tile)
! ----------- ! ! ----------- !
! Variable Type Description ! ! Variable Type Description !
! -------- ---- ----------- ! ! -------- ---- ----------- !
! field bwc_field* - Structure defining the compression/ ! ! field bwc_codec* - Structure defining the compression/ !
! decompression stage. ! ! decompression stage. !
! ! ! !
! tile bwc_tile* - Structure defining a bwc tile. ! ! tile bwc_tile* - Structure defining a bwc tile. !
@ -1356,7 +1356,7 @@ t2_encode(bwc_field *const field, bwc_tile *const tile)
! ! ! !
\*----------------------------------------------------------------------------------------------------------*/ \*----------------------------------------------------------------------------------------------------------*/
uchar uchar
parse_packet(bwc_field *const field, bwc_tile *const tile, parse_packet(bwc_codec *const field, bwc_tile *const tile,
bwc_packet *const packet, bwc_packet *const packet,
uint64 const body_size) uint64 const body_size)
{ {