GraphicsMagick: ReadHEIFImage(): Call heif_init() and heif_deini...

GraphicsMagick Commits <[email protected]> Sun, 08 Oct 2023 19:42:40 -0500
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.7012.1696812170.1370.graphicsmagick-commit@lists.sourceforge.net>
changeset ce194c7e588b in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=ce194c7e588b
summary: ReadHEIFImage(): Call heif_init() and heif_deinit() if they are available.

diffstat:

 ChangeLog                              |   5 +++++
 VisualMagick/installer/inc/version.isx |   4 ++--
 coders/heif.c                          |  15 +++++++++++++++
 configure                              |  12 ++++++++++++
 configure.ac                           |   1 +
 magick/magick_config.h.in              |   6 ++++++
 magick/version.h                       |   4 ++--
 www/Changelog.html                     |   7 +++++++
 8 files changed, 50 insertions(+), 4 deletions(-)

diffs (141 lines):

diff -r c9c18305caf2 -r ce194c7e588b ChangeLog
--- a/ChangeLog	Sun Oct 08 19:39:09 2023 -0500
+++ b/ChangeLog	Sun Oct 08 19:42:38 2023 -0500
@@ -1,3 +1,8 @@
+2023-10-08  Bob Friesenhahn  <[email protected]>
+
+	* coders/heif.c (ReadHEIFImage): Call heif_init() and
+	heif_deinit() if they are available.
+
 2023-10-02  Fojtik Jaroslav  <[email protected]>
 
 	* coders/bmp.c: Emit error when ExportImagePixelArea fails.
diff -r c9c18305caf2 -r ce194c7e588b VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Sun Oct 08 19:39:09 2023 -0500
+++ b/VisualMagick/installer/inc/version.isx	Sun Oct 08 19:42:38 2023 -0500
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020231002"
-#define public MagickPackageReleaseDate "snapshot-20231002"
+#define public MagickPackageVersionAddendum ".020231008"
+#define public MagickPackageReleaseDate "snapshot-20231008"
diff -r c9c18305caf2 -r ce194c7e588b coders/heif.c
--- a/coders/heif.c	Sun Oct 08 19:39:09 2023 -0500
+++ b/coders/heif.c	Sun Oct 08 19:42:38 2023 -0500
@@ -39,6 +39,9 @@
 #define HEIF_ENABLE_PROGRESS_MONITOR 0
 
 #include <libheif/heif.h>
+#ifdef HAVE_HEIF_INIT
+static MagickBool heif_initialized = MagickFalse;
+#endif /* ifdef HAVE_HEIF_INIT */
 
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -492,6 +495,14 @@
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
 
+#ifdef HAVE_HEIF_INIT
+  if (!heif_initialized)
+    {
+      heif_init();
+      heif_initialized = MagickTrue;
+    }
+#endif /* HAVE_HEIF_INIT */
+
   /*
     Open image file.
   */
@@ -836,5 +847,9 @@
   (void) UnregisterMagickInfo("AVIF");
   (void) UnregisterMagickInfo("HEIF");
   (void) UnregisterMagickInfo("HEIC");
+#ifdef HAVE_HEIF_DEINIT
+  if (heif_initialized)
+    heif_deinit();
+#endif /* HAVE_HEIF_DEINIT */
 #endif /* HasHEIF */
 }
diff -r c9c18305caf2 -r ce194c7e588b configure
--- a/configure	Sun Oct 08 19:39:09 2023 -0500
+++ b/configure	Sun Oct 08 19:42:38 2023 -0500
@@ -27758,6 +27758,18 @@
   failed=`expr $failed + 1`
 fi
 
+    for ac_func in heif_init heif_deinit
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if HEIF package is complete" >&5
 $as_echo_n "checking if HEIF package is complete... " >&6; }
     if test $passed -gt 0
diff -r c9c18305caf2 -r ce194c7e588b configure.ac
--- a/configure.ac	Sun Oct 08 19:39:09 2023 -0500
+++ b/configure.ac	Sun Oct 08 19:42:38 2023 -0500
@@ -2659,6 +2659,7 @@
         # libheif that contains a avif codec.
         heif_libs="-lheif -lde265"])
     AC_CHECK_LIB([heif],[heif_context_alloc],[passed=`expr $passed + 1`],[failed=`expr $failed + 1`],[$heif_libs])
+    AC_CHECK_FUNCS([heif_init heif_deinit])
     AC_MSG_CHECKING([if HEIF package is complete])
     if test $passed -gt 0
     then
diff -r c9c18305caf2 -r ce194c7e588b magick/magick_config.h.in
--- a/magick/magick_config.h.in	Sun Oct 08 19:39:09 2023 -0500
+++ b/magick/magick_config.h.in	Sun Oct 08 19:42:38 2023 -0500
@@ -143,6 +143,12 @@
 /* Define to 1 if you have the `getrlimit' function. */
 #undef HAVE_GETRLIMIT
 
+/* Define to 1 if you have the `heif_deinit' function. */
+#undef HAVE_HEIF_DEINIT
+
+/* Define to 1 if you have the `heif_init' function. */
+#undef HAVE_HEIF_INIT
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
diff -r c9c18305caf2 -r ce194c7e588b magick/version.h
--- a/magick/version.h	Sun Oct 08 19:39:09 2023 -0500
+++ b/magick/version.h	Sun Oct 08 19:42:38 2023 -0500
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x272404
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 27,24,4
-#define MagickChangeDate   "20231002"
-#define MagickReleaseDate  "snapshot-20231002"
+#define MagickChangeDate   "20231008"
+#define MagickReleaseDate  "snapshot-20231008"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r c9c18305caf2 -r ce194c7e588b www/Changelog.html
--- a/www/Changelog.html	Sun Oct 08 19:39:09 2023 -0500
+++ b/www/Changelog.html	Sun Oct 08 19:42:38 2023 -0500
@@ -37,6 +37,13 @@
 </div>
 
 <div class="document">
+<p>2023-10-08  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
+<blockquote>
+<ul class="simple">
+<li><p>coders/heif.c (ReadHEIFImage): Call heif_init() and
+heif_deinit() if they are available.</p></li>
+</ul>
+</blockquote>
 <p>2023-10-02  Fojtik Jaroslav  &lt;<a class="reference external" href="mailto:JaFojtik&#37;&#52;&#48;yandex&#46;com">JaFojtik<span>&#64;</span>yandex<span>&#46;</span>com</a>&gt;</p>
 <blockquote>
 <ul class="simple">