Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-kfilemetadata for openSUSE:Factory checked in at 2026-04-11 22:23:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-kfilemetadata (Old) and /work/SRC/openSUSE:Factory/.kf6-kfilemetadata.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-kfilemetadata" Sat Apr 11 22:23:59 2026 rev:26 rq:1345886 version:6.25.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-kfilemetadata/kf6-kfilemetadata.changes 2026-03-16 14:18:03.843088811 +0100 +++ /work/SRC/openSUSE:Factory/.kf6-kfilemetadata.new.21863/kf6-kfilemetadata.changes 2026-04-11 22:27:59.124341815 +0200 @@ -1,0 +2,15 @@ +Tue Apr 7 19:19:02 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.25.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.25.0 +- Changes since 6.24.0: + * Update dependency version to 6.25.0 + * ExtractionPluginManager -> ExtractorCollection + * ffmpeg: use qScopeGuard to release AVFormatContext on failure + * extractors/exiv2: remove version check for BMFF_SUPPORT + * ffmpegextractor: when color_space_name is "unkwown" don't set ColorSpace + * Update version to 6.25.0 + +------------------------------------------------------------------- Old: ---- kfilemetadata-6.24.0.tar.xz kfilemetadata-6.24.0.tar.xz.sig New: ---- kfilemetadata-6.25.0.tar.xz kfilemetadata-6.25.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-kfilemetadata.spec ++++++ --- /var/tmp/diff_new_pack.bZUFfU/_old 2026-04-11 22:27:59.744367209 +0200 +++ /var/tmp/diff_new_pack.bZUFfU/_new 2026-04-11 22:27:59.744367209 +0200 @@ -19,12 +19,12 @@ %define qt6_version 6.8.0 %define rname kfilemetadata -# Full KF6 version (e.g. 6.24.0) +# Full KF6 version (e.g. 6.25.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without ffmpeg %bcond_without released Name: kf6-kfilemetadata -Version: 6.24.0 +Version: 6.25.0 Release: 0 Summary: Library for extracting Metadata License: GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only ++++++ kfilemetadata-6.24.0.tar.xz -> kfilemetadata-6.25.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/CMakeLists.txt new/kfilemetadata-6.25.0/CMakeLists.txt --- old/kfilemetadata-6.24.0/CMakeLists.txt 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/CMakeLists.txt 2026-04-03 19:08:51.000000000 +0200 @@ -1,11 +1,11 @@ -cmake_minimum_required(VERSION 3.27) +cmake_minimum_required(VERSION 3.29) -set(KF_VERSION "6.24.0") # handled by release scripts -set(KF_DEP_VERSION "6.24.0") # handled by release scripts +set(KF_VERSION "6.25.0") # handled by release scripts +set(KF_DEP_VERSION "6.25.0") # handled by release scripts project(KFileMetaData VERSION ${KF_VERSION}) include(FeatureSummary) -find_package(ECM 6.24.0 NO_MODULE) +find_package(ECM 6.25.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -33,7 +33,7 @@ SOVERSION 3) # Dependencies -set(REQUIRED_QT_VERSION 6.8.0) +set(REQUIRED_QT_VERSION 6.9.0) find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG OPTIONAL_COMPONENTS Gui) set_package_properties(Qt6Gui PROPERTIES DESCRIPTION "Qt6: Gui component" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/README.md new/kfilemetadata-6.25.0/README.md --- old/kfilemetadata-6.24.0/README.md 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/README.md 2026-04-03 19:08:51.000000000 +0200 @@ -21,7 +21,7 @@ ## Extracting Metadata from a file -This requires us to create a ExtractionPluginManager class, fetch the extractor +This requires us to create an ExtractorCollection class, fetch the extractor plugins which are applicable for that file, and then pass the instance of ExtractionResult to each Extractor. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/autotests/exiv2extractortest.cpp new/kfilemetadata-6.25.0/autotests/exiv2extractortest.cpp --- old/kfilemetadata-6.24.0/autotests/exiv2extractortest.cpp 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/autotests/exiv2extractortest.cpp 2026-04-03 19:08:51.000000000 +0200 @@ -117,9 +117,6 @@ Exiv2Extractor plugin{this}; - if ((mimeType == QStringLiteral("image/jxl")) && !plugin.mimetypes().contains(QStringLiteral("image/jxl"))) { - QSKIP("BMFF support required for JXL"); - } QVERIFY(plugin.mimetypes().contains(mimeType)); SimpleExtractionResult result(testFilePath(fileName), mimeType); @@ -186,10 +183,6 @@ { Exiv2Extractor plugin{this}; - if (!plugin.mimetypes().contains(QStringLiteral("image/heif"))) { - QSKIP("BMFF support required for HEIF"); - } - SimpleExtractionResult result(testFilePath(QStringLiteral("test.heif")), QStringLiteral("image/heif")); plugin.extract(&result); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/autotests/ffmpegextractortest.cpp new/kfilemetadata-6.25.0/autotests/ffmpegextractortest.cpp --- old/kfilemetadata-6.24.0/autotests/ffmpegextractortest.cpp 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/autotests/ffmpegextractortest.cpp 2026-04-03 19:08:51.000000000 +0200 @@ -47,37 +47,37 @@ QTest::addColumn<QString>("fileType"); QTest::addColumn<QString>("codec"); QTest::addColumn<QString>("audioCodec"); - QTest::addColumn<QString>("colorSpace"); + QTest::addColumn<QVariant>("colorSpace"); QTest::addRow("WebM") << QStringLiteral("webm") << QStringLiteral("vp8") << QStringLiteral("vorbis") - << QStringLiteral("bt709"); + << QVariant::fromValue(QStringLiteral("bt709")); QTest::addRow("Matroska Video") << QStringLiteral("mkv") << QStringLiteral("vp8") << QStringLiteral("vorbis") - << QStringLiteral("bt709"); + << QVariant::fromValue(QStringLiteral("bt709")); QTest::addRow("Vorbis Video") << QStringLiteral("ogv") << QStringLiteral("theora") << QStringLiteral("vorbis") - << QStringLiteral("unknown"); + << QVariant(); QTest::addRow("MPEG Transport") << QStringLiteral("ts") << QStringLiteral("mpeg2video") << QStringLiteral("mp2") - << QStringLiteral("unknown"); + << QVariant(); QTest::addRow("MS AVI") << QStringLiteral("avi") << QStringLiteral("mpeg4") << QStringLiteral("mp3") - << QStringLiteral("unknown"); + << QVariant(); } // only for testing of intrinsic video properties @@ -86,7 +86,7 @@ QFETCH(QString, fileType); QFETCH(QString, codec); QFETCH(QString, audioCodec); - QFETCH(QString, colorSpace); + QFETCH(QVariant, colorSpace); QString fileName = testFilePath(QStringLiteral("test"), fileType); QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); @@ -108,7 +108,11 @@ QCOMPARE(result.properties().value(Property::VideoCodec), codec); QCOMPARE(result.properties().value(Property::AudioCodec), audioCodec); QCOMPARE(result.properties().value(Property::PixelFormat), QStringLiteral("yuv420p")); - QCOMPARE(result.properties().value(Property::ColorSpace), colorSpace); + if (colorSpace.isNull()) { + QVERIFY(!result.properties().contains(Property::ColorSpace)); + } else { + QCOMPARE(result.properties().value(Property::ColorSpace), colorSpace.toString()); + } } void ffmpegExtractorTest::testMetaData_data() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/src/extractors/CMakeLists.txt new/kfilemetadata-6.25.0/src/extractors/CMakeLists.txt --- old/kfilemetadata-6.24.0/src/extractors/CMakeLists.txt 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/src/extractors/CMakeLists.txt 2026-04-03 19:08:51.000000000 +0200 @@ -34,10 +34,6 @@ KF6::FileMetaData LibExiv2::LibExiv2 ) - if(${LibExiv2_VERSION} VERSION_GREATER_EQUAL 0.27.4) - set(EXIV2_HAVE_BMFF_SUPPORT "1") - endif() - configure_file(exiv2extractor.json.in exiv2extractor.json) set_target_properties(kfilemetadata_exiv2extractor PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf6/kfilemetadata") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/src/extractors/exiv2extractor.json new/kfilemetadata-6.25.0/src/extractors/exiv2extractor.json --- old/kfilemetadata-6.24.0/src/extractors/exiv2extractor.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kfilemetadata-6.25.0/src/extractors/exiv2extractor.json 2026-04-03 19:08:51.000000000 +0200 @@ -0,0 +1,30 @@ +{ + "Name" : "Exiv2Extractor", + "Id" : "org.kde.exiv2extractor", + "MimeTypes" : { + "image/bmp" : { "version" : "0.0" }, + "image/gif" : { "version" : "0.0" }, + "image/jp2" : { "version" : "0.0" }, + "image/jpeg" : { "version" : "0.0" }, + "image/pgf" : { "version" : "0.0" }, + "image/png" : { "version" : "0.0" }, + "image/tiff" : { "version" : "0.0" }, + "image/webp" : { "version" : "0.0" }, + "image/avif" : { "version" : "0.0"}, + "image/heif" : { "version" : "0.0"}, + "image/jxl" : { "version" : "0.0"}, + "image/x-canon-cr3" : { "version" : "0.0"}, + "image/x-exv" : { "version" : "0.0" }, + "image/x-canon-cr2" : { "version" : "0.0" }, + "image/x-canon-crw" : { "version" : "0.0" }, + "image/x-fuji-raf" : { "version" : "0.0" }, + "image/x-minolta-mrw" : { "version" : "0.0" }, + "image/x-nikon-nef" : { "version" : "0.0" }, + "image/x-olympus-orf" : { "version" : "0.0" }, + "image/x-panasonic-rw2" : { "version" : "0.0" }, + "image/x-pentax-pef" : { "version" : "0.0" }, + "image/x-photoshop" : { "version" : "0.0" }, + "image/x-samsung-srw" : { "version" : "0.0" }, + "image/x-tga" : { "version" : "0.0" } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/src/extractors/exiv2extractor.json.in new/kfilemetadata-6.25.0/src/extractors/exiv2extractor.json.in --- old/kfilemetadata-6.24.0/src/extractors/exiv2extractor.json.in 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/src/extractors/exiv2extractor.json.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,42 +0,0 @@ -{ - "Name" : "Exiv2Extractor", - "Id" : "org.kde.exiv2extractor", - "MimeTypes" : { - "image/bmp" : { "version" : "0.0" }, - "image/gif" : { "version" : "0.0" }, - "image/jp2" : { "version" : "0.0" }, - "image/jpeg" : { "version" : "0.0" }, - "image/pgf" : { "version" : "0.0" }, - "image/png" : { "version" : "0.0" }, - "image/tiff" : { "version" : "0.0" }, - "image/webp" : { "version" : "0.0" }, - "image/avif" : { - "version" : "0.0", - "enabled" : "@EXIV2_HAVE_BMFF_SUPPORT@" - }, - "image/heif" : { - "version" : "0.0", - "enabled" : "@EXIV2_HAVE_BMFF_SUPPORT@" - }, - "image/jxl" : { - "version" : "0.0", - "enabled" : "@EXIV2_HAVE_BMFF_SUPPORT@" - }, - "image/x-canon-cr3" : { - "version" : "0.0", - "enabled" : "@EXIV2_HAVE_BMFF_SUPPORT@" - }, - "image/x-exv" : { "version" : "0.0" }, - "image/x-canon-cr2" : { "version" : "0.0" }, - "image/x-canon-crw" : { "version" : "0.0" }, - "image/x-fuji-raf" : { "version" : "0.0" }, - "image/x-minolta-mrw" : { "version" : "0.0" }, - "image/x-nikon-nef" : { "version" : "0.0" }, - "image/x-olympus-orf" : { "version" : "0.0" }, - "image/x-panasonic-rw2" : { "version" : "0.0" }, - "image/x-pentax-pef" : { "version" : "0.0" }, - "image/x-photoshop" : { "version" : "0.0" }, - "image/x-samsung-srw" : { "version" : "0.0" }, - "image/x-tga" : { "version" : "0.0" } - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kfilemetadata-6.24.0/src/extractors/ffmpegextractor.cpp new/kfilemetadata-6.25.0/src/extractors/ffmpegextractor.cpp --- old/kfilemetadata-6.24.0/src/extractors/ffmpegextractor.cpp 2026-03-07 21:30:28.000000000 +0100 +++ new/kfilemetadata-6.25.0/src/extractors/ffmpegextractor.cpp 2026-04-03 19:08:51.000000000 +0200 @@ -63,14 +63,23 @@ av_register_all(); #endif - QByteArray arr = result->inputUrl().toUtf8(); - fmt_ctx = avformat_alloc_context(); + if (!fmt_ctx) { + qCWarning(KFILEMETADATA_LOG) << "Failed to allocate format context"; + return; + } + + QByteArray arr = result->inputUrl().toUtf8(); if (int ret = avformat_open_input(&fmt_ctx, arr.data(), nullptr, nullptr)) { qCWarning(KFILEMETADATA_LOG) << "avformat_open_input error: " << ret; + // The AVFormatContext will be freed on failure, no need to release it explicitly return; } + auto guard = qScopeGuard([&fmt_ctx]() { + avformat_close_input(&fmt_ctx); + }); + int ret = avformat_find_stream_info(fmt_ctx, nullptr); if (ret < 0) { qCWarning(KFILEMETADATA_LOG) << "avform_find_stream_info error: " << ret; @@ -126,7 +135,9 @@ result->add(Property::PixelFormat, QString::fromUtf8(desc->name)); } - result->add(Property::ColorSpace, QString::fromUtf8(av_color_space_name(codec->color_space))); + if (codec->color_space != AVCOL_SPC_UNSPECIFIED) { + result->add(Property::ColorSpace, QString::fromUtf8(av_color_space_name(codec->color_space))); + } } } @@ -200,8 +211,6 @@ result->add(Property::ReleaseYear, year); } } - - avformat_close_input(&fmt_ctx); } #include "moc_ffmpegextractor.cpp"
