I didn't get enblend to compile, seems like some C++ 17 issues. I installed
all dependencies on Ubuntu 20.04 LTS with apt install xxx and then followed
the README instructions. Hugin compiled fine, though.
On Tuesday, June 30, 2020 at 5:10:41 PM UTC-5, GnomeNomad wrote:
>
> Hmm. Maybe compile enblend with static libs? Then each forked enblend
> would have its own copy of the libraries? I don't know, could be quite
> wrong about that.
>
> On June 30, 2020 8:00:26 AM HST, Jani <[email protected] <javascript:>>
> wrote:
> >Yeah it shouldn't work like that. The parent gets process id of the
> >forked process (or thread) and can coordinate directly using those.
> >I am guessing the issue is related to some shared resource e.g.
> >dynamically linked library. Enblend on Windows seem to work, I
> >have only issues with the Linux build.
> >
> >On Tuesday, June 30, 2020 at 12:25:49 PM UTC-5, GnomeNomad wrote:
> >>
> >> I wasn't referring to enblend coordinating with nona. I was referring
> >> to one enblend somehow interacting (via signals) with one or more
> >> of the forked enblends.
> >>
> >> On June 30, 2020 6:25:53 AM HST, Jani wrote:
> >> >As far as I can tell from Hugin execution log, enblend is never
> >> >executed
> >> >same time as nona. So they don't coordinate anything but enblend is
> >> >(optional) post-processing step. Nona seems to have internal
> >blending
> >> >functionality as well, it's just that enblend produces higher
> >quality
> >> >output at least in my case.
> >> >
> >> >On Monday, June 29, 2020 at 10:33:05 PM UTC-5, GnomeNomad wrote:
> >> >>
> >> >> I don't know the internals of the programs. It's possible that
> >nona
> >> >is
> >> >> actually only working on one image at a time while enblend is
> >working
> >> >
> >> >> out a seam between two images (possibly more? depending on image
> >> >> overlaps). Since it's already multiprocessing as it does this, my
> >> >guess
> >> >> is it uses signals to coordinate the seaming process.
> >> >>
> >> >> When you have multiple enblends running via fork, maybe the
> >signals
> >> >are
> >> >> no longer good for coordinating; maybe they cross from one enblend
> >to
> >> >
> >> >> another enblend session. The second session might well be in a
> >> >different
> >> >> state than the first session, leading to confusion and errors.
> >> >>
> >> >> Just guessing, I'm sure the enblend and nona developers are
> >laughing
> >> >> right now. ;) Anyway, I have an i9 - before that I had an i7 - and
> >
> >> >> enblend happily uses all cores and threads without me having to do
> >
> >> >> anything.
> >> >>
> >> >> On 6/28/20 7:28 PM, Jani wrote:
> >> >> > Thanks, I didn't realize the 2020 version was already in beta. I
> >
> >> >will
> >> >> > try that one. Or maybe I try to compile Hugin & tools from
> >sources,
> >> >
> >> >> > might be good for debugging this.
> >> >> >
> >> >> > Yeah I agree with you, it looks like the multiprocessing support
> >in
> >> >
> >> >> > enblend somehow gets messed up when called from multiple
> >processes.
> >> >Kind
> >> >> > of funny. Nona works without any issues.
> >> >> >
> >> >> >
> >> >> > Jani
> >> >> >
> >> >> > On Sunday, June 28, 2020 at 5:05:55 PM UTC-5, GnomeNomad wrote:
> >> >> >
> >> >> > On June 28, 2020 10:35:05 AM HST, Jani <[email protected]
> >> >> > <javascript:>> wrote:
> >> >> >
> >> >> > Background:
> >> >> >
> >> >> > I'm generating (on Ubuntu 20.04 LTS & Hugin
> >> >> > 2019.2.0.b690aa0334b5) a sequence of 12947x2483 OpenEXR
> >> >> > 360-panoramas from 4x OpenEXR image streams of 6144x3456
> >
> >> >each.
> >> >> >
> >> >> > The good parts (nona):
> >> >> >
> >> >> > Nona works well! I can fork 12 processes and speed up
> >the
> >> >"nona
> >> >> > -r hdr -m EXR_m -o out rig1.pto A.exr B.exr C.exr
> >D.exr"
> >> >part
> >> >> > from 56s per frame to 7s per frame (on average).
> >> >> >
> >> >> > The problem (enblend):
> >> >> >
> >> >> > To get the best final results, I need to use enblend.
> >> >> >
> >> >> > I pre-saved the masks hoping it would speed up the
> >process
> >> >a bit
> >> >> > so using enblend like this:
> >> >> >
> >> >> > enblend --load-masks=rig1/mask-%n.tif -v -f12947x2483
> >> >> > --output=pano0001.exr pano0001_stack_hdr_0000.exr
> >> >> > pano0001_stack_hdr_0001.exr pano0001_stack_hdr_0002.exr
> >> >> > pano0001_stack_hdr_0003.exr
> >> >> >
> >> >> > Problem is that if I try to split up the enblend part to
> >
> >> >> > multiple processes, enblend fails randomly with
> >signal(2)
> >> >and
> >> >> > signal(9). Enblend works well as long as I call it
> >exactly
> >> >from
> >> >> > one process at a time, so I'm very sure the issue is
> >> >related to
> >> >> > calling it multiple times simultaneous. The file names
> >are
> >> >> > prefixed uniquely with frame number so there shouldn't
> >be
> >> >any
> >> >> > collisions.
> >> >> >
> >> >> > Right now my compromise is to split up nona part to 12
> >> >processes
> >> >> > and then queue up enblend part and do it frame-by-frame
> >> >from a
> >> >> > single process. That is far from ideal because the
> >enblend
> >> >is
> >> >> > the bottleneck in the first place.
> >> >> >
> >> >> > Any thoughts or suggestions?
> >> >> >
> >> >> >
> >> >> > Thanks,
> >> >> > Jani
> >> >> >
> >> >> >
> >> >> > Just some thoughts.
> >> >> >
> >> >> > My understanding is enblend already supports
> >multiprocessing.
> >> >Maybe
> >> >> > the manual attempt at multiprocessing via fork is
> >interfering
> >> >with
> >> >> that?
> >> >> >
> >> >> > What version of enblend are you using? There was a time when
> >we
> >> >had
> >> >> > to use enblend-mp to get enblend's MP support.
> >> >> >
> >> >> > Hugin is up to 2020.something now. Maybe an update is in
> >order?
>
>
>
> --
> David W. Jones
> [email protected] <javascript:>
> wandering the landscape of god
> http://dancingtreefrog.com
>
> Sent from my Android device with F/LOSS K-9 Mail.
>
--
A list of frequently asked questions is available at:
http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups
"hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/hugin-ptx/32be713c-f182-4fdb-81e6-d297f4846bd9o%40googlegroups.com.
> make --makefile=Makefile.scm
aclocal -I m4
configure.ac:2: warning: AC_INIT: not a literal: m4_esyscmd([tr -d '\n' <
VERSION])
configure.ac:2: warning: AC_INIT: not a literal: m4_esyscmd([tr -d '\n' <
VERSION])
autoheader
configure.ac:2: warning: AC_INIT: not a literal: m4_esyscmd([tr -d '\n' <
VERSION])
automake --add-missing
configure.ac:2: warning: AC_INIT: not a literal: m4_esyscmd([tr -d '\n' <
VERSION])
configure.ac:19: installing './ar-lib'
configure.ac:17: installing './compile'
configure.ac:596: installing './config.guess'
configure.ac:596: installing './config.sub'
configure.ac:12: installing './install-sh'
configure.ac:12: installing './missing'
src/Makefile.am: installing './depcomp'
autoconf
configure.ac:2: warning: AC_INIT: not a literal: m4_esyscmd([tr -d '\n' <
VERSION])
> ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of g++... gcc3
checking whether g++ supports C++17 features by default... no
checking whether g++ supports C++17 features with -std=gnu++17... yes
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for grep that handles long lines and -e... (cached) /usr/bin/grep
checking for ranlib... ranlib
checking for a sed that does not truncate output... /usr/bin/sed
checking how to run the C++ preprocessor... g++ -std=gnu++17 -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking if on-demand dynamic linking is desired... check
checking for on-demand dynamic linking... yes
checking whether we must link with an extra library to get C++17 filesystem
support... no
checking gperftools/tcmalloc.h usability... no
checking gperftools/tcmalloc.h presence... no
checking for gperftools/tcmalloc.h... no
checking tcmalloc.h usability... no
checking tcmalloc.h presence... no
checking for tcmalloc.h... no
checking for sqrt in -lm... yes
checking for gzopen in -lz... yes
checking for jpeg_finish_compress in -ljpeg... yes
checking for png_init_io in -lpng... yes
checking for TIFFOpen in -ltiff... yes
checking if OpenEXR is wanted... checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for OPENEXR... yes
checking for Vigra import/export-library... yes
checking whether Vigra import/export-library is sufficiently recent... yes
checking for Exiv2 library... yes
checking whether Exiv2 library is sufficiently recent... no
checking for support of partially static linking... yes
checking for cblas_dgemm in -lgslcblas... yes
checking for gsl_blas_dgemm in -lgsl... yes
checking for cmsCreateTransform in -llcms2... yes
checking if malloc debugging is wanted... no
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for library containing dlopen... -ldl
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for ANSI C header files... (cached) yes
checking fenv.h usability... yes
checking fenv.h presence... yes
checking for fenv.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking tiffio.h usability... yes
checking tiffio.h presence... yes
checking for tiffio.h... yes
checking jpeglib.h usability... yes
checking jpeglib.h presence... yes
checking for jpeglib.h... yes
checking png.h usability... yes
checking png.h presence... yes
checking for png.h... yes
checking vigra/basicimage.hxx usability... yes
checking vigra/basicimage.hxx presence... yes
checking for vigra/basicimage.hxx... yes
checking gsl/gsl_errno.h usability... yes
checking gsl/gsl_errno.h presence... yes
checking for gsl/gsl_errno.h... yes
checking gsl/gsl_min.h usability... yes
checking gsl/gsl_min.h presence... yes
checking for gsl/gsl_min.h... yes
checking gsl/gsl_multimin.h usability... yes
checking gsl/gsl_multimin.h presence... yes
checking for gsl/gsl_multimin.h... yes
checking gsl/gsl_rng.h usability... yes
checking gsl/gsl_rng.h presence... yes
checking for gsl/gsl_rng.h... yes
checking gsl/gsl_vector.h usability... yes
checking gsl/gsl_vector.h presence... yes
checking for gsl/gsl_vector.h... yes
checking lcms2.h usability... yes
checking lcms2.h presence... yes
checking for lcms2.h... yes
checking for stdbool.h that conforms to C99... no
checking for _Bool... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for C/C++ restrict keyword... __restrict
checking for off_t... yes
checking for sig_atomic_t... yes
checking for size_t... yes
checking for ptrdiff_t... yes
checking whether closedir returns void... no
checking for error_at_line... yes
checking for _LARGEFILE_SOURCE value needed for large files... no
checking whether strerror_r is declared... yes
checking for strerror_r... yes
checking whether strerror_r returns char *... yes
checking for working strtod... yes
checking for atexit... yes
checking for clock_gettime... yes
checking for fesetround... yes
checking for floor... yes
checking for memset... yes
checking for mkstemp... yes
checking for select... yes
checking for pow... yes
checking for sqrt... yes
checking for sqrt... (cached) yes
checking for strchr... yes
checking for strcspn... yes
checking for strdup... yes
checking for strerror... yes
checking for strpbrk... yes
checking for strrchr... yes
checking for strtok_r... yes
checking for strtol... yes
checking for strtoul... yes
checking for lrint... yes
checking for lrintf... yes
checking for perl... /usr/bin/perl
checking for perl module Sys::Hostname... ok
checking for perl module Time::Zone... ok
checking for latex... no
checking for elatex... no
checking for lambda... no
checking for perl module File::Basename... ok
checking for perl module FindBin... ok
checking for perl module Getopt::Long... ok
checking for perl module IO::File... ok
checking for perl module IO::Handle... ok
checking for perl module Readonly... no
checking for pdflatex... no
checking for texloganalyser... cat
checking for makeindex... false
checking for dvips... false
checking for convert... /usr/bin/convert
checking whether hevea executable path has been provided... no
checking for hevea... false
checking for hacha... false
checking for gnuplot... false
checking for m4... /usr/bin/m4
checking for dot... false
checking for rsvg-convert... false
checking for ps2pdf... /usr/bin/ps2pdf
checking for dvipdfmx... no
checking for dvipdfm... no
checking for dvipdf... /usr/bin/dvipdf
checking whether to enable debugging... no
checking whether to compile with OpenMP... no
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating doc/Makefile
config.status: creating doc/examples/Makefile
config.status: creating doc/examples/enfuse/Makefile
config.status: creating doc/examples/enfuse/Makefile.userweight
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/dynamic_loader/Makefile
config.status: creating src/layer_selection/Makefile
config.status: creating src/win32helpers/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
enblend-enfuse now configured for x86_64-pc-linux-gnu
Source directory: .
Installation directory: /usr/local
C++ compiler: g++ -std=gnu++17
CFLAGS: -I/usr/include/OpenEXR -g -O2
CXXFLAGS: -I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG
LDFLAGS: -Wl,--as-needed
-Wl,--no-copy-dt-needed-entries
LIBS: -ldl -llcms2 -lgsl -lgslcblas -lvigraimpex
-lIlmImf -lImath -lHalf -lIex -lIexMath -lIlmThread -lpthread -ltiff -lpng
-ljpeg -lz -lm
STATIC_LIBS: <none defined>
EXTRA_LIBS (optional): <none selected>
can build all documentation: no, because of missing latex Readonly
pdflatex texloganalyser makeindex dvips hevea gnuplot dot rsvg-convert
feature selection:
enable debugging support: no
enable malloc debugging: no
enable dynamic loading yes (via dl)
OpenEXR image format yes
use OpenMP: no
use OpenCL: no (search path:
/usr/local/share/enblend/kernels:/usr/share/enblend/kernels)
use Exiv2: no
use TCMalloc: no
> make
---------------------------------------------------------------------- stdout
make all-recursive
make[1]: Entering directory '/home/jani/Downloads/enblend-code'
Making all in src
make[2]: Entering directory '/home/jani/Downloads/enblend-code/src'
./embrace --format=c++ --label=calculate_state_probabilities_source_code
calculate_state_probabilities.cl > calculate_state_probabilities.icl
./embrace --format=c++ --label=distance_transform_fh_source_code
distance_transform_fh.cl > distance_transform_fh.icl
make all-recursive
make[3]: Entering directory '/home/jani/Downloads/enblend-code/src'
Making all in dynamic_loader
make[4]: Entering directory
'/home/jani/Downloads/enblend-code/src/dynamic_loader'
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../../include -I../../src -I../../src/dynamic_loader
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT
libdynamic_loader_a-dynamic_loader.o -MD -MP -MF
.deps/libdynamic_loader_a-dynamic_loader.Tpo -c -o
libdynamic_loader_a-dynamic_loader.o `test -f 'dynamic_loader.cc' || echo
'./'`dynamic_loader.cc
mv -f .deps/libdynamic_loader_a-dynamic_loader.Tpo
.deps/libdynamic_loader_a-dynamic_loader.Po
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../../include -I../../src -I../../src/dynamic_loader
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT
libdynamic_loader_a-dynamic_loader_implementation.o -MD -MP -MF
.deps/libdynamic_loader_a-dynamic_loader_implementation.Tpo -c -o
libdynamic_loader_a-dynamic_loader_implementation.o `test -f
'dynamic_loader_implementation.cc' || echo './'`dynamic_loader_implementation.cc
mv -f .deps/libdynamic_loader_a-dynamic_loader_implementation.Tpo
.deps/libdynamic_loader_a-dynamic_loader_implementation.Po
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../../include -I../../src -I../../src/dynamic_loader
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT
libdynamic_loader_a-posix_implementation.o -MD -MP -MF
.deps/libdynamic_loader_a-posix_implementation.Tpo -c -o
libdynamic_loader_a-posix_implementation.o `test -f 'posix_implementation.cc'
|| echo './'`posix_implementation.cc
mv -f .deps/libdynamic_loader_a-posix_implementation.Tpo
.deps/libdynamic_loader_a-posix_implementation.Po
rm -f libdynamic_loader.a
ar cru libdynamic_loader.a libdynamic_loader_a-dynamic_loader.o
libdynamic_loader_a-dynamic_loader_implementation.o
libdynamic_loader_a-posix_implementation.o
ranlib libdynamic_loader.a
make[4]: Leaving directory
'/home/jani/Downloads/enblend-code/src/dynamic_loader'
Making all in layer_selection
make[4]: Entering directory
'/home/jani/Downloads/enblend-code/src/layer_selection'
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../../include -I../../src -I../../src/layer_selection
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT liblayersel_a-info.o -MD -MP
-MF .deps/liblayersel_a-info.Tpo -c -o liblayersel_a-info.o `test -f 'info.cc'
|| echo './'`info.cc
mv -f .deps/liblayersel_a-info.Tpo .deps/liblayersel_a-info.Po
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../../include -I../../src -I../../src/layer_selection
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT liblayersel_a-layer_selection.o
-MD -MP -MF .deps/liblayersel_a-layer_selection.Tpo -c -o
liblayersel_a-layer_selection.o `test -f 'layer_selection.cc' || echo
'./'`layer_selection.cc
mv -f .deps/liblayersel_a-layer_selection.Tpo
.deps/liblayersel_a-layer_selection.Po
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../../include -I../../src -I../../src/layer_selection
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT liblayersel_a-selector.o -MD
-MP -MF .deps/liblayersel_a-selector.Tpo -c -o liblayersel_a-selector.o `test
-f 'selector.cc' || echo './'`selector.cc
mv -f .deps/liblayersel_a-selector.Tpo .deps/liblayersel_a-selector.Po
rm -f liblayersel.a
ar cru liblayersel.a liblayersel_a-info.o liblayersel_a-layer_selection.o
liblayersel_a-selector.o
ranlib liblayersel.a
make[4]: Leaving directory
'/home/jani/Downloads/enblend-code/src/layer_selection'
Making all in win32helpers
make[4]: Entering directory '/home/jani/Downloads/enblend-code/src/win32helpers'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/home/jani/Downloads/enblend-code/src/win32helpers'
make[4]: Entering directory '/home/jani/Downloads/enblend-code/src'
g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I.. -DENBLEND_SOURCE -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -I../src/dynamic_loader -I../src/layer_selection
-I/usr/include/OpenEXR -g -O2 -O2 -DNDEBUG -MT enblend-enblend.o -MD -MP -MF
.deps/enblend-enblend.Tpo -c -o enblend-enblend.o `test -f 'enblend.cc' || echo
'./'`enblend.cc
make[4]: Leaving directory '/home/jani/Downloads/enblend-code/src'
make[3]: Leaving directory '/home/jani/Downloads/enblend-code/src'
make[2]: Leaving directory '/home/jani/Downloads/enblend-code/src'
make[1]: Leaving directory '/home/jani/Downloads/enblend-code'
---------------------------------------------------------------------- stderr
ar: `u' modifier ignored since `D' is the default (see `U')
ar: `u' modifier ignored since `D' is the default (see `U')
In file included from /usr/include/vigra/stdconvolution.hxx:43,
from /usr/include/vigra/convolution.hxx:41,
from openmp_vigra.h:32,
from enblend.h:41,
from enblend.cc:196:
/usr/include/vigra/separableconvolution.hxx:1413:13: error: ISO C++17 does not
allow dynamic exception specifications
1413 | throw(PreconditionViolation)
| ^~~~~
In file included from /usr/include/vigra/convolution.hxx:41,
from openmp_vigra.h:32,
from enblend.h:41,
from enblend.cc:196:
/usr/include/vigra/stdconvolution.hxx:796:13: error: ISO C++17 does not allow
dynamic exception specifications
796 | throw(PreconditionViolation)
| ^~~~~
In file included from enblend.h:42,
from enblend.cc:196:
metadata.h:53:31: error: ‘UniquePtr’ in ‘class Exiv2::Image’ does not name a
type
53 | typedef Exiv2::Image::UniquePtr::element_type* meta_pointer;
| ^~~~~~~~~
metadata.h:57:52: error: ‘meta_pointer’ does not name a type
57 | Named(const std::string& a_filename, const meta_pointer a_meta,
bool is_desired) :
| ^~~~~~~~~~~~
metadata.h:61:9: error: ‘meta_pointer’ does not name a type
61 | meta_pointer meta() const {return meta_;}
| ^~~~~~~~~~~~
metadata.h:66:15: error: ‘meta_pointer’ does not name a type
66 | const meta_pointer meta_;
| ^~~~~~~~~~~~
metadata.h: In constructor ‘metadata::Named::Named(const string&, int, bool)’:
metadata.h:58:36: error: class ‘metadata::Named’ does not have any field named
‘meta_’
58 | filename_(a_filename), meta_(a_meta),
is_desired_(is_desired) {}
| ^~~~~
metadata.h: At global scope:
metadata.h:74:19: error: ‘UniquePtr’ in ‘class Exiv2::Image’ does not name a
type
74 | Exiv2::Image::UniquePtr read(const std::string& an_image_filename);
| ^~~~~~~~~
In file included from enblend.cc:196:
enblend.h: In function ‘void enblend::enblendMain(const FileNameList&, const
std::__cxx11::list<vigra::ImageImportInfo*>&, vigra::ImageExportInfo&,
vigra::Rect2D&)’:
enblend.h:103:43: error: ‘UniquePtr’ is not a member of ‘Exiv2::Image’
103 | typedef allocate::array<Exiv2::Image::UniquePtr> metadata_array;
| ^~~~~~~~~
enblend.h:103:52: error: template argument 1 is invalid
103 | typedef allocate::array<Exiv2::Image::UniquePtr> metadata_array;
| ^
enblend.h:103:52: error: template argument 2 is invalid
enblend.h:107:33: error: qualified-id in declaration before ‘metadata’
107 | metadata_array::pointer metadata {input_metadata.begin()};
| ^~~~~~~~
enblend.h:111:22: error: ‘metadata’ does not name a type
111 | new (metadata)
metadata_array::value_type(metadata::read(*filename));
| ^~~~~~~~
enblend.h:112:32: error: request for member ‘mark_as_initialized’ in
‘input_metadata’, which is of non-class type ‘metadata_array’ {aka ‘int’}
112 | input_metadata.mark_as_initialized(metadata -
input_metadata.begin());
| ^~~~~~~~~~~~~~~~~~~
enblend.h:112:61: error: expected primary-expression before ‘-’ token
112 | input_metadata.mark_as_initialized(metadata -
input_metadata.begin());
| ^
enblend.h:112:78: error: request for member ‘begin’ in ‘input_metadata’, which
is of non-class type ‘metadata_array’ {aka ‘int’}
112 | input_metadata.mark_as_initialized(metadata -
input_metadata.begin());
|
^~~~~
enblend.h:121:23: error: expected primary-expression before ‘;’ token
121 | ++metadata;
| ^
enblend.h:554:37: error: request for member ‘size’ in ‘input_metadata’, which
is of non-class type ‘metadata_array’ {aka ‘int’}
554 | input_metadata.size() - 1);
| ^~~~
enblend.h:559:48: error: request for member ‘size’ in ‘input_metadata’, which
is of non-class type ‘metadata_array’ {aka ‘int’}
559 | for (size_t i = 0; i != input_metadata.size(); ++i) {
| ^~~~
enblend.h:560:32: error: request for member ‘is_initialized’ in
‘input_metadata’, which is of non-class type ‘metadata_array’ {aka ‘int’}
560 | if (input_metadata.is_initialized(i) &&
input_metadata[i].get() && input_metadata[i]->good()) {
| ^~~~~~~~~~~~~~
enblend.h:560:69: error: invalid types ‘metadata_array {aka int}[size_t {aka
long unsigned int}]’ for array subscript
560 | if (input_metadata.is_initialized(i) &&
input_metadata[i].get() && input_metadata[i]->good()) {
| ^
enblend.h:560:96: error: invalid types ‘metadata_array {aka int}[size_t {aka
long unsigned int}]’ for array subscript
560 | if (input_metadata.is_initialized(i) &&
input_metadata[i].get() && input_metadata[i]->good()) {
|
^
enblend.h:562:80: error: invalid types ‘metadata_array {aka int}[size_t {aka
long unsigned int}]’ for array subscript
562 |
input_metadata[i].get(),
|
^
make[4]: *** [Makefile:714: enblend-enblend.o] Error 1
make[3]: *** [Makefile:1183: all-recursive] Error 1
make[2]: *** [Makefile:572: all] Error 2
make[1]: *** [Makefile:448: all-recursive] Error 1
make: *** [Makefile:389: all] Error 2