summaryrefslogtreecommitdiff
path: root/indexer_JPIP/j2k.h
diff options
context:
space:
mode:
authorno_author <no_author@no_author>2005-11-08 17:40:41 +0000
committerno_author <no_author@no_author>2005-11-08 17:40:41 +0000
commit220a21bd01a1fcec4f39a005c496d24f85bbd0dd (patch)
tree9969dbf3c0fba0f9c576dbef6bae2336e4a854ad /indexer_JPIP/j2k.h
parent34a4901b8deedafa18fa433d2b5fe311343457d8 (diff)
This commit was manufactured by cvs2svn to create tag 'start'.start
Diffstat (limited to 'indexer_JPIP/j2k.h')
-rw-r--r--indexer_JPIP/j2k.h222
1 files changed, 222 insertions, 0 deletions
diff --git a/indexer_JPIP/j2k.h b/indexer_JPIP/j2k.h
new file mode 100644
index 00000000..e899fae3
--- /dev/null
+++ b/indexer_JPIP/j2k.h
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2001-2002, David Janssens
+ * Copyright (c) 2003, Yannick Verschueren
+ * Copyright (c) 2003, 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.
+ */
+
+#define VERSION "0.0.8"
+
+#ifdef WIN32
+#ifdef LIBJ2K_EXPORTS
+#define LIBJ2K_API __declspec(dllexport)
+#else
+#define LIBJ2K_API __declspec(dllimport)
+#endif
+#else
+#define LIBJ2K_API
+#endif
+
+#ifndef __J2K_H
+#define __J2K_H
+
+#define J2K_MAXRLVLS 33
+#define J2K_MAXBANDS (3*J2K_MAXRLVLS+1)
+
+#define J2K_CP_CSTY_PRT 0x01
+#define J2K_CP_CSTY_SOP 0x02
+#define J2K_CP_CSTY_EPH 0x04
+#define J2K_CCP_CSTY_PRT 0x01
+#define J2K_CCP_CBLKSTY_LAZY 0x01
+#define J2K_CCP_CBLKSTY_RESET 0x02
+#define J2K_CCP_CBLKSTY_TERMALL 0x04
+#define J2K_CCP_CBLKSTY_VSC 0x08
+#define J2K_CCP_CBLKSTY_PTERM 0x10
+#define J2K_CCP_CBLKSTY_SEGSYM 0x20
+#define J2K_CCP_QNTSTY_NOQNT 0
+#define J2K_CCP_QNTSTY_SIQNT 1
+#define J2K_CCP_QNTSTY_SEQNT 2
+
+typedef struct
+{
+ int dx, dy; // XRsiz, YRsiz
+ int prec; // precision
+ int bpp; // deapth of image in bits
+ int sgnd; // signed
+ int *data; // image-component data
+} j2k_comp_t;
+
+typedef struct {
+ int x0, y0; // XOsiz, YOsiz
+ int x1, y1; // Xsiz, Ysiz
+ int numcomps; // number of components
+ int index_on; // 0 = no index || 1 = index
+ //int PPT;
+ j2k_comp_t *comps; // image-components
+} j2k_image_t;
+
+typedef struct {
+ int expn; // exponent
+ int mant; // mantissa
+} j2k_stepsize_t;
+
+typedef struct {
+ int csty; // coding style
+ int numresolutions; // number of resolutions
+ int cblkw; // width of code-blocks
+ int cblkh; // height of code-blocks
+ int cblksty; // code-block coding style
+ int qmfbid; // discrete wavelet transform identifier
+ int qntsty; // quantisation style
+ j2k_stepsize_t stepsizes[J2K_MAXBANDS]; // stepsizes used for quantisation
+ int numgbits; // number of guard bits
+ int roishift; // Region Of Interest shift
+ int prcw[J2K_MAXRLVLS]; // Precinct width
+ int prch[J2K_MAXRLVLS]; // Precinct height
+} j2k_tccp_t;
+
+typedef struct {
+ int resno0, compno0;
+ int layno1, resno1, compno1;
+ int prg;
+ int tile;
+ char progorder[4];
+} j2k_poc_t;
+
+typedef struct {
+ int csty; // coding style
+ int prg; // progression order
+ int numlayers; // number of layers
+ int mct; // multi-component transform identifier
+ int rates[100]; // rates of layers
+ int numpocs; // number of progression order changes
+ j2k_poc_t pocs[32]; // progression order changes
+ j2k_tccp_t *tccps; // tile-component coding parameters
+} j2k_tcp_t;
+
+typedef struct {
+ int tx0, ty0; // XTOsiz, YTOsiz
+ int tdx, tdy; // XTsiz, YTsiz
+ int tw, th;
+ j2k_tcp_t *tcps; // tile coding parameters
+} j2k_cp_t;
+
+typedef struct {
+ int len;
+ int len_header;
+ int offset;
+} info_layer_t;
+
+typedef struct {
+ info_layer_t *layer;
+} info_prec_t;
+
+typedef struct {
+ info_prec_t *prec;
+} info_reso_t;
+
+typedef struct {
+ info_reso_t *reso;
+} info_compo_t;
+
+typedef struct {
+ int num_tile; // Number of Tile
+ int start_pos; // Start position
+ int end_header; // End position of the header
+ int end_pos; // End position
+ int pw, ph; // number of precinct by tile
+ int num_packet; // number of packet in the tile
+ info_compo_t *compo; // component [packet]
+} info_tile_t; // index struct
+
+typedef struct {
+ int type; // type of marker [SIZ, QCD, POC, PPM, CRG] appearing only once
+ int start_pos; // Start position of the marker
+ int len; // Length of the marker
+} info_marker_t; // index struct
+
+typedef struct{
+ info_marker_t *COD;
+ int num_COD;
+ info_marker_t *COC;
+ int num_COC;
+ info_marker_t *RGN;
+ int num_RGN;
+ info_marker_t *QCC;
+ int num_QCC;
+ info_marker_t *TLM;
+ int num_TLM;
+ info_marker_t *PLM;
+ int num_PLM;
+ info_marker_t *PPM;
+ int num_PPM;
+ info_marker_t *COM;
+ int num_COM;
+} info_marker_mul_t; // index struct
+
+typedef struct {
+ int index_on;
+ int num; // numero of packet
+ int index_write; // writing the packet inthe index with t2_encode_packets
+ int Im_w, Im_h; // Image width and Height
+ int Prog; // progression order
+ int Tile_x, Tile_y; // Number of Tile in X and Y
+ int tw, th;
+ int Comp; // Component numbers
+ int Layer; // number of layer
+ int Decomposition; // number of decomposition
+ int pw, ph; // nombre precinct in X and Y
+ int pdx, pdy; // size of precinct in X and Y
+ int Main_head_end; // Main header position
+ int codestream_size; // codestream's size
+ info_tile_t *tile; // information concerning tiles inside image
+ info_marker_t *marker; // information concerning markers inside image [only one apparition]
+ info_marker_mul_t marker_mul; // information concerning markers inside image [multiple apparition]
+ int num_marker; // number of marker
+ int num_packet_max; // MAximum number of packet
+} info_image_t; // index struct
+
+
+
+/*
+ * Encode an image into a JPEG-2000 codestream
+ * i: image to encode
+ * cp: coding parameters
+ * dest: destination buffer
+ * len: length of destination buffer
+ * index : index file name
+ */
+LIBJ2K_API int j2k_encode(j2k_image_t *i, j2k_cp_t *cp,char *outfile, int len,char *index);
+
+//LIBJ2K_API int j2k_encode(j2k_image_t *i, j2k_cp_t *cp,unsigned char *dest, int len);
+/*
+ * Decode an image from a JPEG-2000 codestream
+ * src: source buffer
+ * len: length of source buffer
+ * i: decode image
+ * cp: coding parameters that were used to encode the image
+ */
+LIBJ2K_API int j2k_decode(unsigned char *src, int len, j2k_image_t **i, j2k_cp_t **cp);
+
+#endif