diff mbox series

[meta-multimedia] libheif: add recipe

Message ID 20250105181653.364883-1-f_l_k@t-online.de
State Accepted
Headers show
Series [meta-multimedia] libheif: add recipe | expand

Commit Message

Markus Volk Jan. 5, 2025, 6:16 p.m. UTC
libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder. There is partial support for ISO/IEC 23008-12:2022 (2nd Edition) capabilities.

HEIF and AVIF are new image file formats employing HEVC (H.265) or AV1 image coding, respectively, for the best compression ratios currently possible.

libheif makes use of libde265 for HEIF image decoding and x265 for encoding. For AVIF, libaom, dav1d, svt-av1, or rav1e are used as codecs.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 .../libheif/libheif_1.19.5.bb                 | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb

Comments

Khem Raj Jan. 6, 2025, 3:24 p.m. UTC | #1
it fails layer compat check see

https://valkyrie.yoctoproject.org/#/builders/81/builds/251/steps/11/logs/errors

On Sun, Jan 5, 2025 at 10:17 AM Markus Volk via lists.openembedded.org
<f_l_k=t-online.de@lists.openembedded.org> wrote:
>
> libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder. There is partial support for ISO/IEC 23008-12:2022 (2nd Edition) capabilities.
>
> HEIF and AVIF are new image file formats employing HEVC (H.265) or AV1 image coding, respectively, for the best compression ratios currently possible.
>
> libheif makes use of libde265 for HEIF image decoding and x265 for encoding. For AVIF, libaom, dav1d, svt-av1, or rav1e are used as codecs.
>
> Signed-off-by: Markus Volk <f_l_k@t-online.de>
> ---
>  .../libheif/libheif_1.19.5.bb                 | 23 +++++++++++++++++++
>  1 file changed, 23 insertions(+)
>  create mode 100644 meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb
>
> diff --git a/meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb b/meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb
> new file mode 100644
> index 0000000000..144d899f3f
> --- /dev/null
> +++ b/meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb
> @@ -0,0 +1,23 @@
> +SUMMARY = "libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder"
> +HOMEPAGE = "https://github.com/strukturag/libheif"
> +LICENSE = "LGPL-3.0-only"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=f07b2bc152eaee52edbd338825f474d4"
> +
> +SRC_URI = "git://github.com/strukturag/libheif.git;protocol=https;branch=master"
> +
> +S = "${WORKDIR}/git"
> +SRCREV = "cd95b113d78d0696105a9e678cbd19487ee13d6c"
> +
> +inherit cmake pkgconfig
> +
> +DEPENDS += "gdk-pixbuf openh264 x265 libde265 tiff zlib libpng"
> +
> +PACKAGECONFIG += "dav1d jpeg jpeg2000 ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)}"
> +PACKAGECONFIG[aom] = "-DWITH_AOM_ENCODER=ON -DWITH_AOM_DECODER=ON,-DWITH_AOM_ENCODER=OFF -DWITH_AOM_DECODER=OFF,aom"
> +PACKAGECONFIG[dav1d] = "-DWITH_DAV1D=ON, -DWITH_DAV1D=OFF,dav1d"
> +PACKAGECONFIG[svt-av1] = "-DWITH_SvtEnc=ON,-DWITH_SvtEnc=OFF,svt-av1"
> +PACKAGECONFIG[jpeg] = "-DWITH_JPEG_DECODER=ON -DWITH_JPEG_ENCODER=ON,-DWITH_JPEG_ENCODER=OFF -DWITH_JPEG_DECODER=OFF,jpeg"
> +PACKAGECONFIG[ffmpeg] = "-DWITH_FFMPEG_DECODER=ON,-DWITH_FFMPEG_DECODER=OFF,ffmpeg"
> +PACKAGECONFIG[jpeg2000] = "-DWITH_OpenJPEG_ENCODER=ON -DWITH_OpenJPEG_DECODER=ON,-DWITH_OpenJPEG_ENCODER=OFF -DWITH_OpenJPEG_DECODER=OFF,openjpeg"
> +
> +FILES:${PN} += "${libdir}/libheif ${datadir}/thumbnailers ${libdir}/gdk-pixbuf*"
> --
> 2.47.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#114630): https://lists.openembedded.org/g/openembedded-devel/message/114630
> Mute This Topic: https://lists.openembedded.org/mt/110442845/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Markus Volk Jan. 6, 2025, 4:29 p.m. UTC | #2
On Mon, Jan 6 2025 at 07:24:30 -08:00:00, Khem Raj via 
lists.openembedded.org <raj.khem=gmail.com@lists.openembedded.org> 
wrote:
> it fails layer compat check see


