gdcm_j2k.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
00003  * Copyright (c) 2002-2007, Professor Benoit Macq
00004  * Copyright (c) 2001-2003, David Janssens
00005  * Copyright (c) 2002-2003, Yannick Verschueren
00006  * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
00007  * Copyright (c) 2005, Herve Drolon, FreeImage Team
00008  * Copyright (c) 2006-2007, Parvatha Elangovan
00009  * All rights reserved.
00010  *
00011  * Redistribution and use in source and binary forms, with or without
00012  * modification, are permitted provided that the following conditions
00013  * are met:
00014  * 1. Redistributions of source code must retain the above copyright
00015  *    notice, this list of conditions and the following disclaimer.
00016  * 2. Redistributions in binary form must reproduce the above copyright
00017  *    notice, this list of conditions and the following disclaimer in the
00018  *    documentation and/or other materials provided with the distribution.
00019  *
00020  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
00021  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00022  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00023  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00024  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00025  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00026  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00027  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00028  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00029  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00030  * POSSIBILITY OF SUCH DAMAGE.
00031  */
00032 #ifndef __J2K_H
00033 #define __J2K_H
00034 
00043 
00044 #define J2K_CP_CSTY_PRT 0x01
00045 #define J2K_CP_CSTY_SOP 0x02
00046 #define J2K_CP_CSTY_EPH 0x04
00047 #define J2K_CCP_CSTY_PRT 0x01
00048 #define J2K_CCP_CBLKSTY_LAZY 0x01
00049 #define J2K_CCP_CBLKSTY_RESET 0x02
00050 #define J2K_CCP_CBLKSTY_TERMALL 0x04
00051 #define J2K_CCP_CBLKSTY_VSC 0x08
00052 #define J2K_CCP_CBLKSTY_PTERM 0x10
00053 #define J2K_CCP_CBLKSTY_SEGSYM 0x20
00054 #define J2K_CCP_QNTSTY_NOQNT 0
00055 #define J2K_CCP_QNTSTY_SIQNT 1
00056 #define J2K_CCP_QNTSTY_SEQNT 2
00057 
00058 /* ----------------------------------------------------------------------- */
00059 
00060 #define J2K_MS_SOC 0xff4f 
00061 #define J2K_MS_SOT 0xff90 
00062 #define J2K_MS_SOD 0xff93 
00063 #define J2K_MS_EOC 0xffd9 
00064 #define J2K_MS_SIZ 0xff51 
00065 #define J2K_MS_COD 0xff52 
00066 #define J2K_MS_COC 0xff53 
00067 #define J2K_MS_RGN 0xff5e 
00068 #define J2K_MS_QCD 0xff5c 
00069 #define J2K_MS_QCC 0xff5d 
00070 #define J2K_MS_POC 0xff5f 
00071 #define J2K_MS_TLM 0xff55 
00072 #define J2K_MS_PLM 0xff57 
00073 #define J2K_MS_PLT 0xff58 
00074 #define J2K_MS_PPM 0xff60 
00075 #define J2K_MS_PPT 0xff61 
00076 #define J2K_MS_SOP 0xff91 
00077 #define J2K_MS_EPH 0xff92 
00078 #define J2K_MS_CRG 0xff63 
00079 #define J2K_MS_COM 0xff64 
00080 /* UniPG>> */
00081 #ifdef USE_JPWL
00082 #define J2K_MS_EPC 0xff68 
00083 #define J2K_MS_EPB 0xff66 
00084 #define J2K_MS_ESD 0xff67 
00085 #define J2K_MS_RED 0xff69 
00086 #endif /* USE_JPWL */
00087 #ifdef USE_JPSEC
00088 #define J2K_MS_SEC 0xff65    
00089 #define J2K_MS_INSEC 0xff94  
00090 #endif /* USE_JPSEC */
00091 /* <<UniPG */
00092 
00093 
00094 /* ----------------------------------------------------------------------- */
00095 
00100 typedef enum J2K_STATUS {
00101   J2K_STATE_MHSOC  = 0x0001, 
00102   J2K_STATE_MHSIZ  = 0x0002, 
00103   J2K_STATE_MH     = 0x0004, 
00104   J2K_STATE_TPHSOT = 0x0008, 
00105   J2K_STATE_TPH    = 0x0010, 
00106   J2K_STATE_MT     = 0x0020, 
00107   J2K_STATE_NEOC   = 0x0040, 
00108   J2K_STATE_ERR    = 0x0080  
00109 } J2K_STATUS;
00110 
00111 /* ----------------------------------------------------------------------- */
00112 
00116 typedef enum T2_MODE {
00117   THRESH_CALC = 0,  
00118   FINAL_PASS = 1    
00119 }J2K_T2_MODE;
00120 
00124 typedef struct opj_stepsize {
00126   int expn;
00128   int mant;
00129 } opj_stepsize_t;
00130 
00134 typedef struct opj_tccp {
00136   int csty;
00138   int numresolutions;
00140   int cblkw;
00142   int cblkh;
00144   int cblksty;
00146   int qmfbid;
00148   int qntsty;
00150   opj_stepsize_t stepsizes[J2K_MAXBANDS];
00152   int numgbits;
00154   int roishift;
00156   int prcw[J2K_MAXRLVLS];
00158   int prch[J2K_MAXRLVLS]; 
00159 } opj_tccp_t;
00160 
00166 typedef struct opj_tcp {
00168   int first;
00170   int csty;
00172   OPJ_PROG_ORDER prg;
00174   int numlayers;
00176   int mct;
00178   float rates[100];
00180   int numpocs;
00182   int POC;
00184   opj_poc_t pocs[32];
00186   unsigned char *ppt_data;
00188   unsigned char *ppt_data_first;
00190   int ppt;
00192   int ppt_store;
00194   int ppt_len;
00196   float distoratio[100];
00198   opj_tccp_t *tccps;
00199 } opj_tcp_t;
00200 
00204 typedef struct opj_cp {
00206   OPJ_CINEMA_MODE cinema;
00208   int max_comp_size;
00210   int img_size;
00212   OPJ_RSIZ_CAPABILITIES rsiz;
00214   char tp_on;
00216   char tp_flag;
00218   int tp_pos;
00220   int disto_alloc;
00222   int fixed_alloc;
00224   int fixed_quality;
00226   int reduce;
00228   int layer;
00230   OPJ_LIMIT_DECODING limit_decoding;
00232   int tx0;
00234   int ty0;
00236   int tdx;
00238   int tdy;
00240   char *comment;
00242   int tw;
00244   int th;
00246   int *tileno;
00248   int tileno_size;
00250   unsigned char *ppm_data;
00252   unsigned char *ppm_data_first;
00254   int ppm;
00256   int ppm_store;
00258   int ppm_previous;
00260   int ppm_len;
00262   opj_tcp_t *tcps;
00264   int *matrice;
00265 /* UniPG>> */
00266 #ifdef USE_JPWL
00267 
00268   bool epc_on;
00270   bool epb_on;
00272   bool esd_on;
00274   bool info_on;
00276   bool red_on;
00278   int hprot_MH;
00280   int hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS];
00282   int hprot_TPH[JPWL_MAX_NO_TILESPECS];
00284   int pprot_tileno[JPWL_MAX_NO_PACKSPECS];
00286   int pprot_packno[JPWL_MAX_NO_PACKSPECS];
00288   int pprot[JPWL_MAX_NO_PACKSPECS];
00290   int sens_size;
00292   int sens_addr;
00294   int sens_range;
00296   int sens_MH;
00298   int sens_TPH_tileno[JPWL_MAX_NO_TILESPECS];
00300   int sens_TPH[JPWL_MAX_NO_TILESPECS];
00302   bool correct;
00304   int exp_comps;
00306   int max_tiles;
00307 #endif /* USE_JPWL */
00308 /* <<UniPG */
00309 } opj_cp_t;
00310 
00314 typedef struct opj_j2k {
00316   opj_common_ptr cinfo;
00317 
00319   int state;
00321   int curtileno;
00323   int tp_num;
00325   int cur_tp_num;
00327   int *cur_totnum_tp;
00332   int tlm_start;
00335   int totnum_tp;  
00340   unsigned char *eot;
00345   int sot_start;
00346   int sod_start;
00351   int pos_correction;
00353   unsigned char **tile_data;
00355   int *tile_len;
00360   opj_tcp_t *default_tcp;
00362   opj_image_t *image;
00364   opj_cp_t *cp;
00366   opj_codestream_info_t *cstr_info;
00368   opj_cio_t *cio;
00369 } opj_j2k_t;
00370 
00373 /* ----------------------------------------------------------------------- */
00379 opj_j2k_t* j2k_create_decompress(opj_common_ptr cinfo);
00384 void j2k_destroy_decompress(opj_j2k_t *j2k);
00391 void j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters);
00399 opj_image_t* j2k_decode(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestream_info_t *cstr_info);
00407 opj_image_t* j2k_decode_jpt_stream(opj_j2k_t *j2k, opj_cio_t *cio, opj_codestream_info_t *cstr_info);
00413 opj_j2k_t* j2k_create_compress(opj_common_ptr cinfo);
00418 void j2k_destroy_compress(opj_j2k_t *j2k);
00426 void j2k_setup_encoder(opj_j2k_t *j2k, opj_cparameters_t *parameters, opj_image_t *image);
00430 char *j2k_convert_progression_order(OPJ_PROG_ORDER prg_order);
00439 bool j2k_encode(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image, opj_codestream_info_t *cstr_info);
00440 
00441 /* ----------------------------------------------------------------------- */
00445 
00446 #endif /* __J2K_H */

Generated on Tue Mar 9 22:40:37 2010 for GDCM by doxygen 1.6.3
SourceForge.net Logo