OpenJPEG  1.5.1
tgt.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
3  * Copyright (c) 2002-2007, Professor Benoit Macq
4  * Copyright (c) 2001-2003, David Janssens
5  * Copyright (c) 2002-2003, Yannick Verschueren
6  * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef __TGT_H
33 #define __TGT_H
34 
44 
48 typedef struct opj_tgt_node {
50  int value;
51  int low;
52  int known;
54 
58 typedef struct opj_tgt_tree {
59  int numleafsh;
60  int numleafsv;
61  int numnodes;
64 
67 /* ----------------------------------------------------------------------- */
74 opj_tgt_tree_t *tgt_create(int numleafsh, int numleafsv);
79 void tgt_destroy(opj_tgt_tree_t *tree);
84 void tgt_reset(opj_tgt_tree_t *tree);
91 void tgt_setvalue(opj_tgt_tree_t *tree, int leafno, int value);
99 void tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, int leafno, int threshold);
108 int tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, int leafno, int threshold);
109 /* ----------------------------------------------------------------------- */
113 
114 #endif /* __TGT_H */
void tgt_setvalue(opj_tgt_tree_t *tree, int leafno, int value)
Set the value of a leaf of a tag-tree.
Definition: tgt.c:129
Tag node.
Definition: tgt.h:48
void tgt_reset(opj_tgt_tree_t *tree)
Reset a tag-tree (set all leaves to 0)
Definition: tgt.c:116
struct opj_tgt_node opj_tgt_node_t
Tag node.
struct opj_tgt_tree opj_tgt_tree_t
Tag tree.
int tgt_decode(opj_bio_t *bio, opj_tgt_tree_t *tree, int leafno, int threshold)
Decode the value of a leaf of the tag-tree up to a given threshold.
Definition: tgt.c:178
int value
Definition: tgt.h:50
Individual bit input-output stream (BIO)
Definition: bio.h:47
opj_tgt_node_t * nodes
Definition: tgt.h:62
void tgt_destroy(opj_tgt_tree_t *tree)
Destroy a tag-tree, liberating memory.
Definition: tgt.c:111
opj_tgt_tree_t * tgt_create(int numleafsh, int numleafsv)
Create a tag-tree.
Definition: tgt.c:40
struct opj_tgt_node * parent
Definition: tgt.h:49
int numleafsv
Definition: tgt.h:60
void tgt_encode(opj_bio_t *bio, opj_tgt_tree_t *tree, int leafno, int threshold)
Encode the value of a leaf of the tag-tree up to a given threshold.
Definition: tgt.c:138
int low
Definition: tgt.h:51
int numnodes
Definition: tgt.h:61
int numleafsh
Definition: tgt.h:59
int known
Definition: tgt.h:52
Tag tree.
Definition: tgt.h:58