x265 is restricted to x86 systems.
I would recommend to drop the restriction. For example it also builds 
for qemuarm


In addition the libheif.bb lacks an entry for LICENSE_FLAGS_ACCEPTED = 
"commercial"


openh264 and libde265 are not added as RDEPENDS in:
 
<https://github.com/openembedded/meta-openembedded/blob/master/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb>

Is there a reason, why they are not added as RDEPENDS by default? If so 
I'll move the libheif recipe to my personal layer
If it's ok to add them, I'll send a v2 trying to fix the issues
Khem Raj Jan. 6, 2025, 6:23 p.m. UTC | #3
On Mon, Jan 6, 2025 at 8:29 AM Markus Volk <f_l_k@t-online.de> wrote:
>
> On Mon, Jan 6 2025 at 07:24:30 -08:00:00, Khem Raj via lists.openembedded.org <raj.khem=gmail.com@lists.openembedded.org> wrote:
>
> it fails layer compat check see
>
>
>
> x265 is restricted to x86 systems.
> I would recommend to drop the restriction. For example it also builds for qemuarm
>
>
> In addition the libheif.bb lacks an entry for LICENSE_FLAGS_ACCEPTED = "commercial"
>
>
> openh264 and libde265 are not added as RDEPENDS in:
>  https://github.com/openembedded/meta-openembedded/blob/master/meta-multimedia/recipes-multimedia/packagegroups/packagegroup-meta-multimedia.bb
>
> Is there a reason, why they are not added as RDEPENDS by default? If so I'll move the libheif recipe to my personal layer
> If it's ok to add them, I'll send a v2 trying to fix the issues

Adding might be fine in a v2 perhaps they did not build for non x86
and non aarch64 architectures. Things might have changed with time
so enabling it for other architectures as well might be worth trying.

>
diff mbox series

Patch

diff --git a/meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb b/meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb
new file mode 100644
index 0000000000..144d899f3f
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libheif/libheif_1.19.5.bb
@@ -0,0 +1,23 @@ 
+SUMMARY = "libheif is an ISO/IEC 23008-12:2017 HEIF and AVIF (AV1 Image File Format) file format decoder and encoder"
+HOMEPAGE = "https://github.com/strukturag/libheif"
+LICENSE = "LGPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f07b2bc152eaee52edbd338825f474d4"
+
+SRC_URI = "git://github.com/strukturag/libheif.git;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+SRCREV = "cd95b113d78d0696105a9e678cbd19487ee13d6c"
+
+inherit cmake pkgconfig
+
+DEPENDS += "gdk-pixbuf openh264 x265 libde265 tiff zlib libpng"
+
+PACKAGECONFIG += "dav1d jpeg jpeg2000 ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)}"
+PACKAGECONFIG[aom] = "-DWITH_AOM_ENCODER=ON -DWITH_AOM_DECODER=ON,-DWITH_AOM_ENCODER=OFF -DWITH_AOM_DECODER=OFF,aom"
+PACKAGECONFIG[dav1d] = "-DWITH_DAV1D=ON, -DWITH_DAV1D=OFF,dav1d"
+PACKAGECONFIG[svt-av1] = "-DWITH_SvtEnc=ON,-DWITH_SvtEnc=OFF,svt-av1"
+PACKAGECONFIG[jpeg] = "-DWITH_JPEG_DECODER=ON -DWITH_JPEG_ENCODER=ON,-DWITH_JPEG_ENCODER=OFF -DWITH_JPEG_DECODER=OFF,jpeg"
+PACKAGECONFIG[ffmpeg] = "-DWITH_FFMPEG_DECODER=ON,-DWITH_FFMPEG_DECODER=OFF,ffmpeg"
+PACKAGECONFIG[jpeg2000] = "-DWITH_OpenJPEG_ENCODER=ON -DWITH_OpenJPEG_DECODER=ON,-DWITH_OpenJPEG_ENCODER=OFF -DWITH_OpenJPEG_DECODER=OFF,openjpeg"
+
+FILES:${PN} += "${libdir}/libheif ${datadir}/thumbnailers ${libdir}/gdk-pixbuf*"