GraphicsMagick: 2 new changesets

GraphicsMagick Commits <[email protected]> Wed, 29 Jan 2025 10:27:25 -0600
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.51111.1738168052.7812.graphicsmagick-commit@lists.sourceforge.net>
changeset 9f09bb6ab080 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=9f09bb6ab080
summary: coders/heif.c: Request the primary image handle from libheif. Do not throw an error if there is more than one image in the heif.

changeset 482aaf1cc48c in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=482aaf1cc48c
summary: magick/magic.c: Identify some more HEIF sub-formats.

diffstat:

 ChangeLog                              |  11 +++++++++++
 VisualMagick/installer/inc/version.isx |   4 ++--
 coders/heif.c                          |  33 +++++++++++++++++----------------
 fuzzing/README.txt                     |   7 +++++++
 magick/magic.c                         |  17 ++++++++++++-----
 magick/version.h                       |   4 ++--
 www/ChangeLog.html                     |  12 ++++++++++++
 7 files changed, 63 insertions(+), 25 deletions(-)

diffs (171 lines):

diff -r 2290d0e25d1d -r 482aaf1cc48c ChangeLog
--- a/ChangeLog	Sat Jan 25 08:43:21 2025 -0600
+++ b/ChangeLog	Wed Jan 29 10:26:55 2025 -0600
@@ -1,3 +1,14 @@
+2025-01-29  Bob Friesenhahn  <[email protected]>
+
+	* magick/magic.c (StaticMagic): Identify some more HEIF
+	sub-formats.
+
+	* coders/heif.c (ReadHEIFImage): Request the primary image handle
+	from libheif. Do not throw an error if there is more than one
+	image in the heif.  Patch by Kevin Clauson and submitted via
+	SourceForge patch #84 "Patch: use primary image for heic even when
+	have multiple image".
+
 2025-01-25  Bob Friesenhahn  <[email protected]>
 
 	* coders/heif.c (ReadMetadata): Only apply Exif orientation if
diff -r 2290d0e25d1d -r 482aaf1cc48c VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Sat Jan 25 08:43:21 2025 -0600
+++ b/VisualMagick/installer/inc/version.isx	Wed Jan 29 10:26:55 2025 -0600
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020250125"
-#define public MagickPackageReleaseDate "snapshot-20250125"
+#define public MagickPackageVersionAddendum ".020250129"
+#define public MagickPackageReleaseDate "snapshot-20250129"
diff -r 2290d0e25d1d -r 482aaf1cc48c coders/heif.c
--- a/coders/heif.c	Sat Jan 25 08:43:21 2025 -0600
+++ b/coders/heif.c	Wed Jan 29 10:26:55 2025 -0600
@@ -591,29 +591,30 @@
       ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image);
     }
 
-  /* FIXME: no support for reading multiple images but should be added */
+  /* FIXME: no support for reading multiple images but should be
+     added, if multiple images will use primary image */
   {
     int number_of_top_level_images;
     number_of_top_level_images=heif_context_get_number_of_top_level_images(heif);
     if (image->logging)
       (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-                            "heif_context_get_number_of_top_level_images() reports %d images",
+                            "Number of top level images: %d (reading primary image only)",
                             number_of_top_level_images);
-    if (number_of_top_level_images != 1)
-      ThrowHEIFReaderException(CoderError, NumberOfImagesIsNotSupported, image);
-  }
+    if (number_of_top_level_images == 0)
+      ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image);
 
