summaryrefslogtreecommitdiff
path: root/openjpeg/src/lib/openjp2/opj_includes.h
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2017-08-25 10:54:42 +0100
committerChris Liddell <chris.liddell@artifex.com>2017-08-31 14:36:24 +0100
commitff70cedd80fd037414abb8a17cd1988d92da2ad6 (patch)
treef00988ec16ad538f68dbea45beafd44a3135ae66 /openjpeg/src/lib/openjp2/opj_includes.h
parentd1dbe825e2fefed1156d0f5e02e6b4d5f20a7781 (diff)
downloadghostpdl-ff70cedd80fd037414abb8a17cd1988d92da2ad6.tar.gz
This is a combination of 7 commits.
from the openjpeg-2.2.0-update branch 1) OpenJPEG 2.2.0 initial commit 0b5fc7368721af148d85ef8dac2e018de10cfe91 2) Zap the openjpeg stuff we don't need e90bbccd19cb266b55de28ebfd16d024b6e67373 3) Add predefined openjpeg headers. 71242c9a04bb76b8b17fc489d62a91d04c1ad60c 4) Import patches from Sumatra's tree. 8b89e4b5750069172522ecf85e69d094b5e567e7 5) update makefiles, interface and vcproj files for new openjpeg version 456cbe1c76659b0ab022f6ca3f67cc63b253b05f 6) Avoid getenv call in openjpeg 202a0318a7b3a397fcd5d015dcad4293474f464c 7) Bug 698135: Import security fix for OpenJPEG 8057698a5f7833499fdf8d2529162841920e354a
Diffstat (limited to 'openjpeg/src/lib/openjp2/opj_includes.h')
-rw-r--r--openjpeg/src/lib/openjp2/opj_includes.h114
1 files changed, 71 insertions, 43 deletions
diff --git a/openjpeg/src/lib/openjp2/opj_includes.h b/openjpeg/src/lib/openjp2/opj_includes.h
index e3de42dae..b33e63cef 100644
--- a/openjpeg/src/lib/openjp2/opj_includes.h
+++ b/openjpeg/src/lib/openjp2/opj_includes.h
@@ -1,11 +1,11 @@
/*
- * The copyright in this software is being made available under the 2-clauses
- * BSD License, included below. This software may be subject to other third
+ * The copyright in this software is being made available under the 2-clauses
+ * BSD License, included below. This software may be subject to other third
* party and contributor rights, including patent rights, and no such rights
* are granted under this license.
*
* Copyright (c) 2005, Herve Drolon, FreeImage Team
- * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
+ * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
* Copyright (c) 2012, CS Systemes d'Information, France
* All rights reserved.
*
@@ -71,11 +71,11 @@
#if defined(WIN32) && !defined(Windows95) && !defined(__BORLANDC__) && \
!(defined(_MSC_VER) && _MSC_VER < 1400) && \
!(defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x800)
- /*
- Windows '95 and Borland C do not support _lseeki64
- Visual Studio does not support _fseeki64 and _ftelli64 until the 2005 release.
- Without these interfaces, files over 2GB in size are not supported for Windows.
- */
+/*
+ Windows '95 and Borland C do not support _lseeki64
+ Visual Studio does not support _fseeki64 and _ftelli64 until the 2005 release.
+ Without these interfaces, files over 2GB in size are not supported for Windows.
+*/
# define OPJ_FSEEK(stream,offset,whence) _fseeki64(stream,/* __int64 */ offset,whence)
# define OPJ_FSTAT(fildes,stat_buff) _fstati64(fildes,/* struct _stati64 */ stat_buff)
# define OPJ_FTELL(stream) /* __int64 */ _ftelli64(stream)
@@ -105,83 +105,112 @@
/* Are restricted pointers available? (C99) */
#if (__STDC_VERSION__ >= 199901L)
- #define OPJ_RESTRICT restrict
+#define OPJ_RESTRICT restrict
#else
- /* Not a C99 compiler */
- #if defined(__GNUC__)
- #define OPJ_RESTRICT __restrict__
+/* Not a C99 compiler */
+#if defined(__GNUC__)
+#define OPJ_RESTRICT __restrict__
/*
vc14 (2015) outputs wrong results.
Need to check OPJ_RESTRICT usage (or a bug in vc14)
- #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
- #define OPJ_RESTRICT __restrict
+ #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
+ #define OPJ_RESTRICT __restrict
*/
- #else
- #define OPJ_RESTRICT /* restrict */
- #endif
+#else
+#define OPJ_RESTRICT /* restrict */
+#endif
#endif
#ifdef __has_attribute
- #if __has_attribute(no_sanitize)
- #define OPJ_NOSANITIZE(kind) __attribute__((no_sanitize(kind)))
- #endif
+#if __has_attribute(no_sanitize)
+#define OPJ_NOSANITIZE(kind) __attribute__((no_sanitize(kind)))
+#endif
#endif
#ifndef OPJ_NOSANITIZE
- #define OPJ_NOSANITIZE(kind)
+#define OPJ_NOSANITIZE(kind)
#endif
/* MSVC before 2013 and Borland C do not have lrintf */
#if defined(_MSC_VER)
#include <intrin.h>
-static INLINE long opj_lrintf(float f){
+static INLINE long opj_lrintf(float f)
+{
#ifdef _M_X64
- return _mm_cvt_ss2si(_mm_load_ss(&f));
+ return _mm_cvt_ss2si(_mm_load_ss(&f));
- /* commented out line breaks many tests */
- /* return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f)); */
+ /* commented out line breaks many tests */
+ /* return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f)); */
#elif defined(_M_IX86)
int i;
- _asm{
+ _asm{
fld f
fistp i
};
-
+
return i;
-#else
- return (long)((f>0.0f) ? (f + 0.5f) : (f - 0.5f));
+#else
+ return (long)((f>0.0f) ? (f + 0.5f) : (f - 0.5f));
#endif
}
#elif defined(__BORLANDC__)
-static INLINE long opj_lrintf(float f) {
+static INLINE long opj_lrintf(float f)
+{
#ifdef _M_X64
- return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
+ return (long)((f > 0.0f) ? (f + 0.5f) : (f - 0.5f));
#else
- int i;
+ int i;
- _asm {
- fld f
- fistp i
- };
+ _asm {
+ fld f
+ fistp i
+ };
- return i;
+ return i;
#endif
}
#else
-static INLINE long opj_lrintf(float f) {
- return lrintf(f);
+static INLINE long opj_lrintf(float f)
+{
+ return lrintf(f);
}
#endif
#if defined(_MSC_VER) && (_MSC_VER < 1400)
- #define vsnprintf _vsnprintf
+#define vsnprintf _vsnprintf
#endif
/* MSVC x86 is really bad at doing int64 = int32 * int32 on its own. Use intrinsic. */
#if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__INTEL_COMPILER) && defined(_M_IX86)
-# include <intrin.h>
-# pragma intrinsic(__emul)
+# include <intrin.h>
+# pragma intrinsic(__emul)
+#endif
+
+/* Apparently Visual Studio doesn't define __SSE__ / __SSE2__ macros */
+#if defined(_M_X64)
+/* Intel 64bit support SSE and SSE2 */
+# ifndef __SSE__
+# define __SSE__ 1
+# endif
+# ifndef __SSE2__
+# define __SSE2__ 1
+# endif
+#endif
+
+/* For x86, test the value of the _M_IX86_FP macro. */
+/* See https://msdn.microsoft.com/en-us/library/b0084kay.aspx */
+#if defined(_M_IX86_FP)
+# if _M_IX86_FP >= 1
+# ifndef __SSE__
+# define __SSE__ 1
+# endif
+# endif
+# if _M_IX86_FP >= 2
+# ifndef __SSE2__
+# define __SSE2__ 1
+# endif
+# endif
#endif
/* Type to use for bit-fields in internal headers */
@@ -204,7 +233,6 @@ typedef unsigned int OPJ_BITFIELD;
#include "jp2.h"
#include "mqc.h"
-#include "raw.h"
#include "bio.h"
#include "pi.h"