diff --git a/media-libs/libheif/Manifest b/media-libs/libheif/Manifest
index cb35aa8230d83..df2f6c9d2f9bc 100644
--- a/media-libs/libheif/Manifest
+++ b/media-libs/libheif/Manifest
@@ -1 +1,2 @@
DIST libheif-1.18.2.tar.gz 1525096 BLAKE2B 667a68f324f89b2274ea837ec8d40ada5450dce79f2b8d9e8ba365fe5f02d4222195109519380a6d38c4ebca929575e58c3a8e517aed27a2696d67db3e287556 SHA512 8fd47dbc8e31fdb6a972c852bc4e78440492ee3dd769e139f28ad489ccc23e6cf42a90cd23b16405fa30df3c7c43c78b2b65d5ca3ffb449bf06789b457ed3072
+DIST libheif-1.19.7.tar.gz 1717186 BLAKE2B 78c7db44b9131fbf46516fdb1ef149dd402e11512f600f6b0d5d73768d760cce023e4f2481accdbfb1826c9be9668f933b57a6c2a6da58b731c6aa409d94750b SHA512 b0c3226c528daf78d8e8f73b5a07b9104e3ff036c553a66fdd0ca494380d8fb03c799241f0ea66b5f7e42d4fec87d186571f2aae9ac4820ffd7ff76d704f487b
diff --git a/media-libs/libheif/libheif-1.19.7.ebuild b/media-libs/libheif/libheif-1.19.7.ebuild
new file mode 100644
index 0000000000000..18b3175ee23db
--- /dev/null
+++ b/media-libs/libheif/libheif-1.19.7.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake-multilib gnome2-utils xdg
+
+DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder"
+HOMEPAGE="https://github.com/strukturag/libheif"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/strukturag/libheif.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/strukturag/libheif/releases/download/v${PV}/${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+fi
+
+LICENSE="GPL-3"
+SLOT="0/$(ver_cut 1-2)"
+IUSE="+aom doc examples gdk-pixbuf go openh264 rav1e svt-av1 test +threads +webp x265"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ doc? ( app-text/doxygen )
+ go? ( dev-lang/go:= )
+"
+DEPEND="
+ media-libs/dav1d:=[${MULTILIB_USEDEP}]
+ media-libs/libde265[${MULTILIB_USEDEP}]
+ media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}]
+ media-libs/libpng:=[${MULTILIB_USEDEP}]
+ media-libs/tiff:=[${MULTILIB_USEDEP}]
+ sys-libs/zlib:=[${MULTILIB_USEDEP}]
+ aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] )
+ gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
+ rav1e? ( media-video/rav1e:= )
+ svt-av1? ( media-libs/svt-av1:=[${MULTILIB_USEDEP}] )
+ webp? ( media-libs/libwebp:= )
+ x265? ( media-libs/x265:=[${MULTILIB_USEDEP}] )
+"
+RDEPEND="${DEPEND}"
+
+MULTILIB_WRAPPED_HEADERS=(
+ /usr/include/libheif/heif_version.h
+)
+
+multilib_src_configure() {
+ export GO111MODULE=auto
+
+ local mycmakeargs=(
+ $(cmake_use_find_package doc Doxygen)
+ -DBUILD_TESTING=$(usex test)
+ -DENABLE_PLUGIN_LOADING=true
+ -DWITH_LIBDE265=true
+ -DWITH_AOM_DECODER=$(usex aom)
+ -DWITH_AOM_ENCODER=$(usex aom)
+ -DWITH_EXAMPLES=$(usex examples)
+ -DWITH_GDK_PIXBUF=$(usex gdk-pixbuf)
+ -DWITH_OpenH264_DECODER=$(usex openh264)
+ -DWITH_OpenH264_ENCODER=$(usex openh264)
+ -DWITH_RAV1E=$(multilib_native_usex rav1e)
+ -DWITH_SvtEnc=$(usex svt-av1)
+ -DWITH_LIBSHARPYUV=$(usex webp)
+ -DWITH_X265=$(usex x265)
+ -DWITH_KVAZAAR=true
+ -DWITH_JPEG_DECODER=true
+ -DWITH_JPEG_ENCODER=true
+ -DWITH_OpenJPEG_DECODER=true
+ -DWITH_OpenJPEG_ENCODER=true
+ )
+
+ cmake_src_configure
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
+}
diff --git a/media-libs/libheif/libheif-9999.ebuild b/media-libs/libheif/libheif-9999.ebuild
index e55830a930cc4..18b3175ee23db 100644
--- a/media-libs/libheif/libheif-9999.ebuild
+++ b/media-libs/libheif/libheif-9999.ebuild
@@ -1,9 +1,12 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-inherit cmake xdg multilib-minimal
+inherit cmake-multilib gnome2-utils xdg
+
+DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder"
+HOMEPAGE="https://github.com/strukturag/libheif"
if [[ ${PV} == *9999* ]] ; then
EGIT_REPO_URI="https://github.com/strukturag/libheif.git"
@@ -13,31 +16,25 @@ else
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
fi
-DESCRIPTION="ISO/IEC 23008-12:2017 HEIF file format decoder and encoder"
-HOMEPAGE="https://github.com/strukturag/libheif"
-
LICENSE="GPL-3"
SLOT="0/$(ver_cut 1-2)"
-IUSE="+aom gdk-pixbuf go rav1e svt-av1 test +threads +webp x265"
-REQUIRED_USE="test? ( go )"
+IUSE="+aom doc examples gdk-pixbuf go openh264 rav1e svt-av1 test +threads +webp x265"
RESTRICT="!test? ( test )"
BDEPEND="
- test? (
- dev-cpp/catch
- dev-lang/go
- )
+ doc? ( app-text/doxygen )
+ go? ( dev-lang/go:= )
"
DEPEND="
media-libs/dav1d:=[${MULTILIB_USEDEP}]
media-libs/libde265[${MULTILIB_USEDEP}]
- media-libs/libpng:0=[${MULTILIB_USEDEP}]
+ media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}]
+ media-libs/libpng:=[${MULTILIB_USEDEP}]
media-libs/tiff:=[${MULTILIB_USEDEP}]
sys-libs/zlib:=[${MULTILIB_USEDEP}]
- media-libs/libjpeg-turbo:0=[${MULTILIB_USEDEP}]
aom? ( >=media-libs/libaom-2.0.0:=[${MULTILIB_USEDEP}] )
gdk-pixbuf? ( x11-libs/gdk-pixbuf[${MULTILIB_USEDEP}] )
- go? ( dev-lang/go )
+ openh264? ( media-libs/openh264:=[${MULTILIB_USEDEP}] )
rav1e? ( media-video/rav1e:= )
svt-av1? ( media-libs/svt-av1:=[${MULTILIB_USEDEP}] )
webp? ( media-libs/libwebp:= )
@@ -49,28 +46,22 @@ MULTILIB_WRAPPED_HEADERS=(
/usr/include/libheif/heif_version.h
)
-src_prepare() {
- if use test ; then
- # bug 865351
- rm tests/catch.hpp || die
- ln -s "${ESYSROOT}"/usr/include/catch2/catch.hpp tests/catch.hpp || die
- fi
-
- cmake_src_prepare
-
- multilib_copy_sources
-}
-
multilib_src_configure() {
export GO111MODULE=auto
+
local mycmakeargs=(
+ $(cmake_use_find_package doc Doxygen)
+ -DBUILD_TESTING=$(usex test)
-DENABLE_PLUGIN_LOADING=true
-DWITH_LIBDE265=true
-DWITH_AOM_DECODER=$(usex aom)
-DWITH_AOM_ENCODER=$(usex aom)
+ -DWITH_EXAMPLES=$(usex examples)
-DWITH_GDK_PIXBUF=$(usex gdk-pixbuf)
- -DWITH_RAV1E="$(multilib_native_usex rav1e)"
- -DWITH_SvtEnc="$(usex svt-av1)"
+ -DWITH_OpenH264_DECODER=$(usex openh264)
+ -DWITH_OpenH264_ENCODER=$(usex openh264)
+ -DWITH_RAV1E=$(multilib_native_usex rav1e)
+ -DWITH_SvtEnc=$(usex svt-av1)
-DWITH_LIBSHARPYUV=$(usex webp)
-DWITH_X265=$(usex x265)
-DWITH_KVAZAAR=true
@@ -79,22 +70,16 @@ multilib_src_configure() {
-DWITH_OpenJPEG_DECODER=true
-DWITH_OpenJPEG_ENCODER=true
)
+
cmake_src_configure
}
-multilib_src_compile() {
- default
- cmake_src_compile
+pkg_postinst() {
+ xdg_pkg_postinst
+ use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
}
-multilib_src_test() {
- default
-}
-
-multilib_src_install() {
- cmake_src_install
-}
-
-multilib_src_install_all() {
- einstalldocs
+pkg_postrm() {
+ xdg_pkg_postrm
+ use gdk-pixbuf && multilib_foreach_abi gnome2_gdk_pixbuf_update
}
diff --git a/media-libs/libheif/metadata.xml b/media-libs/libheif/metadata.xml
index c7254be4a3cae..0effcbe0a7222 100644
--- a/media-libs/libheif/metadata.xml
+++ b/media-libs/libheif/metadata.xml
@@ -6,6 +6,7 @@
Use media-libs/libaom for AVIF encoding/decoding
Enable x11-libs/gdk-pixbuf plugin
Enable building dev-lang/go code/examples
+ Enable H.264 support using media-libs/openh264
Use media-video/rav1e for AVIF encoding
Use media-libs/svt-av1 for SVT-AV1 encoding
Enable high-quality YCbCr/RGB color space conversion algorithms