]> Creatis software - gdcm.git/blob - src/gdcmopenjpeg/libopenjpeg/t2.h
ENH: Huge update to openjpeg 1.0 (actually more CVS)...
[gdcm.git] / src / gdcmopenjpeg / libopenjpeg / t2.h
1 /*\r
2  * Copyright (c) 2001-2003, David Janssens\r
3  * Copyright (c) 2002-2003, Yannick Verschueren\r
4  * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe\r
5  * Copyright (c) 2005, HervĂ© Drolon, FreeImage Team\r
6  * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium\r
7  * All rights reserved.\r
8  *\r
9  * Redistribution and use in source and binary forms, with or without\r
10  * modification, are permitted provided that the following conditions\r
11  * are met:\r
12  * 1. Redistributions of source code must retain the above copyright\r
13  *    notice, this list of conditions and the following disclaimer.\r
14  * 2. Redistributions in binary form must reproduce the above copyright\r
15  *    notice, this list of conditions and the following disclaimer in the\r
16  *    documentation and/or other materials provided with the distribution.\r
17  *\r
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
28  * POSSIBILITY OF SUCH DAMAGE.\r
29  */\r
30 #ifndef __T2_H\r
31 #define __T2_H\r
32 /**\r
33 @file t2.h\r
34 @brief Implementation of a tier-2 coding (packetization of code-block data) (T2)\r
35 \r
36 */\r
37 \r
38 /** @defgroup T2 T2 - Implementation of a tier-2 coding */\r
39 /*@{*/\r
40 \r
41 /**\r
42 Tier-2 coding\r
43 */\r
44 typedef struct opj_t2 {\r
45   /** codec context */\r
46   opj_common_ptr cinfo;\r
47 \r
48   /** Encoding: pointer to the src image. Decoding: pointer to the dst image. */\r
49   opj_image_t *image;\r
50   /** pointer to the image coding parameters */\r
51   opj_cp_t *cp;\r
52 } opj_t2_t;\r
53 \r
54 /** @name Exported functions */\r
55 /*@{*/\r
56 /* ----------------------------------------------------------------------- */\r
57 \r
58 /**\r
59 Encode the packets of a tile to a destination buffer\r
60 @param t2 T2 handle\r
61 @param tileno number of the tile encoded\r
62 @param tile the tile for which to write the packets\r
63 @param maxlayers maximum number of layers\r
64 @param dest the destination buffer\r
65 @param len the length of the destination buffer\r
66 @param image_info structure to create an index file\r
67 */\r
68 int t2_encode_packets(opj_t2_t* t2, int tileno, opj_tcd_tile_t *tile, int maxlayers, unsigned char *dest, int len, opj_image_info_t *image_info);\r
69 \r
70 /**\r
71 Decode the packets of a tile from a source buffer\r
72 @param t2 T2 handle\r
73 @param src the source buffer\r
74 @param len length of the source buffer\r
75 @param tileno number that identifies the tile for which to decode the packets\r
76 @param tile tile for which to decode the packets\r
77  */\r
78 int t2_decode_packets(opj_t2_t *t2, unsigned char *src, int len, int tileno, opj_tcd_tile_t *tile);\r
79 \r
80 /**\r
81 Create a T2 handle\r
82 @param cinfo Codec context info\r
83 @param image Source or destination image\r
84 @param cp Image coding parameters\r
85 @return Returns a new T2 handle if successful, returns NULL otherwise\r
86 */\r
87 opj_t2_t* t2_create(opj_common_ptr cinfo, opj_image_t *image, opj_cp_t *cp);\r
88 /**\r
89 Destroy a T2 handle\r
90 @param t2 T2 handle to destroy\r
91 */\r
92 void t2_destroy(opj_t2_t *t2);\r
93 \r
94 /* ----------------------------------------------------------------------- */\r
95 /*@}*/\r
96 \r
97 /*@}*/\r
98 \r
99 #endif /* __T2_H */\r