ced20854991d46cc2d74a93f5d17c5bb063162c9
[openjpeg.git] / src / lib / openjpip / placeholder_manager.h
1 /*
2  * $Id: placeholder_manager.h 44 2011-02-15 12:32:29Z kaori $
3  *
4  * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
5  * Copyright (c) 2002-2011, Professor Benoit Macq
6  * Copyright (c) 2010-2011, Kaori Hagihara
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef         PLACEHOLDER_MANAGER_H_
32 # define        PLACEHOLDER_MANAGER_H_
33
34 #include "byte_manager.h"
35 #include "box_manager.h"
36
37 /** A.3.6.3 Placeholder box format*/
38 /** placeholder box parameters*/
39 typedef struct placeholder_param{
40   Byte4_t LBox;
41   char TBox[4];
42   Byte4_t Flags;
43   Byte8_t OrigID;
44   Byte_t *OrigBH;   /**< dynamic memory pointer*/
45   Byte_t OrigBHlen; /**< length of OrigBH*/
46 #ifdef AAA
47   Byte8_t EquivID;
48   Byte_t *EquivBH;   /**< dynamic memory pointer*/
49   Byte_t EquivBHlen; /**< length of EquivBH*/
50   Byte8_t CSID;
51   Byte4_t NCS;
52 #endif /*AAA*/
53   struct placeholder_param *next; /**< pointer to the next placeholder*/
54 } placeholder_param_t;
55
56
57 /** placeholder box list parameters*/
58 typedef struct placeholderlist_param{
59   placeholder_param_t *first; /**< first placeholder pointer of the list*/
60   placeholder_param_t *last;  /**< last  placeholder pointer of the list*/
61 } placeholderlist_param_t;
62
63
64 /**
65  * generate a placeholder list
66  *
67  * @return pointer to the generated placeholder list
68  */
69 placeholderlist_param_t * gene_placeholderlist(void);
70
71
72 /**
73  * delete placeholder list
74  *
75  * @param[in,out] list address of the placeholder list pointer
76  */
77 void delete_placeholderlist( placeholderlist_param_t **list);
78
79
80 /**
81  * generate a placeholder of a box
82  *
83  * @param[in] box    box pointer
84  * @param[in] origID metadata-bin ID of the bin containing the contents of the original box
85  * @return           pointer to the generated placeholder
86  */
87 placeholder_param_t * gene_placeholder( box_param_t *box, Byte8_t origID);
88
89
90 /**
91  * delete a placeholder
92  *
93  * @param[in,out] placeholder address of the placeholder pointer
94  */
95 void delete_placeholder( placeholder_param_t **placeholder);
96
97 void insert_placeholder_into_list( placeholder_param_t *phld, placeholderlist_param_t *phldlist);
98
99
100 /**
101  * print placeholder parameters
102  *
103  * @param[in] phld placeholder pointer
104  */
105 void print_placeholder( placeholder_param_t *phld);
106
107
108 /**
109  * print all placeholder parameters
110  *
111  * @param[in] list placeholder list pointer
112  */
113 void print_allplaceholder( placeholderlist_param_t *list);
114
115 #endif      /* !PLACEHOLDER_MANAGER_H_ */