<pre style='margin:0'>
David B. Evans (dbevans) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/e6350b0ffd1251ad464b082454476c5e03d21aa4">https://github.com/macports/macports-ports/commit/e6350b0ffd1251ad464b082454476c5e03d21aa4</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new e6350b0  libvideogfx: new port
</span>e6350b0 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit e6350b0ffd1251ad464b082454476c5e03d21aa4
</span>Author: David B. Evans <devans@macports.org>
AuthorDate: Tue Mar 12 19:21:50 2019 -0700

<span style='display:block; white-space:pre;color:#404040;'>    libvideogfx: new port
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Library for rapid development of video processing, computer vision, and computer graphics algorithms.
</span>---
 multimedia/libvideogfx/Portfile                    |  49 ++
 ...h-0da468e49e1abdcb12e507a04e0900a59d377c78.diff | 745 +++++++++++++++++++++
 multimedia/libvideogfx/files/patch-ffmpeg-4.0.diff | 173 +++++
 multimedia/libvideogfx/files/patch-use-cxx11.diff  |   8 +
 4 files changed, 975 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/multimedia/libvideogfx/Portfile b/multimedia/libvideogfx/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8442dab
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/multimedia/libvideogfx/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cxx11 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        farindk libvideogfx 1.0.9 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             LGPL GPL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         A library for rapid development of video processing, computer vision, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    and computer graphics algorithms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {devans @dbevans} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          multimedia
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from releases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  a22b84def7bceac213073e9bbb2bef094960f44d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  8f7e614290d516963b9a5c9d7eaacce88bdf99767a543aff63c049df862d34ea \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    623293
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  path:lib/libavcodec.dylib:ffmpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:jpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libpng
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# patch to upstream git master commit 0da468e49e1abdcb12e507a04e0900a59d377c78
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# patch for ffmpeg-4.0 compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# patch libvideogfx.pc.in to ask for -std=c++11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-0da468e49e1abdcb12e507a04e0900a59d377c78.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-ffmpeg-4.0.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-use-cxx11.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    move ${worksrcpath}/configure.in ${worksrcpath}/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+autoreconf.args     -fvi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# uses C++11 language features without specifying the standard
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxxflags-append -std=c++11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args      --with-ffmpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --without-x \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-silent-rules
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/multimedia/libvideogfx/files/patch-0da468e49e1abdcb12e507a04e0900a59d377c78.diff b/multimedia/libvideogfx/files/patch-0da468e49e1abdcb12e507a04e0900a59d377c78.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2807e64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/multimedia/libvideogfx/files/patch-0da468e49e1abdcb12e507a04e0900a59d377c78.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,745 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/configure.in b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+similarity index 100%
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rename from configure.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rename to configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/examples/Makefile.am b/examples/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e177746..06aa524 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- examples/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ examples/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -24,7 +24,7 @@ noinst_PROGRAMS = test-libvideogfx bitstream_output cputest pixmaptest filtertes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ppmflip chromatest dynarray symmatrix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(linuxprogs) $(audioprogs) $(x11progs) # ppm2avi smartpointer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = -I..
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = -I..
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test_libvideogfx_DEPENDENCIES = ../libvideogfx/libvideogfx.la
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test_libvideogfx_CFLAGS = $(X_CFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/examples/dynarray.cc b/examples/dynarray.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 623d97a..3d0d88b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- examples/dynarray.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ examples/dynarray.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,7 +13,7 @@ void Show(const DynArray<int>& d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   cout << endl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   DynArray<int> dynarray;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   dynarray.SetEmptyValue(-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/examples/symmatrix.cc b/examples/symmatrix.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d21ab51..0d06ea4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- examples/symmatrix.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ examples/symmatrix.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,7 +16,7 @@ void Show(const SymMatrix<int>& d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int main()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SymMatrix<int> m;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   m.Create(6);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/Makefile.am b/libvideogfx/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dd37563..97dc5ce 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,7 +8,7 @@ endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DIST_SUBDIRS = arch audio utility graphics containers x11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -DDATADIR=\"$(datadir)\"      \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -DLIBDIR=\"$(libdir)\"                \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -DSYSCONFDIR=\"$(sysconfdir)\"        \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/arch/Makefile.am b/libvideogfx/arch/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c8df929..4244625 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/arch/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/arch/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,5 +19,5 @@ libvideogfx_arch_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   cpu.hh  \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(mmx_headers)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/audio/fileio/Makefile.am b/libvideogfx/audio/fileio/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 815c628..f7fa586 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/audio/fileio/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/audio/fileio/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -24,6 +24,6 @@ libvideogfx_audio_fileio_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   timedsink.hh    \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(linux_headers)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/containers/Makefile.am b/libvideogfx/containers/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 78adf30..e1282b2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/containers/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/containers/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,7 +2,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ noinst_LTLIBRARIES = libvideogfx-containers.la
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-libvideogfx_containers_includedir = $(includedir)/libvideogfx/containers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++libvideogfx_containers_includedir =  \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  $(includedir)/libvideogfx/containers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++libvideogfx_containers_la_SOURCES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  dummy.cc        \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  heap.hh         \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  heap.icc        \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  dynarray.hh     \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  array.hh        \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  array.icc       \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  array2.hh       \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  array2.icc      \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  symmatrix.hh    \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  queue.hh        \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  queue.icc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Header files for public installation (non-generated)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libvideogfx_containers_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,14 +31,5 @@ libvideogfx_containers_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   queue.hh        \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   queue.icc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-libvideogfx_containers_la_SOURCES =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-.PHONY: files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-files:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  @files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    echo $$p; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/containers/dummy.cc b/libvideogfx/containers/dummy.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..5ca23f1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/containers/dummy.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,33 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* A dummy file, to prevent empty libraries from breaking builds.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Copyright (C) 2004, 2007, 2009-2012 Free Software Foundation, Inc.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Copying and distribution of this file, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   modification, are permitted in any medium without royalty
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   provided the copyright notice and this notice are preserved.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   libraries without any object files.  You might get an error like:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   > ar cru .libs/libgl.a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   > ar: no archive members specified
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Compiling this file, and adding its object file to the library, will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   prevent the library from being empty.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   that don't export any symbol.  You might get an error like:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   > cc ... libgnu.a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   > ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Compiling this file, and adding its object file to the library, will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   prevent the library from exporting no symbols.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __sun
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* This declaration ensures that the library will export at least 1 symbol.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int gl_dummy_symbol;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* This declaration is solely to ensure that after preprocessing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   this file is never empty.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef int dummy;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/color/Makefile.am b/libvideogfx/graphics/color/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 11c8846..bfe83a8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/color/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/color/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,5 @@ libvideogfx_graphics_color_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   img2raw.hh      \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   colorspace.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/datatypes/Makefile.am b/libvideogfx/graphics/datatypes/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7edf956..30364d5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/datatypes/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/datatypes/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,5 +18,5 @@ libvideogfx_graphics_datatypes_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bitmap.hh       \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   image.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/draw/Makefile.am b/libvideogfx/graphics/draw/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index aaa4d66..2b61035 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/draw/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/draw/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,5 +19,5 @@ libvideogfx_graphics_draw_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   blit.hh         \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   scale.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/fileio/Makefile.am b/libvideogfx/graphics/fileio/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 78fb782..27d094e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,6 +74,6 @@ libvideogfx_graphics_fileio_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(linux_headers) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(ffmpeg_headers)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/fileio/ffmpeg.cc b/libvideogfx/graphics/fileio/ffmpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6b0a76e..42034b6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/ffmpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/ffmpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -166,7 +166,7 @@ namespace videogfx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (frameRGB)  { av_free(frameRGB); frameRGB=NULL; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (frame)     { av_free(frame); frame=NULL; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (codecCtx)  { avcodec_close(codecCtx); codecCtx=NULL; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (formatCtx) { av_close_input_file(formatCtx); formatCtx=NULL; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (formatCtx) { avformat_close_input(&formatCtx); formatCtx=NULL; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/fileio/imagesink.hh b/libvideogfx/graphics/fileio/imagesink.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 915b597..bdc9e9f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/imagesink.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/imagesink.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,7 +34,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  ********************************************************************************/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef LIBVIDEOGFX_GRAPHICS_FILEIO_IMAGESINK_HH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define LIBVIDEOGFX_GRAPHICS_FILEIO_IMGAESINK_HH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define LIBVIDEOGFX_GRAPHICS_FILEIO_IMAGESINK_HH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/graphics/datatypes/image.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/fileio/jpeg.cc b/libvideogfx/graphics/fileio/jpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1e0e557..25d0187 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/jpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/jpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -73,7 +73,7 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // initialize decompressor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     jpeg_create_decompress(&cinfo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     cinfo.err = jpeg_std_error(&jerr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     jpeg_stdio_src(&cinfo, infile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -156,20 +156,26 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               py [cinfo.output_scanline-1][x] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               pcb[(cinfo.output_scanline-1)/2][x/2] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               pcr[(cinfo.output_scanline-1)/2][x/2] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              py [cinfo.output_scanline-1][x+1] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              if (x+1 < cinfo.output_width) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                py [cinfo.output_scanline-1][x+1] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               bufp+=2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          (void) jpeg_read_scanlines(&cinfo, buffer, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          if (cinfo.output_scanline < cinfo.output_height) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            (void) jpeg_read_scanlines(&cinfo, buffer, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          bufp = buffer[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            bufp = buffer[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          for (unsigned int x=0;x<cinfo.output_width;x++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              py [cinfo.output_scanline-1][x] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              bufp+=2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for (unsigned int x=0;x<cinfo.output_width;x++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                py [cinfo.output_scanline-1][x] = *bufp++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                bufp+=2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -196,9 +202,15 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // open output file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     FILE * outfile;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if ((outfile = fopen(filename, "wb")) == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      fprintf(stderr, "can't open %s\n", filename);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (filename==nullptr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      outfile = stdout;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if ((outfile = fopen(filename, "wb")) == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fprintf(stderr, "can't open %s\n", filename);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        exit(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -285,11 +297,13 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // cleanup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     jpeg_finish_compress(&cinfo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     jpeg_destroy_compress(&cinfo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    fclose(outfile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (filename != nullptr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      fclose(outfile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/fileio/png.cc b/libvideogfx/graphics/fileio/png.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 417d43e..52d66c0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/png.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/png.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -87,7 +87,7 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   void ReadImage_PNG(Image<Pixel>& img, istream& is)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    assert(is != NULL); // , "Open stream first.");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    assert(is.good()); // , "Open stream first.");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     png_structp png_ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     png_infop info_ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -135,7 +135,7 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            &interlace_type, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     assert(bit_depth < 16); // , "cannot handle 16 bit images");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /**** Set up the data transformations you want.  Note that these are all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      **** optional.  Only call them if you want/need them.  Many of the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      **** transformations only work on specific types of images, and many
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -291,7 +291,7 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     delete[] row_pointers;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   void WriteImage_PNG(ostream& os, const Image<Pixel>& img)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Create and initialize the png_struct with the desired error handler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -416,8 +416,8 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     png_write_image(png_ptr, row_pointers);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* It is REQUIRED to call this to finish writing the rest of the file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/filters/Makefile.am b/libvideogfx/graphics/filters/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7eba05e..6bd69b6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/filters/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/filters/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -36,5 +36,5 @@ libvideogfx_graphics_filters_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   resampler.h \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(mmx_headers)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/geometry/Makefile.am b/libvideogfx/graphics/geometry/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c555cac..b0cb546 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/geometry/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/geometry/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15,5 +15,5 @@ libvideogfx_graphics_geometry_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   matrix.hh       \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   transform.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/measure/Makefile.am b/libvideogfx/graphics/measure/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c5201ff..21f72c1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/measure/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/measure/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3,14 +3,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ noinst_LTLIBRARIES = libvideogfx-graphics-measure.la
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libvideogfx_graphics_measure_la_SOURCES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  snr.hh  \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  snr.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  snr.hh snr.cc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ssim.hh ssim.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libvideogfx_graphics_measure_includedir = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(includedir)/libvideogfx/graphics/measure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libvideogfx_graphics_measure_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  snr.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  snr.hh ssim.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/measure/snr.cc b/libvideogfx/graphics/measure/snr.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9400734..e7a5aab 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/measure/snr.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/measure/snr.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,4 +103,52 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return psnr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  Bitmap<Pixel> CalcErrorMap(const Bitmap<Pixel>& img1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             const Bitmap<Pixel>& img2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             enum TransferCurve transfer_curve,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             bool inverted)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int w = img1.AskWidth();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int h = img1.AskHeight();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const Pixel*const* p1 = img1.AskFrame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const Pixel*const* p2 = img2.AskFrame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<Pixel> error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    error.Create(w,h);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Pixel*const* p = error.AskFrame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // --- prepare transfer curve ---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Pixel transfer[255+1+255];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int d=-255;d<=255;d++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        switch (transfer_curve)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          case TransferCurve_Linear:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            transfer[d+255] = abs(d);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          case TransferCurve_Sqrt:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            transfer[d+255] = sqrt(abs(d)/255.0)*255;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (inverted) transfer[d+255] = 255 - transfer[d+255];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // --- generate error map ---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int y=0;y<h;y++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      for (int x=0;x<w;x++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          p[y][x] = transfer[p1[y][x] - p2[y][x] + 255];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/measure/snr.hh b/libvideogfx/graphics/measure/snr.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 20d26f2..6f2ffe2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/measure/snr.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/measure/snr.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -53,6 +53,16 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             int x0= 0,int y0=0,     // rectangle to consider for the calculation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             int x1=-1,int y1=-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  enum TransferCurve
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TransferCurve_Linear,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      TransferCurve_Sqrt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  Bitmap<Pixel> CalcErrorMap(const Bitmap<Pixel>& img1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             const Bitmap<Pixel>& img2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             enum TransferCurve transfer=TransferCurve_Linear,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             bool inverted=true);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/measure/ssim.cc b/libvideogfx/graphics/measure/ssim.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..45c9fcb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/measure/ssim.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,118 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/********************************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    LibVideoGfx - video processing library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Copyright (C) 2002-2014  Dirk Farin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    This library is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    modify it under the terms of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    License as published by the Free Software Foundation; either
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    version 2.1 of the License, or (at your option) any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    This library is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Lesser General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    You should have received a copy of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    License along with this library; if not, write to the Free Software
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ********************************************************************************/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "libvideogfx/graphics/measure/ssim.hh"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "libvideogfx/graphics/filters/linear.hh"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "libvideogfx/containers/array.hh"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <math.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <algorithm>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++using namespace std;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  template <class T> T SQ(T t) { return t*t; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  Bitmap<float> SSIM::calcSSIM(const Bitmap<Pixel>& img_x,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               const Bitmap<Pixel>& img_y)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int w = img_x.AskWidth();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int h = img_y.AskHeight();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Array<double> filter;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CreateGaussFilter(filter, sigma, 0.01);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> mean_x, mean_y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ConvolveHV(mean_x,img_x, filter);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ConvolveHV(mean_y,img_y, filter);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> meandiff_x, meandiff_y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    meandiff_x.Create(w,h);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    meandiff_y.Create(w,h);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int y=0;y<h;y++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      for (int x=0;x<w;x++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        meandiff_x[y][x] = SQ(mean_x[y][x] - img_x[y][x]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        meandiff_y[y][x] = SQ(mean_y[y][x] - img_y[y][x]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> sigma_x, sigma_y;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ConvolveHV(sigma_x,meandiff_x, filter);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ConvolveHV(sigma_y,meandiff_y, filter);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int y=0;y<h;y++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      for (int x=0;x<w;x++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sigma_x[y][x] = sqrt(sigma_x[y][x]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sigma_y[y][x] = sqrt(sigma_y[y][x]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> corr_tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    corr_tmp.Create(w,h);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int y=0;y<h;y++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      for (int x=0;x<w;x++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        corr_tmp[y][x] = (img_x[y][x]-mean_x[y][x]) * (img_y[y][x]-mean_y[y][x]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> corr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ConvolveHV(corr, corr_tmp, filter);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //return corr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> ssim;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ssim.Create(w,h);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int y=0;y<h;y++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      for (int x=0;x<w;x++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        float s = (2*mean_x[y][x]*mean_y[y][x] + C1) * (2*corr[y][x] + C2) /
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          ( (mean_x [y][x]*mean_x [y][x] + mean_y [y][x]*mean_y [y][x] + C1 ) *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            (sigma_x[y][x]*sigma_x[y][x] + sigma_y[y][x]*sigma_y[y][x] + C2) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (s<0.0) s = 0.0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (s>1.0) s = 1.0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ssim[y][x] = s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ssim;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  float SSIM::calcMSSIM(const Bitmap<Pixel>& img1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        const Bitmap<Pixel>& img2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int w = img1.AskWidth();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int h = img1.AskHeight();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> ssim = calcSSIM(img1,img2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    double ssimSum = 0.0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (int y=0;y<h;y++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      for (int x=0;x<w;x++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          ssimSum += ssim[y][x];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ssimSum /= w*h;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ssimSum;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/measure/ssim.hh b/libvideogfx/graphics/measure/ssim.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..04188b8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/measure/ssim.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,64 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  libvideogfx/graphics/measure/ssim.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  purpose:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  notes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  to do:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  author(s):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   - Dirk Farin, dirk.farin@gmail.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  modifications:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    21/Jul/2014 - Dirk Farin - first implementation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ********************************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    LibVideoGfx - video processing library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Copyright (C) 2002-2014 Dirk Farin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    This library is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    modify it under the terms of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    License as published by the Free Software Foundation; either
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    version 2.1 of the License, or (at your option) any later version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    This library is distributed in the hope that it will be useful,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Lesser General Public License for more details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    You should have received a copy of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    License along with this library; if not, write to the Free Software
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ********************************************************************************/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef LIBVIDEOGFX_GRAPHICS_MEASURE_SSIM_HH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define LIBVIDEOGFX_GRAPHICS_MEASURE_SSIM_HH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <libvideogfx/graphics/datatypes/image.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  class SSIM
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    SSIM() :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      C1(0.01 * 256),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      C2(0.03 * 256),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      r (5), // 11x11 patches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      sigma(1.5)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    { }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    float C1, C2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int   r;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    float sigma;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Bitmap<float> calcSSIM(const Bitmap<Pixel>& img1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                           const Bitmap<Pixel>& img2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    float calcMSSIM(const Bitmap<Pixel>& img1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    const Bitmap<Pixel>& img2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/visualize/Makefile.am b/libvideogfx/graphics/visualize/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 02a02f0..0ed5bfc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/visualize/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/visualize/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,5 +20,5 @@ libvideogfx_graphics_visualize_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # markblks.hh     \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # motionfield.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/libvideogfx.hh.in b/libvideogfx/libvideogfx.hh.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 704553b..bf698ed 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/libvideogfx.hh.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/libvideogfx.hh.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -63,6 +63,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/graphics/filters/binomial.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/graphics/filters/scale.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/graphics/measure/snr.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <libvideogfx/graphics/measure/ssim.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/graphics/visualize/regions.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/audio/fileio/audiosink.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <libvideogfx/audio/fileio/timedsink.hh>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/utility/Makefile.am b/libvideogfx/utility/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7150ec6..4da98ba 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/utility/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/utility/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,5 +21,5 @@ libvideogfx_utility_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   refcntr.hh      
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # smartpointer.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/utility/bitstream/Makefile.am b/libvideogfx/utility/bitstream/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f6cb79d..5f45d84 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/utility/bitstream/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/utility/bitstream/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,5 +27,5 @@ libvideogfx_utility_bitstream_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   inputstream.hh  \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   inputstream_istr.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/utility/bitstream/bitbuffer.cc b/libvideogfx/utility/bitstream/bitbuffer.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9f879ac..3b469fd 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/utility/bitstream/bitbuffer.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/utility/bitstream/bitbuffer.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -58,7 +58,7 @@ namespace videogfx {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   void BitBuffer::WriteBitsMasked(uint32 bits,int nBits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    uint32 long mask=1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32 mask=1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     mask<<=nBits;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     mask--;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/x11/Makefile.am b/libvideogfx/x11/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 06f8309..2eb6c0e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/x11/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/x11/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,5 +22,5 @@ libvideogfx_x11_include_HEADERS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   draw_x11.hh     \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   server.hh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-INCLUDES = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   -I$(top_srcdir)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/multimedia/libvideogfx/files/patch-ffmpeg-4.0.diff b/multimedia/libvideogfx/files/patch-ffmpeg-4.0.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..cbdc7b4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/multimedia/libvideogfx/files/patch-ffmpeg-4.0.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,173 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libvideogfx/graphics/fileio/ffmpeg.cc b/libvideogfx/graphics/fileio/ffmpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 42034b6..2beb32c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/ffmpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/ffmpeg.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -135,17 +135,21 @@ namespace videogfx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // alloc frame storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    frame = avcodec_alloc_frame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //frame = avcodec_alloc_frame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    frame = av_frame_alloc();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (frame==NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    frameRGB = avcodec_alloc_frame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //frameRGB = avcodec_alloc_frame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    frameRGB = av_frame_alloc();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (frameRGB==NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    int nBytesPerFrame = avpicture_get_size(PIX_FMT_RGB24, codecCtx->width, codecCtx->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //int nBytesPerFrame = avpicture_get_size(PIX_FMT_RGB24, codecCtx->width, codecCtx->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int nBytesPerFrame = avpicture_get_size(AV_PIX_FMT_RGB24, codecCtx->width, codecCtx->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     buffer = static_cast<uint8_t*>(av_malloc(nBytesPerFrame));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    avpicture_fill(reinterpret_cast<AVPicture*>(frameRGB), buffer, PIX_FMT_RGB24, codecCtx->width, codecCtx->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //avpicture_fill(reinterpret_cast<AVPicture*>(frameRGB), buffer, PIX_FMT_RGB24, codecCtx->width, codecCtx->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    avpicture_fill(reinterpret_cast<AVPicture*>(frameRGB), buffer, AV_PIX_FMT_RGB24, codecCtx->width, codecCtx->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // preload first frame
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -239,7 +243,8 @@ namespace videogfx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     struct SwsContext* swsContext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       = sws_getContext(codecCtx->width, codecCtx->height, codecCtx->pix_fmt,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                 codecCtx->width, codecCtx->height, PIX_FMT_RGB24, SWS_POINT, NULL, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                 //codecCtx->width, codecCtx->height, PIX_FMT_RGB24, SWS_POINT, NULL, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                 codecCtx->width, codecCtx->height, AV_PIX_FMT_RGB24, SWS_POINT, NULL, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     sws_scale(swsContext, frame->data, frame->linesize, 0, codecCtx->height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         frameRGB->data, frameRGB->linesize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx/graphics/fileio/ffmpeg_writer.cc.orig      2014-01-22 03:07:21.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx/graphics/fileio/ffmpeg_writer.cc   2019-03-12 18:39:46.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -59,19 +59,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define av_guess_format guess_format
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define FF_MIN_BUFFER_SIZE AV_INPUT_BUFFER_MIN_SIZE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define AVFMT_RAWPICTURE 0x0020
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace videogfx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static AVFrame *allocPicture(enum PixelFormat pix_fmt, int width, int height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static AVFrame *allocPicture(enum AVPixelFormat pix_fmt, int width, int height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     AVFrame *picture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     uint8_t *picture_buf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    picture = avcodec_alloc_frame();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    picture = av_frame_alloc();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!picture)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size = avpicture_get_size(pix_fmt, width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -174,7 +178,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c->time_base.den = d/g;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c->time_base.num = n/g;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c->gop_size = 25;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  c->pix_fmt = PIX_FMT_YUV420P;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  c->pix_fmt = AV_PIX_FMT_YUV420P;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if(oc->oformat->flags & AVFMT_GLOBALHEADER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     c->flags |= CODEC_FLAG_GLOBAL_HEADER;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -208,8 +212,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   tmp_picture = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (c->pix_fmt != PIX_FMT_YUV420P) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    tmp_picture = allocPicture(PIX_FMT_YUV420P, c->width, c->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    tmp_picture = allocPicture(AV_PIX_FMT_YUV420P, c->width, c->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!tmp_picture) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       std::cerr << "could not allocate picture\n";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -233,7 +237,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   st->id = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   AVCodecContext *c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c = st->codec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  c->codec_id = CODEC_ID_MP3; //fmt->audio_codec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  c->codec_id = AV_CODEC_ID_MP3; //fmt->audio_codec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c->codec_type = AVMEDIA_TYPE_AUDIO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c->sample_fmt = AV_SAMPLE_FMT_S16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c->bit_rate = bitrate;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -265,7 +269,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   audio_outbuf_size = FF_MIN_BUFFER_SIZE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   audio_outbuf = (uint8_t*)av_malloc(audio_outbuf_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   audio_input_frame_size = c->frame_size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   samples = (int16_t*)av_malloc(audio_input_frame_size * 2 * c->channels);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   nBufferedSamples=0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -309,10 +313,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   c = st->codec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (c->pix_fmt != PIX_FMT_YUV420P) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (img_convert_ctx == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       img_convert_ctx = sws_getContext(c->width, c->height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                 PIX_FMT_YUV420P,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 AV_PIX_FMT_YUV420P,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                  c->width, c->height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                  c->pix_fmt,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                  SWS_BICUBIC, NULL, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -340,6 +344,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ret = av_interleaved_write_frame(oc, &pkt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // TODO: FFMPEG API for avcodec_encode_video2() has changed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     out_size = avcodec_encode_video(c, video_outbuf, video_outbuf_size, picture);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (out_size > 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       AVPacket pkt;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -357,6 +364,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       ret = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    assert(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (ret != 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     std::cerr << "error writing video\n";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -448,11 +458,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void FFMPEG_Writer::encodeAudioFrame(const int16* p)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // TODO: FFMPEG API for avcodec_encode_audio2() has changed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     AVPacket pkt;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     av_init_packet(&pkt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     AVCodecContext *c = audioStream->codec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     pkt.size= avcodec_encode_audio(c, audio_outbuf, audio_outbuf_size, p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (c->coded_frame && c->coded_frame->pts != AV_NOPTS_VALUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -465,6 +477,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       std::cerr << "cannot write audio\n";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       assert(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    assert(false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -512,7 +527,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     av_init_packet(&pkt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     c = st->codec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool cont = fillAudio(samples, audio_input_frame_size, c->channels);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!cont) return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/multimedia/libvideogfx/files/patch-use-cxx11.diff b/multimedia/libvideogfx/files/patch-use-cxx11.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d404aeb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/multimedia/libvideogfx/files/patch-use-cxx11.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libvideogfx.pc.in.orig 2019-03-12 19:07:21.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libvideogfx.pc.in      2019-03-12 19:07:49.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -9,4 +9,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Version: @VERSION@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Requires: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Libs: -lvideogfx @jpeg_libs@ @png_libs@ -L@libdir@ @X_LDFLAGS@ @X_LIBS@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Cflags: -std=c++0x -I@includedir@ @X_CFLAGS@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Cflags: -std=c++11 -I@includedir@ @X_CFLAGS@
</span></pre><pre style='margin:0'>

</pre>