Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions EXR/ReadEXR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,33 @@

#include "ofxsMacros.h"

// Check OpenEXR version to determine header locations
#include <OpenEXR/OpenEXRConfig.h>
#define COMBINED_OPENEXR_VERSION ((10000*OPENEXR_VERSION_MAJOR) + \
(100*OPENEXR_VERSION_MINOR) + \
OPENEXR_VERSION_PATCH)

GCC_DIAG_OFF(deprecated)
#include <IlmThreadPool.h>
#include <ImathBox.h>
#include <ImfChannelList.h>
#include <ImfCompression.h>
#include <ImfFrameBuffer.h>
#include <ImfHeader.h>
#include <ImfInputFile.h>
#include <ImfPixelType.h>
#if COMBINED_OPENEXR_VERSION >= 20599 /* 2.5.99: pre-3.0 */
# include <OpenEXR/IlmThreadPool.h>
# include <Imath/ImathBox.h>
# include <OpenEXR/ImfChannelList.h>
# include <OpenEXR/ImfCompression.h>
# include <OpenEXR/ImfFrameBuffer.h>
# include <OpenEXR/ImfHeader.h>
# include <OpenEXR/ImfInputFile.h>
# include <OpenEXR/ImfPixelType.h>
#else
// OpenEXR 2.x, use the old locations
# include <IlmThreadPool.h>
# include <ImathBox.h>
# include <ImfChannelList.h>
# include <ImfCompression.h>
# include <ImfFrameBuffer.h>
# include <ImfHeader.h>
# include <ImfInputFile.h>
# include <ImfPixelType.h>
#endif
GCC_DIAG_ON(deprecated)

#ifdef OFX_IO_MT_EXR
Expand Down
39 changes: 30 additions & 9 deletions EXR/WriteEXR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,33 @@
#include "ofxsFileOpen.h"
#include "ofxsMacros.h"

#include <OpenEXR/OpenEXRConfig.h>
#define COMBINED_OPENEXR_VERSION ((10000*OPENEXR_VERSION_MAJOR) + \
(100*OPENEXR_VERSION_MINOR) + \
OPENEXR_VERSION_PATCH)

GCC_DIAG_OFF(deprecated)
#include <IlmThreadPool.h>
#include <ImathBox.h>
#include <ImfArray.h>
#include <ImfChannelList.h>
#include <ImfCompression.h>
#include <ImfFrameBuffer.h>
#include <ImfHeader.h>
#include <ImfOutputFile.h>
#include <half.h>
#if COMBINED_OPENEXR_VERSION >= 20599 /* 2.5.99: pre-3.0 */
# include <OpenEXR/IlmThreadPool.h>
# include <Imath/ImathBox.h>
# include <OpenEXR/ImfArray.h>
# include <OpenEXR/ImfChannelList.h>
# include <OpenEXR/ImfCompression.h>
# include <OpenEXR/ImfFrameBuffer.h>
# include <OpenEXR/ImfHeader.h>
# include <OpenEXR/ImfOutputFile.h>
# include <Imath/half.h>
#else
// OpenEXR 2.x, use the old locations
# include <IlmThreadPool.h>
# include <ImathBox.h>
# include <ImfArray.h>
# include <ImfChannelList.h>
# include <ImfCompression.h>
# include <ImfFrameBuffer.h>
# include <ImfHeader.h>
# include <ImfOutputFile.h>
# include <half.h>
GCC_DIAG_ON(deprecated)

#include "GenericOCIO.h"
Expand Down Expand Up @@ -267,6 +284,10 @@ WriteEXRPlugin::encode(const string& filename,
} else {
Imf_::Array2D<half> halfwriterow(pixelDataNComps, bounds.x2 - bounds.x1);

#if COMBINED_OPENEXR_VERSION >= 20599 /* 2.5.99: pre-3.0 */
using Imath::half;
#endif

for (int chan = 0; chan < pixelDataNComps; ++chan) {
fbuf.insert(chanNames[chan],
Imf_::Slice(Imf_::HALF,
Expand Down
11 changes: 7 additions & 4 deletions Makefile.master
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,12 @@ endif
# OpenEXR
# OpenImageIO includes OpenEXR as #include <OpenEXR/ImathVec.h>, to we also add the
# include dir itself to avoid confusion with a system-installed OpenEXR.
# OpenEXR 2 has IlmBase, OpenEXR 3 has Imath, so we ask for both, but it will always cause harmless errors.
OPENEXR_CXXFLAGS = -I`pkg-config --variable=prefix OpenEXR`/include `pkg-config --cflags IlmBase 2>/dev/null` `pkg-config --cflags Imath 2>/dev/null` `pkg-config --cflags OpenEXR`
OPENEXR_LINKFLAGS =`pkg-config --libs IlmBase 2>/dev/null` `pkg-config --libs Imath 2>/dev/null` `pkg-config --libs OpenEXR`
# OpenEXR 2 has IlmBase, OpenEXR 3 has Imath, so we ask for both.
# Try Imath first (OpenEXR 3.x), then fallback to IlmBase (OpenEXR 2.x)
IMATH_CXXFLAGS := $(shell pkg-config --cflags Imath 2>/dev/null || pkg-config --cflags IlmBase 2>/dev/null)
IMATH_LINKFLAGS := $(shell pkg-config --libs Imath 2>/dev/null || pkg-config --libs IlmBase 2>/dev/null)
OPENEXR_CXXFLAGS = -I`pkg-config --variable=prefix OpenEXR`/include $(IMATH_CXXFLAGS) `pkg-config --cflags OpenEXR`
OPENEXR_LINKFLAGS = $(IMATH_LINKFLAGS) `pkg-config --libs OpenEXR`
# Uncomment the following line to enable multithreaded EXR reading (untested, and probably does not make sense)
#OPENEXR_CXXFLAGS += -DOFX_IO_MT_EXR

Expand All @@ -37,7 +40,7 @@ FFMPEG_LINKFLAGS = `pkg-config --libs libavformat libavcodec libswscale libavuti
FFMPEG_CXXFLAGS += -DOFX_IO_MT_FFMPEG

# OpenImageIO
OIIO_CXXFLAGS = $(OCIO_CXXFLAGS) `pkg-config --cflags OpenImageIO` $(OPENEXR_CFLAGS) -DOFX_IO_USING_LIBRAW `pkg-config --cflags libraw_r libwebp libtiff-4 libopenjp2 libpng`
OIIO_CXXFLAGS = $(OCIO_CXXFLAGS) `pkg-config --cflags OpenImageIO` $(OPENEXR_CXXFLAGS) -DOFX_IO_USING_LIBRAW `pkg-config --cflags libraw_r libwebp libtiff-4 libopenjp2 libpng`
OIIO_LINKFLAGS = $(OCIO_LINKFLAGS) `pkg-config --libs OpenImageIO` $(OPENEXR_LINKFLAGS) `pkg-config --libs libraw_r libwebp libtiff-4 libopenjp2 libpng`
ifeq ($(OS),Linux)
# libraw_r may be in a separate directory for licence reasons (eg in the Natron SDK)
Expand Down