renamed "openjpeg3d" in "openjp3d" (final step)
[openjpeg.git] / libopenjp3d / 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, Herve Drolon, FreeImage Team\r
6  * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium\r
7  * Copyright (c) 2006, M�nica D�ez Garc�a, Image Processing Laboratory, University of Valladolid, Spain\r
8  * All rights reserved.\r
9  *\r
10  * Redistribution and use in source and binary forms, with or without\r
11  * modification, are permitted provided that the following conditions\r
12  * are met:\r
13  * 1. Redistributions of source code must retain the above copyright\r
14  *    notice, this list of conditions and the following disclaimer.\r
15  * 2. Redistributions in binary form must reproduce the above copyright\r
16  *    notice, this list of conditions and the following disclaimer in the\r
17  *    documentation and/or other materials provided with the distribution.\r
18  *\r
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
29  * POSSIBILITY OF SUCH DAMAGE.\r
30  */\r
31 #ifndef __T2_H\r
32 #define __T2_H\r
33 /**\r
34 @file t2.h\r
35 @brief Implementation of a tier-2 coding (packetization of code-block data) (T2)\r
36 \r
37 */\r
38 \r
39 /** @defgroup T2 T2 - Implementation of a tier-2 coding */\r
40 /*@{*/\r
41 \r
42 /**\r
43 Tier-2 coding\r
44 */\r
45 typedef struct opj_t2 {\r
46 /** Codec context */\r
47         opj_common_ptr cinfo;   \r
48 /** Encoding: pointer to the src volume. Decoding: pointer to the dst volume. */\r
49         opj_volume_t *volume;   \r
50 /** Pointer to the volume coding parameters */\r
51         opj_cp_t *cp;                   \r
52 } opj_t2_t;\r
53 \r
54 /** @name Funciones generales */\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 volume_info structure to create an index file\r
67 @return Number of bytes written from packets\r
68 */\r
69 int t2_encode_packets(opj_t2_t* t2, int tileno, opj_tcd_tile_t *tile, int maxlayers, unsigned char *dest, int len, opj_volume_info_t *volume_info);\r
70 \r
71 /**\r
72 Decode the packets of a tile from a source buffer\r
73 @param t2 T2 handle\r
74 @param src the source buffer\r
75 @param len length of the source buffer\r
76 @param tileno number that identifies the tile for which to decode the packets\r
77 @param tile tile for which to decode the packets\r
78 @return Number of bytes read from packets\r
79  */\r
80 int t2_decode_packets(opj_t2_t *t2, unsigned char *src, int len, int tileno, opj_tcd_tile_t *tile);\r
81 \r
82 /**\r
83 Create a T2 handle\r
84 @param cinfo Codec context info\r
85 @param volume Source or destination volume\r
86 @param cp Volume coding parameters\r
87 @return Returns a new T2 handle if successful, returns NULL otherwise\r
88 */\r
89 opj_t2_t* t2_create(opj_common_ptr cinfo, opj_volume_t *volume, opj_cp_t *cp);\r
90 /**\r
91 Destroy a T2 handle\r
92 @param t2 T2 handle to destroy\r
93 */\r
94 void t2_destroy(opj_t2_t *t2);\r
95 \r
96 /* ----------------------------------------------------------------------- */\r
97 /*@}*/\r
98 \r
99 /*@}*/\r
100 \r
101 #endif /* __T2_H */\r