Subject: [bug#47311] [PATCH] gnu: Add libheif.

From: Vinicius Monego <[email-masked]>
Date: Mon, 22 Mar 2021 17:21:57 -0300

Em 22/03/2021 15:01, Leo Famulari escreveu:
>> +    (inputs
>> +     `(("dav1d" ,dav1d)
>> +       ("gdk-pixbuf" ,gdk-pixbuf) ;optional
>> +       ("libaom" ,libaom)
>> +       ("libde265" ,libde265)
>> +       ("libjpeg" ,libjpeg-turbo)
>> +       ("libpng" ,libpng)
>> +       ("rav1e" ,rav1e)
>> +       ("x265" ,x265)))
> I wonder, are both libaom and rav1e mandatory dependencies?
>
> I ask because they offer the same functionality (AV1 encoding), and it's
> still a bit tricky to introduce Rust dependencies in Guix. Rav1e is
> written in Rust, but we only support Rust on x86_64.

libaom provides the same functionality of dav1d+rav1e in this case. I 
thought of adding those two because libaom was slower in the early versions.

I attached a v2 with libaom only (to simplify the dependency graph). 
Feel free to choose dav1d+libaom.

From 453286bbaeef5f025d124fbe81c642623307961a Mon Sep 17 00:00:00 2001
From: Vinicius Monego <[email-masked]>
Date: Tue, 16 Feb 2021 21:39:26 -0300
Subject: [PATCH v2] gnu: Add libheif.

* gnu/packages/image.scm (libheif): New variable.
---
Removed rav1e and dav1d from inputs.

 gnu/packages/image.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index de6872b9b2..07db67ded1 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -2164,6 +2164,41 @@ by AOM, including with alpha.")
     (license (list license:bsd-2    ; libavif itself
                    license:expat)))) ; cJSON in the test suite
 
+(define-public libheif
+  (package
+    (name "libheif")
+    (version "1.11.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/strukturag/libheif")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "036n63vlk4sk7y25q2kzyvvw4r5vv323ysbmbrcaprg9hdyjqgf5"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ;no test target although there is a tests folder
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gdk-pixbuf" ,gdk-pixbuf) ;optional
+       ("libaom" ,libaom)
+       ("libde265" ,libde265)
+       ("libjpeg" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("x265" ,x265)))
+    (home-page "https://github.com/strukturag/libheif")
+    (synopsis "HEIF and AVIF file format decoder and encoder")
+    (description
+     "@code{libheif} is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File
+Format) file format decoder and encoder.")
+    (license license:gpl3+)))
+
 (define-public mtpaint
   (package
     (name "mtpaint")
-- 
2.31.0