mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-16 14:29:05 -07:00
kde-frameworks/kimageformats: Fix AVIF performance
See also: https://mail.kde.org/pipermail/distributions/2022-October/001309.html Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
From 350ce1b990460cb2178f369f22fe80803f5645f3 Mon Sep 17 00:00:00 2001
|
||||
From: Fushan Wen <qydwhotmail@gmail.com>
|
||||
Date: Sat, 15 Oct 2022 11:40:41 +0800
|
||||
Subject: [PATCH] avif: return `false` in `canRead()` when `imageIndex >=
|
||||
imageCount`
|
||||
|
||||
Otherwise when `cache: false` is set in AnimatedImage, QMovie will try
|
||||
to read the image forever.
|
||||
|
||||
BUG: 460085
|
||||
FIXED-IN: 5.100
|
||||
---
|
||||
src/imageformats/avif.cpp | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/imageformats/avif.cpp b/src/imageformats/avif.cpp
|
||||
index 2865a4e..c4f7a0f 100644
|
||||
--- a/src/imageformats/avif.cpp
|
||||
+++ b/src/imageformats/avif.cpp
|
||||
@@ -42,6 +42,11 @@ bool QAVIFHandler::canRead() const
|
||||
|
||||
if (m_parseState != ParseAvifError) {
|
||||
setFormat("avif");
|
||||
+
|
||||
+ if (m_parseState == ParseAvifSuccess && m_decoder->imageIndex >= m_decoder->imageCount - 1) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
From 1190e53e9b69da6f9663ceb75c4813c5708b7cbd Mon Sep 17 00:00:00 2001
|
||||
From: Fushan Wen <qydwhotmail@gmail.com>
|
||||
Date: Sat, 15 Oct 2022 14:11:56 +0800
|
||||
Subject: [PATCH] avif: always indicate endless loop
|
||||
|
||||
avif does not support loops but endless loop was the behavior before
|
||||
460085 was fixed, so a workaround is added.
|
||||
|
||||
See also: https://github.com/AOMediaCodec/libavif/issues/347
|
||||
|
||||
CCBUG: 460085
|
||||
---
|
||||
src/imageformats/avif.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/imageformats/avif.cpp b/src/imageformats/avif.cpp
|
||||
index c4f7a0f..24aec84 100644
|
||||
--- a/src/imageformats/avif.cpp
|
||||
+++ b/src/imageformats/avif.cpp
|
||||
@@ -1024,7 +1024,8 @@ int QAVIFHandler::loopCount() const
|
||||
return 0;
|
||||
}
|
||||
|
||||
- return 1;
|
||||
+ // Endless loop to work around https://github.com/AOMediaCodec/libavif/issues/347
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
QPointF QAVIFHandler::CompatibleChromacity(qreal chrX, qreal chrY)
|
||||
--
|
||||
GitLab
|
||||
|
||||
44
kde-frameworks/kimageformats/kimageformats-5.99.0-r1.ebuild
Normal file
44
kde-frameworks/kimageformats/kimageformats-5.99.0-r1.ebuild
Normal file
@@ -0,0 +1,44 @@
|
||||
# Copyright 1999-2022 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
ECM_QTHELP="false"
|
||||
PVCUT=$(ver_cut 1-2)
|
||||
QTMIN=5.15.5
|
||||
VIRTUALX_REQUIRED="test"
|
||||
inherit ecm frameworks.kde.org
|
||||
|
||||
DESCRIPTION="Framework providing additional format plugins for Qt's image I/O system"
|
||||
|
||||
LICENSE="LGPL-2+"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
|
||||
IUSE="avif eps heif jpegxl openexr raw"
|
||||
|
||||
DEPEND="
|
||||
>=dev-qt/qtgui-${QTMIN}:5
|
||||
=kde-frameworks/karchive-${PVCUT}*:5
|
||||
avif? ( >=media-libs/libavif-0.8.2:= )
|
||||
eps? ( >=dev-qt/qtprintsupport-${QTMIN}:5 )
|
||||
heif? ( >=media-libs/libheif-1.10.0:= )
|
||||
jpegxl? ( media-libs/libjxl )
|
||||
openexr? ( >=media-libs/openexr-3:= )
|
||||
raw? ( media-libs/libraw:= )
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
DOCS=( src/imageformats/AUTHORS )
|
||||
|
||||
PATCHES=( "${FILESDIR}"/${P}-avif-perf-{1,2}.patch )
|
||||
|
||||
src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DKIMAGEFORMATS_JXL=$(usex jpegxl)
|
||||
$(cmake_use_find_package avif libavif)
|
||||
$(cmake_use_find_package eps Qt5PrintSupport)
|
||||
-DKIMAGEFORMATS_HEIF=$(usex heif)
|
||||
$(cmake_use_find_package openexr OpenEXR)
|
||||
$(cmake_use_find_package raw LibRaw)
|
||||
)
|
||||
ecm_src_configure
|
||||
}
|
||||
Reference in New Issue
Block a user