summaryrefslogtreecommitdiff
path: root/third_party/libopenjpeg20/opj_includes.h
diff options
context:
space:
mode:
authorNicolas Pena <npm@chromium.org>2017-09-01 13:25:16 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-09-05 14:10:37 +0000
commit088ca03f25fe1f6d75c0ff3b71e0ad3d018a5e0c (patch)
tree27f55db27d9112910d9219efa58474a0c2bd9b52 /third_party/libopenjpeg20/opj_includes.h
parent740bcd892d22136873b2b123b94e51bf6e77b8f9 (diff)
downloadpdfium-088ca03f25fe1f6d75c0ff3b71e0ad3d018a5e0c.tar.xz
Upgrade OpenJPEG to 2.2.0
This CL upgrades OpenJPEG by copying the files from 2.2.0 and then applying patches. Patch files that are no longer relevant are deleted. The relevant ones are applied manually due to changes in formatting in OpenJPEG. Patch 34 is added to account for opj_malloc changes in PDFium. Bug: chromium:718731 Change-Id: I3d316893eab5e235c9f71222a6818b8ae0c98383 Reviewed-on: https://pdfium-review.googlesource.com/12770 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'third_party/libopenjpeg20/opj_includes.h')
-rw-r--r--third_party/libopenjpeg20/opj_includes.h126
1 files changed, 89 insertions, 37 deletions
diff --git a/third_party/libopenjpeg20/opj_includes.h b/third_party/libopenjpeg20/opj_includes.h
index 5add09188e..b33e63ceff 100644
--- a/third_party/libopenjpeg20/opj_includes.h
+++ b/third_party/libopenjpeg20/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.
*
@@ -54,6 +54,7 @@
#include <stdarg.h>
#include <ctype.h>
#include <assert.h>
+#include <limits.h>
/*
Use fseeko() and ftello() if they are available since they use
@@ -70,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)
@@ -103,69 +104,118 @@
*/
/* Are restricted pointers available? (C99) */
-#if (__STDC_VERSION__ != 199901L)
- /* Not a C99 compiler */
- #ifdef __GNUC__
- #define restrict __restrict__
- #else
- #define restrict /* restrict */
- #endif
+#if (__STDC_VERSION__ >= 199901L)
+#define OPJ_RESTRICT restrict
+#else
+/* 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
+*/
+#else
+#define OPJ_RESTRICT /* restrict */
+#endif
#endif
+#ifdef __has_attribute
+#if __has_attribute(no_sanitize)
+#define OPJ_NOSANITIZE(kind) __attribute__((no_sanitize(kind)))
+#endif
+#endif
+#ifndef OPJ_NOSANITIZE
+#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 */
+typedef unsigned int OPJ_BITFIELD;
+
#include "opj_inttypes.h"
#include "opj_clock.h"
#include "opj_malloc.h"
@@ -174,13 +224,15 @@ static INLINE long opj_lrintf(float f) {
#include "bio.h"
#include "cio.h"
+#include "thread.h"
+#include "tls_keys.h"
+
#include "image.h"
#include "invert.h"
#include "j2k.h"
#include "jp2.h"
#include "mqc.h"
-#include "raw.h"
#include "bio.h"
#include "pi.h"