~ubuntu-branches/ubuntu/vivid/ghostscript/vivid-security

« back to all changes in this revision

Viewing changes to openjpeg/libopenjpeg/mqc.h

  • Committer: Package Import Robot
  • Author(s): Till Kamppeter
  • Date: 2013-08-28 18:05:40 UTC
  • mfrom: (1.1.41)
  • Revision ID: package-import@ubuntu.com-20130828180540-372a9b9b1wuesdwi
Tags: 9.10~dfsg~rc1-0ubuntu1
* New upstream release
   - Ghostscript 9.10rc1.
   - Upstream: Mainly, changes to our Postscript startup code (to improve
     compatibility with Adobe) have had unexpected and undesirable side
     effects. Most of these have been in fairly widely relied upon, but also
     decidedly non-standard uses (pdf2dsc being a prime example).
   - We are using Ghostscript's libopenjpeg again, using the system's one
     does not (yet) work as there are still patches of the Ghostscript
     developers which did not get accepted upstream yet..
* debian/control: Removed build dependency on libopenjpeg-dev.
* debian/rules: Removed check for removed openjpeg/ subdirectory in the
  repackaging check again, also set build options for using Ghostscript's
  built-in libopenjpeg library.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 __MQC_H
 
33
#define __MQC_H
 
34
/**
 
35
@file mqc.h
 
36
@brief Implementation of an MQ-Coder (MQC)
 
37
 
 
38
The functions in MQC.C have for goal to realize the MQ-coder operations. The functions
 
39
in MQC.C are used by some function in T1.C.
 
40
*/
 
41
 
 
42
/** @defgroup MQC MQC - Implementation of an MQ-Coder */
 
43
/*@{*/
 
44
 
 
45
/**
 
46
This struct defines the state of a context.
 
47
*/
 
48
typedef struct opj_mqc_state {
 
49
        /** the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */
 
50
        unsigned int qeval;
 
51
        /** the Most Probable Symbol (0 or 1) */
 
52
        int mps;
 
53
        /** next state if the next encoded symbol is the MPS */
 
54
        struct opj_mqc_state *nmps;
 
55
        /** next state if the next encoded symbol is the LPS */
 
56
        struct opj_mqc_state *nlps;
 
57
} opj_mqc_state_t;
 
58
 
 
59
#define MQC_NUMCTXS 19
 
60
 
 
61
/**
 
62
MQ coder
 
63
*/
 
64
typedef struct opj_mqc {
 
65
        unsigned int c;
 
66
        unsigned int a;
 
67
        unsigned int ct;
 
68
        unsigned char *bp;
 
69
        unsigned char *start;
 
70
        unsigned char *end;
 
71
        opj_mqc_state_t *ctxs[MQC_NUMCTXS];
 
72
        opj_mqc_state_t **curctx;
 
73
#ifdef MQC_PERF_OPT
 
74
        unsigned char *buffer;
 
75
#endif
 
76
} opj_mqc_t;
 
77
 
 
78
/** @name Exported functions */
 
79
/*@{*/
 
80
/* ----------------------------------------------------------------------- */
 
81
/**
 
82
Create a new MQC handle 
 
83
@return Returns a new MQC handle if successful, returns NULL otherwise
 
84
*/
 
85
opj_mqc_t* mqc_create(void);
 
86
/**
 
87
Destroy a previously created MQC handle
 
88
@param mqc MQC handle to destroy
 
89
*/
 
90
void mqc_destroy(opj_mqc_t *mqc);
 
91
/**
 
92
Return the number of bytes written/read since initialisation
 
93
@param mqc MQC handle
 
94
@return Returns the number of bytes already encoded
 
95
*/
 
96
int mqc_numbytes(opj_mqc_t *mqc);
 
97
/**
 
98
Reset the states of all the context of the coder/decoder 
 
99
(each context is set to a state where 0 and 1 are more or less equiprobable)
 
100
@param mqc MQC handle
 
101
*/
 
102
void mqc_resetstates(opj_mqc_t *mqc);
 
