/src/openjpeg/src/lib/openjp2/opj_includes.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * The copyright in this software is being made available under the 2-clauses |
3 | | * BSD License, included below. This software may be subject to other third |
4 | | * party and contributor rights, including patent rights, and no such rights |
5 | | * are granted under this license. |
6 | | * |
7 | | * Copyright (c) 2005, Herve Drolon, FreeImage Team |
8 | | * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR |
9 | | * Copyright (c) 2012, CS Systemes d'Information, France |
10 | | * All rights reserved. |
11 | | * |
12 | | * Redistribution and use in source and binary forms, with or without |
13 | | * modification, are permitted provided that the following conditions |
14 | | * are met: |
15 | | * 1. Redistributions of source code must retain the above copyright |
16 | | * notice, this list of conditions and the following disclaimer. |
17 | | * 2. Redistributions in binary form must reproduce the above copyright |
18 | | * notice, this list of conditions and the following disclaimer in the |
19 | | * documentation and/or other materials provided with the distribution. |
20 | | * |
21 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' |
22 | | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
23 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
24 | | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
25 | | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
26 | | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
27 | | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
28 | | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
29 | | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
30 | | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
31 | | * POSSIBILITY OF SUCH DAMAGE. |
32 | | */ |
33 | | #ifndef OPJ_INCLUDES_H |
34 | | #define OPJ_INCLUDES_H |
35 | | |
36 | | /* |
37 | | * This must be included before any system headers, |
38 | | * since they can react to macro defined there |
39 | | */ |
40 | | #include "opj_config_private.h" |
41 | | |
42 | | /* |
43 | | ========================================================== |
44 | | Standard includes used by the library |
45 | | ========================================================== |
46 | | */ |
47 | | #include <memory.h> |
48 | | #include <stdlib.h> |
49 | | #include <string.h> |
50 | | #include <math.h> |
51 | | #include <float.h> |
52 | | #include <time.h> |
53 | | #include <stdio.h> |
54 | | #include <stdarg.h> |
55 | | #include <ctype.h> |
56 | | #include <assert.h> |
57 | | #include <limits.h> |
58 | | #include <stdint.h> |
59 | | #include <inttypes.h> |
60 | | |
61 | | /* |
62 | | Use fseeko() and ftello() if they are available since they use |
63 | | 'off_t' rather than 'long'. It is wrong to use fseeko() and |
64 | | ftello() only on systems with special LFS support since some systems |
65 | | (e.g. FreeBSD) support a 64-bit off_t by default. |
66 | | */ |
67 | | #if defined(OPJ_HAVE_FSEEKO) && !defined(fseek) |
68 | 0 | # define fseek fseeko |
69 | 0 | # define ftell ftello |
70 | | #endif |
71 | | |
72 | | |
73 | | #if defined(WIN32) && !defined(Windows95) && !defined(__BORLANDC__) && \ |
74 | | !(defined(_MSC_VER) && _MSC_VER < 1400) && \ |
75 | | !(defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x800) |
76 | | /* |
77 | | Windows '95 and Borland C do not support _lseeki64 |
78 | | Visual Studio does not support _fseeki64 and _ftelli64 until the 2005 release. |
79 | | Without these interfaces, files over 2GB in size are not supported for Windows. |
80 | | */ |
81 | | # define OPJ_FSEEK(stream,offset,whence) _fseeki64(stream,/* __int64 */ offset,whence) |
82 | | # define OPJ_FSTAT(fildes,stat_buff) _fstati64(fildes,/* struct _stati64 */ stat_buff) |
83 | | # define OPJ_FTELL(stream) /* __int64 */ _ftelli64(stream) |
84 | | # define OPJ_STAT_STRUCT_T struct _stati64 |
85 | | # define OPJ_STAT(path,stat_buff) _stati64(path,/* struct _stati64 */ stat_buff) |
86 | | #else |
87 | 0 | # define OPJ_FSEEK(stream,offset,whence) fseek(stream,offset,whence) |
88 | | # define OPJ_FSTAT(fildes,stat_buff) fstat(fildes,stat_buff) |
89 | 0 | # define OPJ_FTELL(stream) ftell(stream) |
90 | | # define OPJ_STAT_STRUCT_T struct stat |
91 | | # define OPJ_STAT(path,stat_buff) stat(path,stat_buff) |
92 | | #endif |
93 | | |
94 | | |
95 | | /* |
96 | | ========================================================== |
97 | | OpenJPEG interface |
98 | | ========================================================== |
99 | | */ |
100 | | #include "openjpeg.h" |
101 | | |
102 | | /* |
103 | | ========================================================== |
104 | | OpenJPEG modules |
105 | | ========================================================== |
106 | | */ |
107 | | |
108 | | /* Are restricted pointers available? (C99) */ |
109 | | #if (__STDC_VERSION__ >= 199901L) |
110 | | #define OPJ_RESTRICT restrict |
111 | | #else |
112 | | /* Not a C99 compiler */ |
113 | | #if defined(__GNUC__) |
114 | | #define OPJ_RESTRICT __restrict__ |
115 | | |
116 | | /* |
117 | | vc14 (2015) outputs wrong results. |
118 | | Need to check OPJ_RESTRICT usage (or a bug in vc14) |
119 | | #elif defined(_MSC_VER) && (_MSC_VER >= 1400) |
120 | | #define OPJ_RESTRICT __restrict |
121 | | */ |
122 | | #else |
123 | | #define OPJ_RESTRICT /* restrict */ |
124 | | #endif |
125 | | #endif |
126 | | |
127 | | #ifdef __has_attribute |
128 | | #if __has_attribute(no_sanitize) |
129 | | #define OPJ_NOSANITIZE(kind) __attribute__((no_sanitize(kind))) |
130 | | #endif |
131 | | #endif |
132 | | #ifndef OPJ_NOSANITIZE |
133 | | #define OPJ_NOSANITIZE(kind) |
134 | | #endif |
135 | | |
136 | | |
137 | | /* MSVC before 2013 and Borland C do not have lrintf */ |
138 | | #if defined(_MSC_VER) |
139 | | #include <intrin.h> |
140 | | static INLINE long opj_lrintf(float f) |
141 | | { |
142 | | #ifdef _M_X64 |
143 | | return _mm_cvt_ss2si(_mm_load_ss(&f)); |
144 | | |
145 | | /* commented out line breaks many tests */ |
146 | | /* return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f)); */ |
147 | | #elif defined(_M_IX86) |
148 | | int i; |
149 | | _asm{ |
150 | | fld f |
151 | | fistp i |
152 | | }; |
153 | | |
154 | | return i; |
155 | | #else |
156 | | return (long)((f>0.0f) ? (f + 0.5f) : (f - 0.5f)); |
157 | | #endif |
158 | | } |
159 | | #elif defined(__BORLANDC__) |
160 | | static INLINE long opj_lrintf(float f) |
161 | | { |
162 | | #ifdef _M_X64 |
163 | | return (long)((f > 0.0f) ? (f + 0.5f) : (f - 0.5f)); |
164 | | #else |
165 | | int i; |
166 | | |
167 | | _asm { |
168 | | fld f |
169 | | fistp i |
170 | | }; |
171 | | |
172 | | return i; |
173 | | #endif |
174 | | } |
175 | | #else |
176 | | static INLINE long opj_lrintf(float f) |
177 | 1.25G | { |
178 | 1.25G | return lrintf(f); |
179 | 1.25G | } Unexecuted instantiation: thread.c:opj_lrintf Unexecuted instantiation: cio.c:opj_lrintf Unexecuted instantiation: event.c:opj_lrintf Unexecuted instantiation: image.c:opj_lrintf Unexecuted instantiation: openjpeg.c:opj_lrintf Unexecuted instantiation: opj_malloc.c:opj_lrintf Unexecuted instantiation: j2k.c:opj_lrintf Unexecuted instantiation: jp2.c:opj_lrintf Unexecuted instantiation: mct.c:opj_lrintf Unexecuted instantiation: pi.c:opj_lrintf Line | Count | Source | 177 | 1.25G | { | 178 | 1.25G | return lrintf(f); | 179 | 1.25G | } |
Unexecuted instantiation: tgt.c:opj_lrintf Unexecuted instantiation: function_list.c:opj_lrintf Unexecuted instantiation: bio.c:opj_lrintf Unexecuted instantiation: dwt.c:opj_lrintf Unexecuted instantiation: invert.c:opj_lrintf Unexecuted instantiation: t1.c:opj_lrintf Unexecuted instantiation: t2.c:opj_lrintf Unexecuted instantiation: sparse_array.c:opj_lrintf Unexecuted instantiation: ht_dec.c:opj_lrintf Unexecuted instantiation: mqc.c:opj_lrintf |
180 | | #endif |
181 | | |
182 | | #if defined(_MSC_VER) && (_MSC_VER < 1400) |
183 | | #define vsnprintf _vsnprintf |
184 | | #endif |
185 | | |
186 | | /* MSVC x86 is really bad at doing int64 = int32 * int32 on its own. Use intrinsic. */ |
187 | | #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86) |
188 | | # include <intrin.h> |
189 | | # pragma intrinsic(__emul) |
190 | | #endif |
191 | | |
192 | | /* Apparently Visual Studio doesn't define __SSE__ / __SSE2__ macros */ |
193 | | #if defined(_M_X64) |
194 | | /* Intel 64bit support SSE and SSE2 */ |
195 | | # ifndef __SSE__ |
196 | | # define __SSE__ 1 |
197 | | # endif |
198 | | # ifndef __SSE2__ |
199 | | # define __SSE2__ 1 |
200 | | # endif |
201 | | #endif |
202 | | |
203 | | /* For x86, test the value of the _M_IX86_FP macro. */ |
204 | | /* See https://msdn.microsoft.com/en-us/library/b0084kay.aspx */ |
205 | | #if defined(_M_IX86_FP) |
206 | | # if _M_IX86_FP >= 1 |
207 | | # ifndef __SSE__ |
208 | | # define __SSE__ 1 |
209 | | # endif |
210 | | # endif |
211 | | # if _M_IX86_FP >= 2 |
212 | | # ifndef __SSE2__ |
213 | | # define __SSE2__ 1 |
214 | | # endif |
215 | | # endif |
216 | | #endif |
217 | | |
218 | | /* Type to use for bit-fields in internal headers */ |
219 | | typedef unsigned int OPJ_BITFIELD; |
220 | | |
221 | 83.5k | #define OPJ_UNUSED(x) (void)x |
222 | | |
223 | | #include "opj_clock.h" |
224 | | #include "opj_malloc.h" |
225 | | #include "event.h" |
226 | | #include "function_list.h" |
227 | | #include "bio.h" |
228 | | #include "cio.h" |
229 | | |
230 | | #include "thread.h" |
231 | | #include "tls_keys.h" |
232 | | |
233 | | #include "image.h" |
234 | | #include "invert.h" |
235 | | #include "j2k.h" |
236 | | #include "jp2.h" |
237 | | |
238 | | #include "mqc.h" |
239 | | #include "bio.h" |
240 | | |
241 | | #include "pi.h" |
242 | | #include "tgt.h" |
243 | | #include "tcd.h" |
244 | | #include "t1.h" |
245 | | #include "dwt.h" |
246 | | #include "t2.h" |
247 | | #include "mct.h" |
248 | | #include "opj_intmath.h" |
249 | | #include "sparse_array.h" |
250 | | |
251 | | #ifdef USE_JPIP |
252 | | #include "cidx_manager.h" |
253 | | #include "indexbox_manager.h" |
254 | | #endif |
255 | | |
256 | | /* JPWL>> */ |
257 | | #ifdef USE_JPWL |
258 | | #include "openjpwl/jpwl.h" |
259 | | #endif /* USE_JPWL */ |
260 | | /* <<JPWL */ |
261 | | |
262 | | /* V2 */ |
263 | | #include "opj_codec.h" |
264 | | |
265 | | |
266 | | #endif /* OPJ_INCLUDES_H */ |