[PATCH] gnu: Add libheif.

  • Done
  • quality assurance status badge
Details
2 participants
  • Leo Famulari
  • Vinicius Monego
Owner
unassigned
Submitted by
Vinicius Monego
Severity
normal
V
V
Vinicius Monego wrote on 22 Mar 2021 05:29
(address . guix-patches@gnu.org)(name . Vinicius Monego)(address . monego@posteo.net)
20210322042940.439266-1-monego@posteo.net
* gnu/packages/image.scm (libheif): New variable.
---
gnu/packages/image.scm | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)

Toggle diff (50 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index de6872b9b2..7a751c1eba 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -2164,6 +2164,43 @@ 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
+ `(("dav1d" ,dav1d)
+ ("gdk-pixbuf" ,gdk-pixbuf) ;optional
+ ("libaom" ,libaom)
+ ("libde265" ,libde265)
+ ("libjpeg" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("rav1e" ,rav1e)
+ ("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
L
L
Leo Famulari wrote on 22 Mar 2021 19:01
(name . Vinicius Monego)(address . monego@posteo.net)(address . 47311@debbugs.gnu.org)
YFjbeEFUeEWCEJKt@jasmine.lan
On Mon, Mar 22, 2021 at 01:29:40AM -0300, Vinicius Monego wrote:
Toggle quote (2 lines)
> * gnu/packages/image.scm (libheif): New variable.

Thanks!
Toggle quote (2 lines)
It says that these programs can use libheif:

GIMP
Krita
ImageMagick
digiKam 7.0.0
libvips
Kodi HEIF image decoder plugin

Toggle quote (10 lines)
> + (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.
V
V
Vinicius Monego wrote on 22 Mar 2021 21:21
(name . Leo Famulari)(address . leo@famulari.name)(address . 47311@debbugs.gnu.org)
6434c341-1961-854a-662e-58fe134f20a9@posteo.net
Em 22/03/2021 15:01, Leo Famulari escreveu:
Toggle quote (15 lines)
>> + (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 <monego@posteo.net>
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(+)

Toggle diff (48 lines)
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
V
V
Vinicius Monego wrote on 22 Mar 2021 21:35
(name . Leo Famulari)(address . leo@famulari.name)(address . 47311@debbugs.gnu.org)
2727ba18-0ae9-1498-2f19-39ae8d5a4aaf@posteo.net
Oh, and the license is wrong, it's lgpl3+.
L
L
Leo Famulari wrote on 22 Mar 2021 22:20
(name . Vinicius Monego)(address . monego@posteo.net)(address . 47311@debbugs.gnu.org)
YFkKOgt86nz0cpMy@jasmine.lan
On Mon, Mar 22, 2021 at 05:21:57PM -0300, Vinicius Monego wrote:
Toggle quote (3 lines)
> 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.

That's true, and libaom is still really slow to encode, although rav1e
is also slow. My impression is that, overall, one should still encode
with libaom, since it gives better results, but my info could be stale.

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

I'll choose dav1d+libaom. Dav1d is focused on reducing the power
required for decoding, which is really important in these early days of
AV1.

I can make those changes locally when pushing later today.
L
L
Leo Famulari wrote on 22 Mar 2021 22:21
(name . Vinicius Monego)(address . monego@posteo.net)(address . 47311@debbugs.gnu.org)
YFkKRBu92/UmMQqP@jasmine.lan
On Mon, Mar 22, 2021 at 05:35:23PM -0300, Vinicius Monego wrote:
Toggle quote (2 lines)
> Oh, and the license is wrong, it's lgpl3+.

Noted
L
L
Leo Famulari wrote on 23 Mar 2021 18:30
(name . Vinicius Monego)(address . monego@posteo.net)(address . 47311-done@debbugs.gnu.org)
YFol0GazkbcvmRuW@jasmine.lan
On Mon, Mar 22, 2021 at 01:29:40AM -0300, Vinicius Monego wrote:
Toggle quote (2 lines)
> * gnu/packages/image.scm (libheif): New variable.

Pushed as 8fae75a3584c19c9b2c705b49c600c23dccc8799 with the changes we
discussed.

Thanks again!
Closed
?