Summary: | preview of next/previous HEIF (iPhone) image is very slow | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | rfeg <rfeg.art> |
Component: | Plugin-DImg-HEIF | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED UPSTREAM | ||
Severity: | normal | CC: | caulier.gilles, kde, metzpinguin |
Priority: | NOR | Keywords: | efficiency, usability |
Version: | 7.3.0 | ||
Target Milestone: | --- | ||
Platform: | macOS (DMG) | ||
OS: | macOS | ||
Latest Commit: | Version Fixed In: | 8.1.0 | |
Sentry Crash Report: |
Description
rfeg
2021-08-28 10:36:48 UTC
Actually, the libheif/libde265 are compiled in digiKam core (code is included as well without any optimization at compilation). https://invent.kde.org/graphics/digikam/-/tree/master/core/libs/heifutils The plan is to remove this code and to use the system based library, which must include optimizations. Gilles Caulier Anther point is the cache memory used to store pre-loaded images. Under MacOS, a fix have been added to current code to detect properly the amount of MacOS RAW available. This can improve speedup of preview loading. Gilles Caulier thanks for the info, but my comment/bug is the big difference of time needed to process and display the embedded JPEG preview from a HEIF iPhone file vs a RAW file (HEIF is slow, RAW is fast). @Caullier: do you think that using native library will fix this? will HEIF native library be included in ver 8.0 A current log from the digiKam start of the last MacOS package would be nice. Maik Git commit 4ee4669ce59fd6ed174e9e00f2bff7ee007d008d by Gilles Caulier. Committed on 18/11/2021 at 13:06. Pushed by cgilles into branch 'master'. Add find libheif cmake script to use native version of library, included dependencies A +73 -0 core/cmake/modules/FindHEIF.cmake M +1 -1 core/cmake/modules/FindLensFun.cmake M +1 -1 core/cmake/modules/FindX265.cmake https://invent.kde.org/graphics/digikam/commit/4ee4669ce59fd6ed174e9e00f2bff7ee007d008d Git commit f6ec12dfb701d1d77be979dee7c72537551af86d by Gilles Caulier. Committed on 03/03/2022 at 10:34. Pushed by cgilles into branch 'qt5-maintenance'. Remove internal libheif and libde265 from digiKam core in favor of system libraries to inherits of last decoding optimizations and native accelerations. Show libheif version in Components Info dialog. Tested with AppImage bundle compilation workflow. TODO check Linux native, MacOS, and Windows targets. M +1 -0 NEWS M +1 -1 bootstrap.linux M +3 -5 core/CMakeLists.txt M +3 -2 core/app/DigikamCoreTarget.cmake M +6 -5 core/cmake/modules/FindHEIF.cmake M +1 -0 core/dplugins/dimg/heif/CMakeLists.txt M +4 -1 core/dplugins/dimg/heif/dimgheifloader.h M +0 -1 core/libs/CMakeLists.txt M +4 -0 core/libs/dialogs/libsinfodlg.cpp D +0 -230 core/libs/heifutils/CMakeLists.txt D +0 -3 core/libs/heifutils/README D +0 -4 core/libs/heifutils/libde265/README D +0 -359 core/libs/heifutils/libde265/acceleration.h D +0 -99 core/libs/heifutils/libde265/alloc_pool.cc D +0 -61 core/libs/heifutils/libde265/alloc_pool.h D +0 -176 core/libs/heifutils/libde265/bitstream.cc D +0 -63 core/libs/heifutils/libde265/bitstream.h D +0 -1033 core/libs/heifutils/libde265/cabac.cc D +0 -211 core/libs/heifutils/libde265/cabac.h D +0 -491 core/libs/heifutils/libde265/configparam.cc D +0 -401 core/libs/heifutils/libde265/configparam.h D +0 -347 core/libs/heifutils/libde265/contextmodel.cc D +0 -130 core/libs/heifutils/libde265/contextmodel.h D +0 -36 core/libs/heifutils/libde265/de265-version.h.in D +0 -711 core/libs/heifutils/libde265/de265.cc D +0 -437 core/libs/heifutils/libde265/de265.h D +0 -1058 core/libs/heifutils/libde265/deblock.cc D +0 -29 core/libs/heifutils/libde265/deblock.h D +0 -2285 core/libs/heifutils/libde265/decctx.cc D +0 -528 core/libs/heifutils/libde265/decctx.h D +0 -296 core/libs/heifutils/libde265/dpb.cc D +0 -118 core/libs/heifutils/libde265/dpb.h D +0 -321 core/libs/heifutils/libde265/en265.cc D +0 -218 core/libs/heifutils/libde265/en265.h D +0 -95 core/libs/heifutils/libde265/encoder/algo/algo.cc D +0 -95 core/libs/heifutils/libde265/encoder/algo/algo.h D +0 -113 core/libs/heifutils/libde265/encoder/algo/cb-interpartmode.cc D +0 -108 core/libs/heifutils/libde265/encoder/algo/cb-interpartmode.h D +0 -132 core/libs/heifutils/libde265/encoder/algo/cb-intra-inter.cc D +0 -68 core/libs/heifutils/libde265/encoder/algo/cb-intra-inter.h D +0 -185 core/libs/heifutils/libde265/encoder/algo/cb-intrapartmode.cc D +0 -149 core/libs/heifutils/libde265/encoder/algo/cb-intrapartmode.h D +0 -176 core/libs/heifutils/libde265/encoder/algo/cb-mergeindex.cc D +0 -70 core/libs/heifutils/libde265/encoder/algo/cb-mergeindex.h D +0 -114 core/libs/heifutils/libde265/encoder/algo/cb-skip.cc D +0 -72 core/libs/heifutils/libde265/encoder/algo/cb-skip.h D +0 -178 core/libs/heifutils/libde265/encoder/algo/cb-split.cc D +0 -88 core/libs/heifutils/libde265/encoder/algo/cb-split.h D +0 -202 core/libs/heifutils/libde265/encoder/algo/coding-options.cc D +0 -151 core/libs/heifutils/libde265/encoder/algo/coding-options.h D +0 -61 core/libs/heifutils/libde265/encoder/algo/ctb-qscale.cc D +0 -109 core/libs/heifutils/libde265/encoder/algo/ctb-qscale.h D +0 -318 core/libs/heifutils/libde265/encoder/algo/pb-mv.cc D +0 -177 core/libs/heifutils/libde265/encoder/algo/pb-mv.h D +0 -532 core/libs/heifutils/libde265/encoder/algo/tb-intrapredmode.cc D +0 -297 core/libs/heifutils/libde265/encoder/algo/tb-intrapredmode.h D +0 -46 core/libs/heifutils/libde265/encoder/algo/tb-rateestim.cc D +0 -101 core/libs/heifutils/libde265/encoder/algo/tb-rateestim.h D +0 -378 core/libs/heifutils/libde265/encoder/algo/tb-split.cc D +0 -126 core/libs/heifutils/libde265/encoder/algo/tb-split.h D +0 -254 core/libs/heifutils/libde265/encoder/algo/tb-transform.cc D +0 -86 core/libs/heifutils/libde265/encoder/algo/tb-transform.h D +0 -313 core/libs/heifutils/libde265/encoder/encoder-context.cc D +0 -173 core/libs/heifutils/libde265/encoder/encoder-context.h D +0 -428 core/libs/heifutils/libde265/encoder/encoder-core.cc D +0 -151 core/libs/heifutils/libde265/encoder/encoder-core.h D +0 -340 core/libs/heifutils/libde265/encoder/encoder-intrapred.cc D +0 -40 core/libs/heifutils/libde265/encoder/encoder-intrapred.h D +0 -80 core/libs/heifutils/libde265/encoder/encoder-motion.cc D +0 -32 core/libs/heifutils/libde265/encoder/encoder-motion.h D +0 -83 core/libs/heifutils/libde265/encoder/encoder-params.cc D +0 -143 core/libs/heifutils/libde265/encoder/encoder-params.h D +0 -1730 core/libs/heifutils/libde265/encoder/encoder-syntax.cc D +0 -102 core/libs/heifutils/libde265/encoder/encoder-syntax.h D +0 -766 core/libs/heifutils/libde265/encoder/encoder-types.cc D +0 -409 core/libs/heifutils/libde265/encoder/encoder-types.h D +0 -321 core/libs/heifutils/libde265/encoder/encpicbuf.cc D +0 -144 core/libs/heifutils/libde265/encoder/encpicbuf.h D +0 -106 core/libs/heifutils/libde265/encoder/sop.cc D +0 -147 core/libs/heifutils/libde265/encoder/sop.h D +0 -136 core/libs/heifutils/libde265/extra/win32cond.cc D +0 -65 core/libs/heifutils/libde265/extra/win32cond.h D +0 -1210 core/libs/heifutils/libde265/fallback-dct.cc D +0 -96 core/libs/heifutils/libde265/fallback-dct.h D +0 -648 core/libs/heifutils/libde265/fallback-motion.cc D +0 -104 core/libs/heifutils/libde265/fallback-motion.h D +0 -127 core/libs/heifutils/libde265/fallback.cc D +0 -28 core/libs/heifutils/libde265/fallback.h D +0 -220 core/libs/heifutils/libde265/image-io.cc D +0 -121 core/libs/heifutils/libde265/image-io.h D +0 -815 core/libs/heifutils/libde265/image.cc D +0 -864 core/libs/heifutils/libde265/image.h D +0 -364 core/libs/heifutils/libde265/intrapred.cc D +0 -678 core/libs/heifutils/libde265/intrapred.h D +0 -295 core/libs/heifutils/libde265/md5.cc D +0 -45 core/libs/heifutils/libde265/md5.h D +0 -2111 core/libs/heifutils/libde265/motion.cc D +0 -131 core/libs/heifutils/libde265/motion.h D +0 -446 core/libs/heifutils/libde265/nal-parser.cc D +0 -154 core/libs/heifutils/libde265/nal-parser.h D +0 -166 core/libs/heifutils/libde265/nal.cc D +0 -129 core/libs/heifutils/libde265/nal.h D +0 -992 core/libs/heifutils/libde265/pps.cc D +0 -163 core/libs/heifutils/libde265/pps.h D +0 -111 core/libs/heifutils/libde265/quality.cc D +0 -47 core/libs/heifutils/libde265/quality.h D +0 -434 core/libs/heifutils/libde265/refpic.cc D +0 -61 core/libs/heifutils/libde265/refpic.h D +0 -524 core/libs/heifutils/libde265/sao.cc D +0 -36 core/libs/heifutils/libde265/sao.h D +0 -152 core/libs/heifutils/libde265/scan.cc D +0 -43 core/libs/heifutils/libde265/scan.h D +0 -501 core/libs/heifutils/libde265/sei.cc D +0 -89 core/libs/heifutils/libde265/sei.h D +0 -5072 core/libs/heifutils/libde265/slice.cc D +0 -313 core/libs/heifutils/libde265/slice.h D +0 -1298 core/libs/heifutils/libde265/sps.cc D +0 -257 core/libs/heifutils/libde265/sps.h D +0 -312 core/libs/heifutils/libde265/threads.cc D +0 -148 core/libs/heifutils/libde265/threads.h D +0 -739 core/libs/heifutils/libde265/transform.cc D +0 -65 core/libs/heifutils/libde265/transform.h D +0 -247 core/libs/heifutils/libde265/util.cc D +0 -229 core/libs/heifutils/libde265/util.h D +0 -562 core/libs/heifutils/libde265/visualize.cc D +0 -50 core/libs/heifutils/libde265/visualize.h D +0 -602 core/libs/heifutils/libde265/vps.cc D +0 -173 core/libs/heifutils/libde265/vps.h D +0 -425 core/libs/heifutils/libde265/vui.cc D +0 -126 core/libs/heifutils/libde265/vui.h D +0 -5 core/libs/heifutils/libheif/README D +0 -615 core/libs/heifutils/libheif/bitstream.cc D +0 -285 core/libs/heifutils/libheif/bitstream.h D +0 -2887 core/libs/heifutils/libheif/box.cc D +0 -858 core/libs/heifutils/libheif/box.h D +0 -170 core/libs/heifutils/libheif/error.cc D +0 -109 core/libs/heifutils/libheif/error.h D +0 -1883 core/libs/heifutils/libheif/heif.cc D +0 -1234 core/libs/heifutils/libheif/heif.h D +0 -66 core/libs/heifutils/libheif/heif_api_structs.h D +0 -2453 core/libs/heifutils/libheif/heif_colorconversion.cc D +0 -129 core/libs/heifutils/libheif/heif_colorconversion.h D +0 -1975 core/libs/heifutils/libheif/heif_context.cc D +0 -296 core/libs/heifutils/libheif/heif_context.h D +0 -1029 core/libs/heifutils/libheif/heif_cxx.h D +0 -355 core/libs/heifutils/libheif/heif_decoder_libde265.cc D +0 -26 core/libs/heifutils/libheif/heif_decoder_libde265.h D +0 -854 core/libs/heifutils/libheif/heif_encoder_x265.cc D +0 -40 core/libs/heifutils/libheif/heif_encoder_x265.h D +0 -657 core/libs/heifutils/libheif/heif_file.cc D +0 -165 core/libs/heifutils/libheif/heif_file.h D +0 -302 core/libs/heifutils/libheif/heif_hevc.cc D +0 -61 core/libs/heifutils/libheif/heif_hevc.h D +0 -812 core/libs/heifutils/libheif/heif_image.cc D +0 -130 core/libs/heifutils/libheif/heif_image.h D +0 -49 core/libs/heifutils/libheif/heif_limits.h D +0 -32 core/libs/heifutils/libheif/heif_plugin.cc D +0 -254 core/libs/heifutils/libheif/heif_plugin.h D +0 -148 core/libs/heifutils/libheif/heif_plugin_registry.cc D +0 -62 core/libs/heifutils/libheif/heif_plugin_registry.h D +0 -36 core/libs/heifutils/libheif/heif_version.h.in D +0 -63 core/libs/heifutils/libheif/logging.h M +0 -2 core/libs/metadataengine/CMakeLists.txt M +4 -1 core/libs/metadataengine/dmetadata/dmetadata_libheif.cpp M +42 -86 project/bundles/3rdparty/ext_heif/CMakeLists.txt M +17 -8 project/bundles/3rdparty/ext_heif/de265-lib-linux.patch M +13 -41 project/bundles/3rdparty/ext_heif/de265-lib-mxe.patch D +0 -13 project/bundles/3rdparty/ext_heif/heif-lib-macports.patch M +32 -16 project/bundles/3rdparty/ext_heif/heif-lib-mxe.patch D +0 -13 project/bundles/3rdparty/ext_heif/libde265.pc.in_cmake D +0 -15 project/bundles/3rdparty/ext_heif/libheif.pc.in_cmake https://invent.kde.org/graphics/digikam/commit/f6ec12dfb701d1d77be979dee7c72537551af86d Git commit a0ea1ad2e105107b040781910c589473bca753db by Gilles Caulier. Committed on 03/03/2022 at 10:41. Pushed by cgilles into branch 'qt5-maintenance'. add libheif build for AppImage M +1 -0 project/bundles/appimage/01-build-host.sh https://invent.kde.org/graphics/digikam/commit/a0ea1ad2e105107b040781910c589473bca753db Git commit 60223e3ec1eddb7120168d9c6e7eaf1e40c39dfd by Gilles Caulier. Committed on 03/03/2022 at 11:20. Pushed by cgilles into branch 'qt5-maintenance'. Add libheif dependency list M +1 -0 Mainpage.dox https://invent.kde.org/graphics/digikam/commit/60223e3ec1eddb7120168d9c6e7eaf1e40c39dfd Git commit 9d66c7989d870239914c7175a7a0e92101ce39cb by Gilles Caulier. Committed on 03/03/2022 at 12:35. Pushed by cgilles into branch 'qt5-maintenance'. Add libheif compilation rules for Windows target using MXE. M +3 -15 project/bundles/3rdparty/ext_heif/CMakeLists.txt M +1 -0 project/bundles/mxe/01-build-mxe.sh https://invent.kde.org/graphics/digikam/commit/9d66c7989d870239914c7175a7a0e92101ce39cb Git commit fd16088d948c2ef4324f0abbe1498068fba2c2f4 by Gilles Caulier. Committed on 03/03/2022 at 13:04. Pushed by cgilles into branch 'qt5-maintenance'. Add libheif dependency to macports M +1 -0 project/bundles/macports/01-build-macports.sh https://invent.kde.org/graphics/digikam/commit/fd16088d948c2ef4324f0abbe1498068fba2c2f4 Hi Maik, I mostly completed to drop of libheif/libde265 from digiKam core in qt5-maintenance branch. I will backport all commits to master of course. Looking into libgd heif loader, i discovered this definition : https://github.com/libgd/libgd/blob/master/src/gd_heif.c#L23 ... used to allocate the heif context. https://github.com/libgd/libgd/blob/master/src/gd_heif.c#L125 The question is why to use this value ? It's an optimization ? Gilles Yes, that's an optimization if you don't know how much memory is required. It's faster to request larger blocks than to constantly expand with small blocks. Something similar for QVector with QVector::reserve(). https://doc.qt.io/qt-5/qvector.html#reserve Maik MAik, Do you think we needs something like that in HEIF image loader ? Gilles Git commit 3164bc36d6ad04f5bbdd4b375bc904d1cb697a6d by Gilles Caulier. Committed on 03/03/2022 at 14:12. Pushed by cgilles into branch 'master'. backport commit to drop libheif/libde265 from digiKam core in favor of system libraries M +1 -0 Mainpage.dox M +3 -3 core/CMakeLists.txt M +1 -0 core/app/DigikamCoreTarget.cmake M +6 -5 core/cmake/modules/FindHEIF.cmake M +1 -0 core/dplugins/dimg/heif/CMakeLists.txt M +4 -1 core/dplugins/dimg/heif/dimgheifloader.h M +4 -0 core/libs/dialogs/libsinfodlg.cpp D +0 -228 core/libs/heifutils/CMakeLists.txt D +0 -3 core/libs/heifutils/README D +0 -4 core/libs/heifutils/libde265/README D +0 -359 core/libs/heifutils/libde265/acceleration.h D +0 -99 core/libs/heifutils/libde265/alloc_pool.cc D +0 -61 core/libs/heifutils/libde265/alloc_pool.h D +0 -176 core/libs/heifutils/libde265/bitstream.cc D +0 -63 core/libs/heifutils/libde265/bitstream.h D +0 -1033 core/libs/heifutils/libde265/cabac.cc D +0 -211 core/libs/heifutils/libde265/cabac.h D +0 -491 core/libs/heifutils/libde265/configparam.cc D +0 -401 core/libs/heifutils/libde265/configparam.h D +0 -347 core/libs/heifutils/libde265/contextmodel.cc D +0 -130 core/libs/heifutils/libde265/contextmodel.h D +0 -36 core/libs/heifutils/libde265/de265-version.h.in D +0 -711 core/libs/heifutils/libde265/de265.cc D +0 -437 core/libs/heifutils/libde265/de265.h D +0 -1058 core/libs/heifutils/libde265/deblock.cc D +0 -29 core/libs/heifutils/libde265/deblock.h D +0 -2285 core/libs/heifutils/libde265/decctx.cc D +0 -528 core/libs/heifutils/libde265/decctx.h D +0 -296 core/libs/heifutils/libde265/dpb.cc D +0 -118 core/libs/heifutils/libde265/dpb.h D +0 -321 core/libs/heifutils/libde265/en265.cc D +0 -218 core/libs/heifutils/libde265/en265.h D +0 -95 core/libs/heifutils/libde265/encoder/algo/algo.cc D +0 -95 core/libs/heifutils/libde265/encoder/algo/algo.h D +0 -113 core/libs/heifutils/libde265/encoder/algo/cb-interpartmode.cc D +0 -108 core/libs/heifutils/libde265/encoder/algo/cb-interpartmode.h D +0 -132 core/libs/heifutils/libde265/encoder/algo/cb-intra-inter.cc D +0 -68 core/libs/heifutils/libde265/encoder/algo/cb-intra-inter.h D +0 -185 core/libs/heifutils/libde265/encoder/algo/cb-intrapartmode.cc D +0 -149 core/libs/heifutils/libde265/encoder/algo/cb-intrapartmode.h D +0 -176 core/libs/heifutils/libde265/encoder/algo/cb-mergeindex.cc D +0 -70 core/libs/heifutils/libde265/encoder/algo/cb-mergeindex.h D +0 -114 core/libs/heifutils/libde265/encoder/algo/cb-skip.cc D +0 -72 core/libs/heifutils/libde265/encoder/algo/cb-skip.h D +0 -178 core/libs/heifutils/libde265/encoder/algo/cb-split.cc D +0 -88 core/libs/heifutils/libde265/encoder/algo/cb-split.h D +0 -202 core/libs/heifutils/libde265/encoder/algo/coding-options.cc D +0 -151 core/libs/heifutils/libde265/encoder/algo/coding-options.h D +0 -61 core/libs/heifutils/libde265/encoder/algo/ctb-qscale.cc D +0 -109 core/libs/heifutils/libde265/encoder/algo/ctb-qscale.h D +0 -318 core/libs/heifutils/libde265/encoder/algo/pb-mv.cc D +0 -177 core/libs/heifutils/libde265/encoder/algo/pb-mv.h D +0 -532 core/libs/heifutils/libde265/encoder/algo/tb-intrapredmode.cc D +0 -297 core/libs/heifutils/libde265/encoder/algo/tb-intrapredmode.h D +0 -46 core/libs/heifutils/libde265/encoder/algo/tb-rateestim.cc D +0 -101 core/libs/heifutils/libde265/encoder/algo/tb-rateestim.h D +0 -378 core/libs/heifutils/libde265/encoder/algo/tb-split.cc D +0 -126 core/libs/heifutils/libde265/encoder/algo/tb-split.h D +0 -254 core/libs/heifutils/libde265/encoder/algo/tb-transform.cc D +0 -86 core/libs/heifutils/libde265/encoder/algo/tb-transform.h D +0 -313 core/libs/heifutils/libde265/encoder/encoder-context.cc D +0 -173 core/libs/heifutils/libde265/encoder/encoder-context.h D +0 -428 core/libs/heifutils/libde265/encoder/encoder-core.cc D +0 -151 core/libs/heifutils/libde265/encoder/encoder-core.h D +0 -340 core/libs/heifutils/libde265/encoder/encoder-intrapred.cc D +0 -40 core/libs/heifutils/libde265/encoder/encoder-intrapred.h D +0 -80 core/libs/heifutils/libde265/encoder/encoder-motion.cc D +0 -32 core/libs/heifutils/libde265/encoder/encoder-motion.h D +0 -83 core/libs/heifutils/libde265/encoder/encoder-params.cc D +0 -143 core/libs/heifutils/libde265/encoder/encoder-params.h D +0 -1730 core/libs/heifutils/libde265/encoder/encoder-syntax.cc D +0 -102 core/libs/heifutils/libde265/encoder/encoder-syntax.h D +0 -766 core/libs/heifutils/libde265/encoder/encoder-types.cc D +0 -409 core/libs/heifutils/libde265/encoder/encoder-types.h D +0 -321 core/libs/heifutils/libde265/encoder/encpicbuf.cc D +0 -144 core/libs/heifutils/libde265/encoder/encpicbuf.h D +0 -106 core/libs/heifutils/libde265/encoder/sop.cc D +0 -147 core/libs/heifutils/libde265/encoder/sop.h D +0 -136 core/libs/heifutils/libde265/extra/win32cond.cc D +0 -65 core/libs/heifutils/libde265/extra/win32cond.h D +0 -1210 core/libs/heifutils/libde265/fallback-dct.cc D +0 -96 core/libs/heifutils/libde265/fallback-dct.h D +0 -648 core/libs/heifutils/libde265/fallback-motion.cc D +0 -104 core/libs/heifutils/libde265/fallback-motion.h D +0 -127 core/libs/heifutils/libde265/fallback.cc D +0 -28 core/libs/heifutils/libde265/fallback.h D +0 -220 core/libs/heifutils/libde265/image-io.cc D +0 -121 core/libs/heifutils/libde265/image-io.h D +0 -815 core/libs/heifutils/libde265/image.cc D +0 -864 core/libs/heifutils/libde265/image.h D +0 -364 core/libs/heifutils/libde265/intrapred.cc D +0 -678 core/libs/heifutils/libde265/intrapred.h D +0 -295 core/libs/heifutils/libde265/md5.cc D +0 -45 core/libs/heifutils/libde265/md5.h D +0 -2111 core/libs/heifutils/libde265/motion.cc D +0 -131 core/libs/heifutils/libde265/motion.h D +0 -446 core/libs/heifutils/libde265/nal-parser.cc D +0 -154 core/libs/heifutils/libde265/nal-parser.h D +0 -166 core/libs/heifutils/libde265/nal.cc D +0 -129 core/libs/heifutils/libde265/nal.h D +0 -992 core/libs/heifutils/libde265/pps.cc D +0 -163 core/libs/heifutils/libde265/pps.h D +0 -111 core/libs/heifutils/libde265/quality.cc D +0 -47 core/libs/heifutils/libde265/quality.h D +0 -434 core/libs/heifutils/libde265/refpic.cc D +0 -61 core/libs/heifutils/libde265/refpic.h D +0 -524 core/libs/heifutils/libde265/sao.cc D +0 -36 core/libs/heifutils/libde265/sao.h D +0 -152 core/libs/heifutils/libde265/scan.cc D +0 -43 core/libs/heifutils/libde265/scan.h D +0 -501 core/libs/heifutils/libde265/sei.cc D +0 -89 core/libs/heifutils/libde265/sei.h D +0 -5072 core/libs/heifutils/libde265/slice.cc D +0 -313 core/libs/heifutils/libde265/slice.h D +0 -1298 core/libs/heifutils/libde265/sps.cc D +0 -257 core/libs/heifutils/libde265/sps.h D +0 -312 core/libs/heifutils/libde265/threads.cc D +0 -148 core/libs/heifutils/libde265/threads.h D +0 -739 core/libs/heifutils/libde265/transform.cc D +0 -65 core/libs/heifutils/libde265/transform.h D +0 -247 core/libs/heifutils/libde265/util.cc D +0 -229 core/libs/heifutils/libde265/util.h D +0 -562 core/libs/heifutils/libde265/visualize.cc D +0 -50 core/libs/heifutils/libde265/visualize.h D +0 -602 core/libs/heifutils/libde265/vps.cc D +0 -173 core/libs/heifutils/libde265/vps.h D +0 -425 core/libs/heifutils/libde265/vui.cc D +0 -126 core/libs/heifutils/libde265/vui.h D +0 -5 core/libs/heifutils/libheif/README D +0 -615 core/libs/heifutils/libheif/bitstream.cc D +0 -285 core/libs/heifutils/libheif/bitstream.h D +0 -2887 core/libs/heifutils/libheif/box.cc D +0 -858 core/libs/heifutils/libheif/box.h D +0 -170 core/libs/heifutils/libheif/error.cc D +0 -109 core/libs/heifutils/libheif/error.h D +0 -1883 core/libs/heifutils/libheif/heif.cc D +0 -1239 core/libs/heifutils/libheif/heif.h D +0 -66 core/libs/heifutils/libheif/heif_api_structs.h D +0 -2453 core/libs/heifutils/libheif/heif_colorconversion.cc D +0 -129 core/libs/heifutils/libheif/heif_colorconversion.h D +0 -1975 core/libs/heifutils/libheif/heif_context.cc D +0 -296 core/libs/heifutils/libheif/heif_context.h D +0 -1029 core/libs/heifutils/libheif/heif_cxx.h D +0 -355 core/libs/heifutils/libheif/heif_decoder_libde265.cc D +0 -26 core/libs/heifutils/libheif/heif_decoder_libde265.h D +0 -854 core/libs/heifutils/libheif/heif_encoder_x265.cc D +0 -40 core/libs/heifutils/libheif/heif_encoder_x265.h D +0 -657 core/libs/heifutils/libheif/heif_file.cc D +0 -165 core/libs/heifutils/libheif/heif_file.h D +0 -302 core/libs/heifutils/libheif/heif_hevc.cc D +0 -61 core/libs/heifutils/libheif/heif_hevc.h D +0 -812 core/libs/heifutils/libheif/heif_image.cc D +0 -130 core/libs/heifutils/libheif/heif_image.h D +0 -49 core/libs/heifutils/libheif/heif_limits.h D +0 -32 core/libs/heifutils/libheif/heif_plugin.cc D +0 -254 core/libs/heifutils/libheif/heif_plugin.h D +0 -148 core/libs/heifutils/libheif/heif_plugin_registry.cc D +0 -62 core/libs/heifutils/libheif/heif_plugin_registry.h D +0 -36 core/libs/heifutils/libheif/heif_version.h.in D +0 -63 core/libs/heifutils/libheif/logging.h M +0 -2 core/libs/metadataengine/CMakeLists.txt M +4 -1 core/libs/metadataengine/dmetadata/dmetadata_libheif.cpp M +30 -86 project/bundles/3rdparty/ext_heif/CMakeLists.txt M +17 -8 project/bundles/3rdparty/ext_heif/de265-lib-linux.patch M +13 -41 project/bundles/3rdparty/ext_heif/de265-lib-mxe.patch A +38 -0 project/bundles/3rdparty/ext_heif/heif-lib-linux.patch D +0 -13 project/bundles/3rdparty/ext_heif/heif-lib-macports.patch M +32 -16 project/bundles/3rdparty/ext_heif/heif-lib-mxe.patch D +0 -13 project/bundles/3rdparty/ext_heif/libde265.pc.in_cmake D +0 -15 project/bundles/3rdparty/ext_heif/libheif.pc.in_cmake M +1 -0 project/bundles/appimage/01-build-host.sh M +1 -0 project/bundles/macports/01-build-macports.sh M +1 -0 project/bundles/mxe/01-build-mxe.sh https://invent.kde.org/graphics/digikam/commit/3164bc36d6ad04f5bbdd4b375bc904d1cb697a6d Git commit 836756ca71a980eacedd3ec2838b1222e6361fa7 by Gilles Caulier. Committed on 03/03/2022 at 14:19. Pushed by cgilles into branch 'qt5-maintenance'. FlatPak build configuration for KDE server: add libde265 and libheif dependencies for 7.7.0 release and later M +14 -0 project/bundles/flatpak/org.kde.digikam.json https://invent.kde.org/graphics/digikam/commit/836756ca71a980eacedd3ec2838b1222e6361fa7 Git commit d164c064967aaaaf50f1c02f6b5ec8d449a86df2 by Gilles Caulier. Committed on 03/03/2022 at 14:20. Pushed by cgilles into branch 'master'. FlatPak build configuration for KDE server: add libde265 and libheif dependencies for 7.7.0 release and later M +14 -0 project/bundles/flatpak/org.kde.digikam.json https://invent.kde.org/graphics/digikam/commit/d164c064967aaaaf50f1c02f6b5ec8d449a86df2 I don't think we need it. We know the final size of the memory needed for the DImg and allocate it completely with width x height x 4(8). Maik Issue for FlatPak continuous deployment from FlatHub : https://github.com/flathub/org.kde.digikam/issues/32 Gilles Caulier Issue for Snap continuous deployment from SnapCraft.io : https://invent.kde.org/packaging/snapcraft-kde-applications/-/issues/1 Gilles Caulier Issue for Craft build system : https://invent.kde.org/packaging/craft-blueprints-kde/-/issues/5 Gilles Caulier Git commit c84ddfce02f08c89ba63fa6d224ee0de855f8091 by Gilles Caulier. Committed on 03/03/2022 at 18:00. Pushed by cgilles into branch 'master'. Make libheif dependency optional M +2 -2 Mainpage.dox M +2 -2 core/CMakeLists.txt M +10 -1 core/app/DigikamCoreTarget.cmake M +3 -0 core/app/utils/digikam_config.h.cmake.in M +4 -1 core/dplugins/dimg/CMakeLists.txt M +10 -2 core/libs/dialogs/libsinfodlg.cpp M +9 -1 core/libs/metadataengine/CMakeLists.txt M +6 -1 core/libs/metadataengine/dmetadata/dmetadata.h M +8 -1 core/libs/metadataengine/dmetadata/dmetadata_fileio.cpp https://invent.kde.org/graphics/digikam/commit/c84ddfce02f08c89ba63fa6d224ee0de855f8091 Git commit 3e95ab4926b1faf34a3c0ca630cc3fe809c926eb by Gilles Caulier. Committed on 03/03/2022 at 18:18. Pushed by cgilles into branch 'master'. Only check for libx265 if libheif is found M +11 -6 core/CMakeLists.txt https://invent.kde.org/graphics/digikam/commit/3e95ab4926b1faf34a3c0ca630cc3fe809c926eb Git commit 69d6946b6b72c11ed5f7baa356eff38daf97bbc7 by Gilles Caulier. Committed on 03/03/2022 at 22:05. Pushed by cgilles into branch 'qt5-maintenance'. add libheif dependency optional also in qt5-maintenance branch M +2 -2 Mainpage.dox M +15 -8 core/CMakeLists.txt M +9 -3 core/app/DigikamCoreTarget.cmake M +3 -0 core/app/utils/digikam_config.h.cmake.in M +4 -1 core/dplugins/dimg/CMakeLists.txt M +9 -1 core/libs/dialogs/libsinfodlg.cpp M +9 -1 core/libs/metadataengine/CMakeLists.txt M +4 -0 core/libs/metadataengine/dmetadata/dmetadata.h M +8 -1 core/libs/metadataengine/dmetadata/dmetadata_fileio.cpp https://invent.kde.org/graphics/digikam/commit/69d6946b6b72c11ed5f7baa356eff38daf97bbc7 Same result here, excruciatingly slow times to refresh the preview for .heif files. Win10 with 16gb ram. This is not a digiKam problem but libheif and dependencies: https://github.com/strukturag/libheif/issues/645 https://github.com/strukturag/libheif/issues/552 https://github.com/strukturag/libheif/issues/472 https://github.com/strukturag/libheif/issues/133 Gilles Caulier *** This bug has been marked as a duplicate of bug 463486 *** @rfeg UPSTREAM bugs from libheif: https://github.com/strukturag/libheif/issues/645 https://github.com/strukturag/libheif/issues/552 https://github.com/strukturag/libheif/issues/472 https://github.com/strukturag/libheif/issues/133 Select right one and continue this discussion on github bugzilla from libheif. Nothing can be done in digiKam code to improve the performances. Gilles Caulier Note: Libheif 1.17.6 provide now an option to use ffmpeg accelerated codec to process HEVC data. https://github.com/strukturag/libheif/blob/master/CMakeLists.txt#L175 Gilles This FFmpeg plugin is already available here under openSUSE and is currently unusable. It must be uninstalled and replaced by the HEIF decoder. In the first versions it crashed, now a few HEIF files are displayed, but most are not. FFmpeg then often reports the EOF error in the console. Maik It's that i suspected too. I tried on my computer with the same result. I don't yet enabled this option while compiling HEIF lib with ffmpeg support in the bundles. We needs to wait more time to see this feature more stable and mature. Gilles |