-  heif_status=heif_context_get_primary_image_handle(heif, &heif_image_handle);
-  if (heif_status.code == heif_error_Memory_allocation_error)
-    ThrowHEIFReaderException(ResourceLimitError,MemoryAllocationFailed,image);
-  if (heif_status.code != heif_error_Ok)
-    {
-      if (image->logging)
-        (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-                              "heif_context_get_primary_image_handle() reports error \"%s\"",
-                              heif_status.message);
-      ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image);
-    }
+    heif_status=heif_context_get_primary_image_handle(heif, &heif_image_handle);
+    if (heif_status.code == heif_error_Memory_allocation_error)
+      ThrowHEIFReaderException(ResourceLimitError, MemoryAllocationFailed, image);
+    if (heif_status.code != heif_error_Ok)
+      {
+        if (image->logging)
+          (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+                                "heif_context_get_primary_image_handle() reports error \"%s\"",
+                                heif_status.message);
+        ThrowHEIFReaderException(CorruptImageError, AnErrorHasOccurredReadingFromFile, image);
+      }
+  }
 
   /*
     Note: Those values are preliminary but likely the upper bound
diff -r 2290d0e25d1d -r 482aaf1cc48c fuzzing/README.txt
--- a/fuzzing/README.txt	Sat Jan 25 08:43:21 2025 -0600
+++ b/fuzzing/README.txt	Wed Jan 29 10:26:55 2025 -0600
@@ -143,6 +143,13 @@
   make -j 8
   make install
 
+jpeg
+++++
+
+With sources under libjpeg-turbo::
+
+cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS='-O -g' -DCMAKE_INSTALL_RPATH='/usr/local/lib' -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE -DBUILD_SHARED_LIBS=ON -DWITH_JPEG8=1 /home/bfriesen/src/libjpeg-turbo
+
 libheif
 +++++++
 
diff -r 2290d0e25d1d -r 482aaf1cc48c magick/magic.c
--- a/magick/magic.c	Sat Jan 25 08:43:21 2025 -0600
+++ b/magick/magic.c	Wed Jan 29 10:26:55 2025 -0600
@@ -1,5 +1,5 @@
 /*
-% Copyright (C) 2003-2022 GraphicsMagick Group
+% Copyright (C) 2003-2025 GraphicsMagick Group
 % Copyright (C) 2002 ImageMagick Studio
 %
 % This program is covered by multiple licenses, which are described in
@@ -60,7 +60,8 @@
 {
 #define MAGIC(name,offset,magic) {name,(const unsigned char * const)magic,sizeof(magic)-1,offset}
   MAGIC("WEBP", 8, "WEBP"),
-  MAGIC("AVIF", 4, "ftypavif"),
+  MAGIC("AVIF", 4, "ftypavif"), /* HEIF: AV1 image */
+  MAGIC("AVIF", 4, "ftypavis"), /* HEIF: AV1 image sequence */
   /* MAGIC("AVI", 0, "RIFF"), */
   MAGIC("8BIMWTEXT", 0, "8\000B\000I\000M\000#"),
   MAGIC("8BIMTEXT", 0, "8BIM#"),
@@ -91,9 +92,15 @@
   MAGIC("FITS", 0, "SIMPLE"),
   MAGIC("FPX", 0, "\320\317\021\340"),
   MAGIC("GIF", 0, "GIF8"),
-  MAGIC("HEIC", 4, "ftypheic"),
-  MAGIC("HEIC", 4, "ftypheix"),
-  MAGIC("HEIC", 4, "ftypmif1"),
+  MAGIC("HEIC", 4, "ftypheic"), /* HEIF: A regular heif image */
+  MAGIC("HEIC", 4, "ftypheix"), /* HEIF: Extended range (>8 bit) image */
+  MAGIC("HEIF", 4, "ftyphevc"), /* HEIF: Image sequence */
+  MAGIC("HEIF", 4, "ftypheim"), /* HEIF: Image sequence */
+  MAGIC("HEIF", 4, "ftypheis"), /* HEIF: Scalable image */
+  MAGIC("HEIF", 4, "ftyphevm"), /* HEIF: Multiview sequence */
+  MAGIC("HEIF", 4, "ftyphevs"), /* HEIF: Scalable sequence*/
+  MAGIC("HEIC", 4, "ftypmif1"), /* HEIF: Nokia alpha_ image */
+  MAGIC("HEIC", 4, "ftypmsf1"), /* HEIF: Nokia animation image */
   MAGIC("HDF", 1, "HDF"),
   MAGIC("HPGL", 0, "IN;"),
   MAGIC("HTML", 1, "HTML"),
diff -r 2290d0e25d1d -r 482aaf1cc48c magick/version.h
--- a/magick/version.h	Sat Jan 25 08:43:21 2025 -0600
+++ b/magick/version.h	Wed Jan 29 10:26:55 2025 -0600
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x282502
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 28,25,2
-#define MagickChangeDate   "20250125"
-#define MagickReleaseDate  "snapshot-20250125"
+#define MagickChangeDate   "20250129"
+#define MagickReleaseDate  "snapshot-20250129"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 2290d0e25d1d -r 482aaf1cc48c www/ChangeLog.html
--- a/www/ChangeLog.html	Sat Jan 25 08:43:21 2025 -0600
+++ b/www/ChangeLog.html	Wed Jan 29 10:26:55 2025 -0600
@@ -38,6 +38,18 @@
 
 <main id="graphicsmagick-changelog">
 <h1 class="title">GraphicsMagick ChangeLog</h1>
+<p>2025-01-29  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>magick/magic.c (StaticMagic): Identify some more HEIF
+sub-formats.</p></li>
+<li><p>coders/heif.c (ReadHEIFImage): Request the primary image handle
+from libheif. Do not throw an error if there is more than one
+image in the heif.  Patch by Kevin Clauson and submitted via
+SourceForge patch #84 &quot;Patch: use primary image for heic even when
+have multiple image&quot;.</p></li>
+</ul>
+</blockquote>
 <p>2025-01-25  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">