103
/**
 
104
Set the state of a particular context
 
105
@param mqc MQC handle
 
106
@param ctxno Number that identifies the context
 
107
@param msb The MSB of the new state of the context
 
108
@param prob Number that identifies the probability of the symbols for the new state of the context
 
109
*/
 
110
void mqc_setstate(opj_mqc_t *mqc, int ctxno, int msb, int prob);
 
111
/**
 
112
Initialize the encoder
 
113
@param mqc MQC handle
 
114
@param bp Pointer to the start of the buffer where the bytes will be written
 
115
*/
 
116
void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp);
 
117
/**
 
118
Set the current context used for coding/decoding
 
119
@param mqc MQC handle
 
120
@param ctxno Number that identifies the context
 
121
*/
 
122
#define mqc_setcurctx(mqc, ctxno)       (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)]
 
123
/**
 
124
Encode a symbol using the MQ-coder
 
125
@param mqc MQC handle
 
126
@param d The symbol to be encoded (0 or 1)
 
127
*/
 
128
void mqc_encode(opj_mqc_t *mqc, int d);
 
129
/**
 
130
Flush the encoder, so that all remaining data is written
 
131
@param mqc MQC handle
 
132
*/
 
133
void mqc_flush(opj_mqc_t *mqc);
 
134
/**
 
135
BYPASS mode switch, initialization operation. 
 
136
JPEG 2000 p 505. 
 
137
<h2>Not fully implemented and tested !!</h2>
 
138
@param mqc MQC handle
 
139
*/
 
140
void mqc_bypass_init_enc(opj_mqc_t *mqc);
 
141
/**
 
142
BYPASS mode switch, coding operation. 
 
143
JPEG 2000 p 505. 
 
144
<h2>Not fully implemented and tested !!</h2>
 
145
@param mqc MQC handle
 
146
@param d The symbol to be encoded (0 or 1)
 
147
*/
 
148
void mqc_bypass_enc(opj_mqc_t *mqc, int d);
 
149
/**
 
150
BYPASS mode switch, flush operation
 
151
<h2>Not fully implemented and tested !!</h2>
 
152
@param mqc MQC handle
 
153
@return Returns 1 (always)
 
154
*/
 
155
int mqc_bypass_flush_enc(opj_mqc_t *mqc);
 
156
/**
 
157
RESET mode switch
 
158
@param mqc MQC handle
 
159
*/
 
160
void mqc_reset_enc(opj_mqc_t *mqc);
 
161
/**
 
162
RESTART mode switch (TERMALL)
 
163
@param mqc MQC handle
 
164
@return Returns 1 (always)
 
165
*/
 
166
int mqc_restart_enc(opj_mqc_t *mqc);
 
167
/**
 
168
RESTART mode switch (TERMALL) reinitialisation
 
169
@param mqc MQC handle
 
170
*/
 
171
void mqc_restart_init_enc(opj_mqc_t *mqc);
 
172
/**
 
173
ERTERM mode switch (PTERM)
 
174
@param mqc MQC handle
 
175
*/
 
176
void mqc_erterm_enc(opj_mqc_t *mqc);
 
177
/**
 
178
SEGMARK mode switch (SEGSYM)
 
179
@param mqc MQC handle
 
180
*/
 
181
void mqc_segmark_enc(opj_mqc_t *mqc);
 
182
/**
 
183
Initialize the decoder
 
184
@param mqc MQC handle
 
185
@param bp Pointer to the start of the buffer from which the bytes will be read
 
186
@param len Length of the input buffer
 
187
*/
 
188
void mqc_init_dec(opj_mqc_t *mqc, unsigned char *bp, int len);
 
189
/**
 
190
Decode a symbol
 
191
@param mqc MQC handle
 
192
@return Returns the decoded symbol (0 or 1)
 
193
*/
 
194
int mqc_decode(opj_mqc_t *const mqc);
 
195
/* ----------------------------------------------------------------------- */
 
196
/*@}*/
 
197
 
 
198
/*@}*/
 
199
 
 
200
#endif /* __MQC_H */