]> Creatis software - gdcm.git/blobdiff - src/gdcmopenjpeg/libopenjpeg/tcd.h
ENH: sometime you need to hold your compiler hand to guide him...
[gdcm.git] / src / gdcmopenjpeg / libopenjpeg / tcd.h
index 6f94de616d76c526c9d5a81b4618c56c38b9eb5f..dfa7b15a79f29f3087018ecc73de73c115bdf93c 100644 (file)
-/*\r
- * Copyright (c) 2001-2003, David Janssens\r
- * Copyright (c) 2002-2003, Yannick Verschueren\r
- * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe\r
- * Copyright (c) 2005, HervĂ© Drolon, FreeImage Team\r
- * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
- * POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-#ifndef __TCD_H\r
-#define __TCD_H\r
-/**\r
-@file tcd.h\r
-@brief Implementation of a tile coder/decoder (TCD)\r
-\r
-The functions in TCD.C have for goal to encode or decode each tile independently from\r
-each other. The functions in TCD.C are used by some function in J2K.C.\r
-*/\r
-\r
-/** @defgroup TCD TCD - Implementation of a tile coder/decoder */\r
-/*@{*/\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_seg {\r
-  int numpasses;\r
-  int len;\r
-  unsigned char *data;\r
-  int maxpasses;\r
-  int numnewpasses;\r
-  int newlen;\r
-} opj_tcd_seg_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_pass {\r
-  int rate;\r
-  double distortiondec;\r
-  int term, len;\r
-} opj_tcd_pass_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_layer {\r
-  int numpasses;    /* Number of passes in the layer */\r
-  int len;      /* len of information */\r
-  double disto;      /* add for index (Cfr. Marcela) */\r
-  unsigned char *data;    /* data */\r
-} opj_tcd_layer_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_cblk {\r
-  int x0, y0, x1, y1;    /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */\r
-  int numbps;\r
-  int numlenbits;\r
-  int len;      /* length */\r
-  int numpasses;    /* number of pass already done for the code-blocks */\r
-  int numnewpasses;    /* number of pass added to the code-blocks */\r
-  int numsegs;      /* number of segments */\r
-  opj_tcd_seg_t segs[100];    /* segments informations */\r
-  unsigned char data[8192];  /* Data */\r
-  int numpassesinlayers;  /* number of passes in the layer */\r
-  opj_tcd_layer_t layers[100];  /* layer information */\r
-  int totalpasses;    /* total number of passes */\r
-  opj_tcd_pass_t passes[100];  /* information about the passes */\r
-} opj_tcd_cblk_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_precinct {\r
-  int x0, y0, x1, y1;    /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */\r
-  int cw, ch;      /* number of precinct in width and heigth */\r
-  opj_tcd_cblk_t *cblks;    /* code-blocks informations */\r
-  opj_tgt_tree_t *incltree;    /* inclusion tree */\r
-  opj_tgt_tree_t *imsbtree;    /* IMSB tree */\r
-} opj_tcd_precinct_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_band {\r
-  int x0, y0, x1, y1;    /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */\r
-  int bandno;\r
-  opj_tcd_precinct_t *precincts;  /* precinct information */\r
-  int numbps;\r
-  float stepsize;\r
-} opj_tcd_band_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_resolution {\r
-  int x0, y0, x1, y1;    /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */\r
-  int pw, ph;\r
-  int numbands;      /* number sub-band for the resolution level */\r
-  opj_tcd_band_t bands[3];    /* subband information */\r
-} opj_tcd_resolution_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_tilecomp {\r
-  int x0, y0, x1, y1;    /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */\r
-  int numresolutions;    /* number of resolutions level */\r
-  opj_tcd_resolution_t *resolutions;  /* resolutions information */\r
-  int *data;      /* data of the component */\r
-  int nbpix;      /* add fixed_quality */\r
-} opj_tcd_tilecomp_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_tile {\r
-  int x0, y0, x1, y1;    /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */\r
-  int numcomps;      /* number of components in tile */\r
-  opj_tcd_tilecomp_t *comps;  /* Components information */\r
-  int nbpix;      /* add fixed_quality */\r
-  double distotile;    /* add fixed_quality */\r
-  double distolayer[100];  /* add fixed_quality */\r
-} opj_tcd_tile_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_image {\r
-  int tw, th;      /* number of tiles in width and heigth */\r
-  opj_tcd_tile_t *tiles;    /* Tiles information */\r
-} opj_tcd_image_t;\r
-\r
-/**\r
-Tile coder/decoder\r
-*/\r
-typedef struct opj_tcd {\r
-  /** codec context */\r
-  opj_common_ptr cinfo;\r
-\r
-  /** info on each image tile */\r
-  opj_tcd_image_t *tcd_image;\r
-  /** image */\r
-  opj_image_t *image;\r
-  /** coding parameters */\r
-  opj_cp_t *cp;\r
-  /** pointer to the current encoded/decoded tile */\r
-  opj_tcd_tile_t *tcd_tile;\r
-  /** coding/decoding parameters common to all tiles */\r
-  opj_tcp_t *tcp;\r
-  /** current encoded/decoded tile */\r
-  int tcd_tileno;\r
-  /**@name working variables */\r
-  /*@{*/\r
-  opj_tcd_tile_t *tile;\r
-  opj_tcd_tilecomp_t *tilec;\r
-  opj_tcd_resolution_t *res;\r
-  opj_tcd_band_t *band;\r
-  opj_tcd_precinct_t *prc;\r
-  opj_tcd_cblk_t *cblk;\r
-  /*@}*/\r
-} opj_tcd_t;\r
-\r
-/** @name Exported functions */\r
-/*@{*/\r
-/* ----------------------------------------------------------------------- */\r
-\r
-/**\r
-Dump the content of a tcd structure\r
-*/\r
-void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);\r
-/**\r
-Create a new TCD handle\r
-@param cinfo Codec context info\r
-@return Returns a new TCD handle if successful returns NULL otherwise\r
-*/\r
-opj_tcd_t* tcd_create(opj_common_ptr cinfo);\r
-/**\r
-Destroy a previously created TCD handle\r
-@param tcd TCD handle to destroy\r
-*/\r
-void tcd_destroy(opj_tcd_t *tcd);\r
-/**\r
-Initialize the tile coder (allocate the memory)\r
-@param tcd TCD handle\r
-@param image Raw image\r
-@param cp Coding parameters\r
-@param curtileno Number that identifies the tile that will be encoded\r
-*/\r
-void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);\r
-/**\r
-Free the memory allocated for encoding\r
-@param tcd TCD handle\r
-*/\r
-void tcd_free_encode(opj_tcd_t *tcd);\r
-/**\r
-Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)\r
-@param tcd TCD handle\r
-@param image Raw image\r
-@param cp Coding parameters\r
-@param curtileno Number that identifies the tile that will be encoded\r
-*/\r
-void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);\r
-/**\r
-Initialize the tile decoder\r
-@param tcd TCD handle\r
-@param image Raw image\r
-@param cp Coding parameters\r
-*/\r
-void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp);\r
-void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final);\r
-void tcd_rateallocate_fixed(opj_tcd_t *tcd);\r
-void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final);\r
-bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_image_info_t * image_info);\r
-/**\r
-Encode a tile from the raw image into a buffer\r
-@param tcd TCD handle\r
-@param tileno Number that identifies one of the tiles to be encoded\r
-@param dest Destination buffer\r
-@param len Length of destination buffer\r
-@param image_info Creation of index file\r
-@return \r
-*/\r
-int tcd_encode_tile(opj_tcd_t *tcd, int tileno, unsigned char *dest, int len, opj_image_info_t * image_info);\r
-/**\r
-Decode a tile from a buffer into a raw image\r
-@param tcd TCD handle\r
-@param src Source buffer\r
-@param len Length of source buffer\r
-@param tileno Number that identifies one of the tiles to be decoded\r
-*/\r
-bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno);\r
-/**\r
-Free the memory allocated for decoding\r
-@param tcd TCD handle\r
-*/\r
-void tcd_free_decode(opj_tcd_t *tcd);\r
-\r
-/* ----------------------------------------------------------------------- */\r
-/*@}*/\r
-\r
-/*@}*/\r
-\r
-#endif /* __TCD_H */\r
+/*
+ * Copyright (c) 2001-2003, David Janssens
+ * Copyright (c) 2002-2003, Yannick Verschueren
+ * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe
+ * Copyright (c) 2005, HervĂ© Drolon, FreeImage Team
+ * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef __TCD_H
+#define __TCD_H
+/**
+@file tcd.h
+@brief Implementation of a tile coder/decoder (TCD)
+
+The functions in TCD.C have for goal to encode or decode each tile independently from
+each other. The functions in TCD.C are used by some function in J2K.C.
+*/
+
+/** @defgroup TCD TCD - Implementation of a tile coder/decoder */
+/*@{*/
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_seg {
+  int numpasses;
+  int len;
+  unsigned char *data;
+  int maxpasses;
+  int numnewpasses;
+  int newlen;
+} opj_tcd_seg_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_pass {
+  int rate;
+  double distortiondec;
+  int term, len;
+} opj_tcd_pass_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_layer {
+  int numpasses;    /* Number of passes in the layer */
+  int len;      /* len of information */
+  double disto;      /* add for index (Cfr. Marcela) */
+  unsigned char *data;    /* data */
+} opj_tcd_layer_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_cblk {
+  int x0, y0, x1, y1;    /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
+  int numbps;
+  int numlenbits;
+  int len;      /* length */
+  int numpasses;    /* number of pass already done for the code-blocks */
+  int numnewpasses;    /* number of pass added to the code-blocks */
+  int numsegs;      /* number of segments */
+  opj_tcd_seg_t segs[100];    /* segments informations */
+  unsigned char data[8192];  /* Data */
+  int numpassesinlayers;  /* number of passes in the layer */
+  opj_tcd_layer_t layers[100];  /* layer information */
+  int totalpasses;    /* total number of passes */
+  opj_tcd_pass_t passes[100];  /* information about the passes */
+} opj_tcd_cblk_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_precinct {
+  int x0, y0, x1, y1;    /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
+  int cw, ch;      /* number of precinct in width and heigth */
+  opj_tcd_cblk_t *cblks;    /* code-blocks informations */
+  opj_tgt_tree_t *incltree;    /* inclusion tree */
+  opj_tgt_tree_t *imsbtree;    /* IMSB tree */
+} opj_tcd_precinct_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_band {
+  int x0, y0, x1, y1;    /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
+  int bandno;
+  opj_tcd_precinct_t *precincts;  /* precinct information */
+  int numbps;
+  float stepsize;
+} opj_tcd_band_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_resolution {
+  int x0, y0, x1, y1;    /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
+  int pw, ph;
+  int numbands;      /* number sub-band for the resolution level */
+  opj_tcd_band_t bands[3];    /* subband information */
+} opj_tcd_resolution_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_tilecomp {
+  int x0, y0, x1, y1;    /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
+  int numresolutions;    /* number of resolutions level */
+  opj_tcd_resolution_t *resolutions;  /* resolutions information */
+  int *data;      /* data of the component */
+  int nbpix;      /* add fixed_quality */
+} opj_tcd_tilecomp_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_tile {
+  int x0, y0, x1, y1;    /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
+  int numcomps;      /* number of components in tile */
+  opj_tcd_tilecomp_t *comps;  /* Components information */
+  int nbpix;      /* add fixed_quality */
+  double distotile;    /* add fixed_quality */
+  double distolayer[100];  /* add fixed_quality */
+} opj_tcd_tile_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_image {
+  int tw, th;      /* number of tiles in width and heigth */
+  opj_tcd_tile_t *tiles;    /* Tiles information */
+} opj_tcd_image_t;
+
+/**
+Tile coder/decoder
+*/
+typedef struct opj_tcd {
+  /** codec context */
+  opj_common_ptr cinfo;
+
+  /** info on each image tile */
+  opj_tcd_image_t *tcd_image;
+  /** image */
+  opj_image_t *image;
+  /** coding parameters */
+  opj_cp_t *cp;
+  /** pointer to the current encoded/decoded tile */
+  opj_tcd_tile_t *tcd_tile;
+  /** coding/decoding parameters common to all tiles */
+  opj_tcp_t *tcp;
+  /** current encoded/decoded tile */
+  int tcd_tileno;
+  /**@name working variables */
+  /*@{*/
+  opj_tcd_tile_t *tile;
+  opj_tcd_tilecomp_t *tilec;
+  opj_tcd_resolution_t *res;
+  opj_tcd_band_t *band;
+  opj_tcd_precinct_t *prc;
+  opj_tcd_cblk_t *cblk;
+  /*@}*/
+} opj_tcd_t;
+
+/** @name Exported functions */
+/*@{*/
+/* ----------------------------------------------------------------------- */
+
+/**
+Dump the content of a tcd structure
+*/
+void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);
+/**
+Create a new TCD handle
+@param cinfo Codec context info
+@return Returns a new TCD handle if successful returns NULL otherwise
+*/
+opj_tcd_t* tcd_create(opj_common_ptr cinfo);
+/**
+Destroy a previously created TCD handle
+@param tcd TCD handle to destroy
+*/
+void tcd_destroy(opj_tcd_t *tcd);
+/**
+Initialize the tile coder (allocate the memory)
+@param tcd TCD handle
+@param image Raw image
+@param cp Coding parameters
+@param curtileno Number that identifies the tile that will be encoded
+*/
+void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);
+/**
+Free the memory allocated for encoding
+@param tcd TCD handle
+*/
+void tcd_free_encode(opj_tcd_t *tcd);
+/**
+Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
+@param tcd TCD handle
+@param image Raw image
+@param cp Coding parameters
+@param curtileno Number that identifies the tile that will be encoded
+*/
+void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);
+/**
+Initialize the tile decoder
+@param tcd TCD handle
+@param image Raw image
+@param cp Coding parameters
+*/
+void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp);
+void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final);
+void tcd_rateallocate_fixed(opj_tcd_t *tcd);
+void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final);
+bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_image_info_t * image_info);
+/**
+Encode a tile from the raw image into a buffer
+@param tcd TCD handle
+@param tileno Number that identifies one of the tiles to be encoded
+@param dest Destination buffer
+@param len Length of destination buffer
+@param image_info Creation of index file
+@return 
+*/
+int tcd_encode_tile(opj_tcd_t *tcd, int tileno, unsigned char *dest, int len, opj_image_info_t * image_info);
+/**
+Decode a tile from a buffer into a raw image
+@param tcd TCD handle
+@param src Source buffer
+@param len Length of source buffer
+@param tileno Number that identifies one of the tiles to be decoded
+*/
+bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno);
+/**
+Free the memory allocated for decoding
+@param tcd TCD handle
+*/
+void tcd_free_decode(opj_tcd_t *tcd);
+
+/* ----------------------------------------------------------------------- */
+/*@}*/
+
+/*@}*/
+
+#endif /* __TCD_H */