Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ffmpegthumbs for openSUSE:Factory checked in at 2025-12-15 11:47:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ffmpegthumbs (Old) and /work/SRC/openSUSE:Factory/.ffmpegthumbs.new.1939 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ffmpegthumbs" Mon Dec 15 11:47:25 2025 rev:129 rq:1322318 version:25.12.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ffmpegthumbs/ffmpegthumbs.changes 2025-11-08 16:27:43.647119921 +0100 +++ /work/SRC/openSUSE:Factory/.ffmpegthumbs.new.1939/ffmpegthumbs.changes 2025-12-15 11:48:11.265751972 +0100 @@ -1,0 +2,19 @@ +Sat Dec 6 11:40:18 UTC 2025 - Christophe Marin <[email protected]> + +- Update to 25.12.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/25.12.0/ +- No code change since 25.11.80 + +------------------------------------------------------------------- +Sat Nov 15 19:56:20 UTC 2025 - Christophe Marin <[email protected]> + +- Update to 25.11.80 + * New feature release +- Changes since 25.08.3: + * Require libavcodec >= 60.30, libavutil >= 58.7, support per-component version checks + * Integrate FFMpeg Thumbs into OSS-Fuzz + * Some cleanup and fix deprecation warnings + +------------------------------------------------------------------- Old: ---- ffmpegthumbs-25.08.3.tar.xz ffmpegthumbs-25.08.3.tar.xz.sig New: ---- ffmpegthumbs-25.12.0.tar.xz ffmpegthumbs-25.12.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ffmpegthumbs.spec ++++++ --- /var/tmp/diff_new_pack.vhEACe/_old 2025-12-15 11:48:11.981781769 +0100 +++ /var/tmp/diff_new_pack.vhEACe/_new 2025-12-15 11:48:11.981781769 +0100 @@ -16,12 +16,12 @@ # -%define kf6_version 6.14.0 -%define qt6_version 6.8.0 +%define kf6_version 6.19.0 +%define qt6_version 6.9.0 %bcond_without released Name: ffmpegthumbs -Version: 25.08.3 +Version: 25.12.0 Release: 0 Summary: FFmpeg-based thumbnail creator for video files License: LGPL-2.0-or-later ++++++ ffmpegthumbs-25.08.3.tar.xz -> ffmpegthumbs-25.12.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/CMakeLists.txt new/ffmpegthumbs-25.12.0/CMakeLists.txt --- old/ffmpegthumbs-25.08.3/CMakeLists.txt 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/CMakeLists.txt 2025-12-03 23:39:26.000000000 +0100 @@ -2,8 +2,8 @@ # Release Service version, managed by release script set(RELEASE_SERVICE_VERSION_MAJOR "25") -set(RELEASE_SERVICE_VERSION_MINOR "08") -set(RELEASE_SERVICE_VERSION_MICRO "3") +set(RELEASE_SERVICE_VERSION_MINOR "12") +set(RELEASE_SERVICE_VERSION_MICRO "0") set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") @@ -23,9 +23,14 @@ include(FeatureSummary) include(ECMDeprecationSettings) +option(BUILD_FUZZERS "Whether to the thumbnail build fuzzers" OFF) +option(FUZZERS_USE_QT_MINIMAL_INTEGRATION_PLUGIN "Whether to use the Qt minimal integration plugin for fuzzers" OFF) + find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core Gui) find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS KIO Config) -find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT SWSCALE) +find_package(FFmpeg 60.30 REQUIRED COMPONENTS AVCODEC) +find_package(FFmpeg 58.7 REQUIRED COMPONENTS AVUTIL) +find_package(FFmpeg REQUIRED COMPONENTS AVFILTER AVFORMAT SWSCALE) include_directories( ${FFMPEG_INCLUDE_DIRS} @@ -69,15 +74,15 @@ target_link_libraries(ffmpegthumbs Qt::Core Qt::Gui - KF6::KIOWidgets KF6::KIOCore + KF6::KIOGui KF6::ConfigCore KF6::ConfigGui - ${AVUTIL_LIBRARIES} ${AVFILTER_LIBRARIES} + ${SWSCALE_LIBRARIES} ${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} - ${SWSCALE_LIBRARIES} + ${AVUTIL_LIBRARIES} ) install(FILES ffmpegthumbnailersettings5.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) @@ -96,4 +101,8 @@ add_subdirectory(tests) endif() +if(BUILD_FUZZERS) + add_subdirectory(autotests/ossfuzz) +endif() + feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/autotests/ossfuzz/CMakeLists.txt new/ffmpegthumbs-25.12.0/autotests/ossfuzz/CMakeLists.txt --- old/ffmpegthumbs-25.08.3/autotests/ossfuzz/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/autotests/ossfuzz/CMakeLists.txt 2025-12-03 23:39:26.000000000 +0100 @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]> +# SPDX-License-Identifier: BSD-2-Clause + +if(DEFINED ENV{LIB_FUZZING_ENGINE}) + set(fuzzing_engine $ENV{LIB_FUZZING_ENGINE}) +else() + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(fuzzing_engine -fsanitize=fuzzer) + else() + message(FATAL_ERROR "Fuzzing engine not supported") + endif() +endif() + +function(add_thumbnail_fuzzer creator creator_header target_lib) + set(gen_src ${CMAKE_CURRENT_BINARY_DIR}/${target_lib}_fuzzer.cc) + set(CREATOR "${creator}") + set(CREATOR_HEADER "${creator_header}") + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/kde_thumbnailers_fuzzer.cc.in + ${gen_src} + @ONLY + ) + + add_executable(${target_lib}_fuzzer + ${gen_src} + ) + + kcoreaddons_target_static_plugins(${target_lib}_fuzzer + LINK_OPTION PRIVATE + TARGETS ${target_lib} + ) + + target_link_libraries(${target_lib}_fuzzer + PRIVATE + ${fuzzing_engine} + ) + + if(FUZZERS_USE_QT_MINIMAL_INTEGRATION_PLUGIN) + qt_import_plugins(${target_lib}_fuzzer INCLUDE Qt::QMinimalIntegrationPlugin) + endif() + + set_target_properties(${target_lib}_fuzzer PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/fuzzers + ) +endfunction() + +add_thumbnail_fuzzer(FFMpegThumbnailer ffmpegthumbnailer.h ffmpegthumbs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/autotests/ossfuzz/build_fuzzers.sh new/ffmpegthumbs-25.12.0/autotests/ossfuzz/build_fuzzers.sh --- old/ffmpegthumbs-25.08.3/autotests/ossfuzz/build_fuzzers.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/autotests/ossfuzz/build_fuzzers.sh 2025-12-03 23:39:26.000000000 +0100 @@ -0,0 +1,59 @@ +#!/bin/bash -eu +# +# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]> +# SPDX-License-Identifier: LGPL-2.0-or-later +# +# This script must be run after kio-extras/thumbnail/autotests/ossfuzz/build_fuzzers.sh + +export PATH="$WORK/bin:$WORK/libexec:$PATH" +export PKG_CONFIG="$(which pkg-config) --static" +export PKG_CONFIG_PATH="$WORK/lib/pkgconfig:$WORK/share/pkgconfig:$WORK/lib/x86_64-linux-gnu/pkgconfig" + +# For FFMpegThumbnailer +cd $SRC/ffmpeg +if [ "$SANITIZER" = "memory" ]; then + disable_asm="--disable-inline-asm --disable-x86asm" +else + disable_asm= +fi +./configure \ + --cc="$CC" \ + --cxx="$CXX" \ + --ld="$CXX $CXXFLAGS -std=c++11" \ + --prefix=$WORK \ + $disable_asm \ + --enable-static \ + --disable-shared \ + --disable-doc \ + --disable-everything \ + --disable-programs \ + --disable-avdevice \ + --disable-swresample \ + --enable-avfilter \ + --enable-swscale \ + --enable-avformat \ + --enable-avcodec \ + --enable-avutil +make install -j$(nproc) + +# Build FFMpegThumbs +cd $SRC/ffmpegthumbs +cmake -B build -G Ninja \ + -DCMAKE_PREFIX_PATH=$WORK \ + -DCMAKE_INSTALL_PREFIX=$WORK \ + -DBUILD_FUZZERS=ON \ + -DFUZZERS_USE_QT_MINIMAL_INTEGRATION_PLUGIN=ON \ + -DBUILD_SHARED_LIBS=OFF +ninja -C build -j$(nproc) + +EXTENSIONS="ffmpegthumbs_fuzzer ogg wma wmv mp4 mkv webm avi mov flv m3u8" + +echo "$EXTENSIONS" | while read fuzzer_name extensions; do + # copy the fuzzer binary + cp build/bin/fuzzers/$fuzzer_name $OUT + + # create seed corpus + for extension in $extensions; do + find . -name "*.$extension" -exec zip -q "$OUT/${fuzzer_name}_seed_corpus.zip" {} + + done +done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/autotests/ossfuzz/kde_thumbnailers_fuzzer.cc.in new/ffmpegthumbs-25.12.0/autotests/ossfuzz/kde_thumbnailers_fuzzer.cc.in --- old/ffmpegthumbs-25.08.3/autotests/ossfuzz/kde_thumbnailers_fuzzer.cc.in 1970-01-01 01:00:00.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/autotests/ossfuzz/kde_thumbnailers_fuzzer.cc.in 2025-12-03 23:39:26.000000000 +0100 @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]> + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include <QByteArray> +#include <QGuiApplication> +#include <QMimeDatabase> +#include <QSize> +#include <QTemporaryFile> +#include <QUrl> +#include <QVariant> + +#include "@CREATOR_HEADER@" + +static void runThumbnailer(const QString &fileName, const QString &mimetype) +{ + QSize targetSize(128, 128); + qreal dpr = 1.0; + float sequenceIndex = 0.0f; + + KIO::ThumbnailRequest request(QUrl::fromLocalFile(fileName), targetSize, mimetype, dpr, sequenceIndex); + + @CREATOR@ thumbnailer(nullptr, {}); + thumbnailer.create(request); +} + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + int argc = 0; + QGuiApplication app(argc, nullptr); + + QByteArray b(reinterpret_cast<const char *>(data), static_cast<int>(size)); + + QTemporaryFile f; + if (!f.open()) { + return 0; + } + f.write(b); + f.close(); + + QMimeDatabase mimeDb; + QMimeType mimetype = mimeDb.mimeTypeForData(b); + + runThumbnailer(f.fileName(), mimetype.name()); + for (const QString &ancestor : mimetype.allAncestors()) { + if (ancestor != QLatin1String("application/octet-stream")) { + runThumbnailer(f.fileName(), ancestor); + } + } + + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/autotests/ossfuzz/prepare_build.sh new/ffmpegthumbs-25.12.0/autotests/ossfuzz/prepare_build.sh --- old/ffmpegthumbs-25.08.3/autotests/ossfuzz/prepare_build.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/autotests/ossfuzz/prepare_build.sh 2025-12-03 23:39:26.000000000 +0100 @@ -0,0 +1,9 @@ +#!/bin/bash -eu +# +# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]> +# SPDX-License-Identifier: LGPL-2.0-or-later + +apt-get install -y nasm + +# For FFMpegThumbnailer +git clone --depth 1 https://git.ffmpeg.org/ffmpeg.git diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/cmake/FindFFmpeg.cmake new/ffmpegthumbs-25.12.0/cmake/FindFFmpeg.cmake --- old/ffmpegthumbs-25.08.3/cmake/FindFFmpeg.cmake 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/cmake/FindFFmpeg.cmake 2025-12-03 23:39:26.000000000 +0100 @@ -7,24 +7,33 @@ # FFMPEG_LIBRARIES - Link these to use the required ffmpeg components. # FFMPEG_DEFINITIONS - Compiler switches required for using the required ffmpeg components. # -# For each of the components it will additionally set. +# For each of the components # - AVCODEC +# - AVFILTER # - AVDEVICE # - AVFORMAT # - AVUTIL # - POSTPROCESS # - SWSCALE -# the following variables will be defined +# the following variables will be defined: # <component>_FOUND - System has <component> # <component>_INCLUDE_DIRS - Include directory necessary for using the <component> headers # <component>_LIBRARIES - Link these to use <component> # <component>_DEFINITIONS - Compiler switches required for using <component> # <component>_VERSION - The components version # +# As the versions of the various FFmpeg components differ for a given release, +# and CMake supports only one common version for all components, use the +# following to specify required versions for multiple components: +# +# find_package(FFmpeg 57.48 COMPONENTS AVCODEC) +# find_package(FFmpeg 57.40 COMPONENTS AVFORMAT) +# find_package(FFmpeg 55.27 COMPONENTS AVUTIL) +# # SPDX-FileCopyrightText: 2006 Matthias Kretz <[email protected]> # SPDX-FileCopyrightText: 2008 Alexander Neundorf <[email protected]> # SPDX-FileCopyrightText: 2011 Michael Jansen <[email protected]> -# +# SPDX-FileCopyrightText: 2021 Stefan Brüns <[email protected]> # SPDX-License-Identifier: BSD-3-Clause include(FindPackageHandleStandardArgs) @@ -34,6 +43,17 @@ set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL) endif () +list(LENGTH FFmpeg_FIND_COMPONENTS _numComponents) +if ((${_numComponents} GREATER 1) AND DEFINED ${FFmpeg_FIND_VERSION}) + message(WARNING "Using a required version in combination with multiple COMPONENTS is not supported") + set(_FFmpeg_REQUIRED_VERSION 0) +elseif (DEFINED FFmpeg_FIND_VERSION) + set(_FFmpeg_REQUIRED_VERSION ${FFmpeg_FIND_VERSION}) +else () + set(_FFmpeg_REQUIRED_VERSION 0) +endif () +set(_FFmpeg_ALL_COMPONENTS AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROC SWSCALE) + # ### Macro: set_component_found # @@ -41,10 +61,8 @@ # macro(set_component_found _component ) if (${_component}_LIBRARIES AND ${_component}_INCLUDE_DIRS) - # message(STATUS " - ${_component} found.") set(${_component}_FOUND TRUE) - else () - # message(STATUS " - ${_component} not found.") + set(FFmpeg_${_component}_FOUND TRUE) endif () endmacro() @@ -61,7 +79,7 @@ # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig) if (PKG_CONFIG_FOUND) - pkg_check_modules(PC_${_component} ${_pkgconfig}) + pkg_check_modules(PC_${_component} QUIET ${_pkgconfig}) endif () endif (NOT WIN32) @@ -92,7 +110,6 @@ endmacro() - # Check for cached results. If there are skip the costly part. if (NOT FFMPEG_LIBRARIES) @@ -106,14 +123,11 @@ find_component(POSTPROC libpostproc postproc libpostproc/postprocess.h) # Check if the required components were found and add their stuff to the FFMPEG_* vars. - foreach (_component ${FFmpeg_FIND_COMPONENTS}) + foreach (_component ${_FFmpeg_ALL_COMPONENTS}) if (${_component}_FOUND) - # message(STATUS "Required component ${_component} present.") set(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} ${${_component}_LIBRARIES}) set(FFMPEG_DEFINITIONS ${FFMPEG_DEFINITIONS} ${${_component}_DEFINITIONS}) list(APPEND FFMPEG_INCLUDE_DIRS ${${_component}_INCLUDE_DIRS}) - else () - # message(STATUS "Required component ${_component} missing.") endif () endforeach () @@ -131,18 +145,33 @@ FFMPEG_LIBRARIES FFMPEG_DEFINITIONS) +else () + # Set the noncached _FOUND vars for the components. + foreach (_component ${_FFmpeg_ALL_COMPONENTS}) + set_component_found(${_component}) + endforeach () endif () -# Now set the noncached _FOUND vars for the components. -foreach (_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWSCALE) - set_component_found(${_component}) -endforeach () - # Compile the list of required vars -set(_FFmpeg_REQUIRED_VARS FFMPEG_LIBRARIES FFMPEG_INCLUDE_DIRS) +unset(_FFmpeg_REQUIRED_VARS) +set(_FFmpeg_FOUND_LIBRARIES "") foreach (_component ${FFmpeg_FIND_COMPONENTS}) - list(APPEND _FFmpeg_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS) + if (${_component}_FOUND) + if (NOT WIN32) + if (${_component}_VERSION VERSION_LESS _FFmpeg_REQUIRED_VERSION) + message(STATUS "${_component}: ${${_component}_VERSION} < ${_FFmpeg_REQUIRED_VERSION}") + unset(${_component}_FOUND) + endif () + else (NOT WIN32) + message(WARNING "${_component}: Version check is not supported on Windows") + endif(NOT WIN32) + list(APPEND _FFmpeg_FOUND_LIBRARIES ${${_component}_LIBRARIES}) + endif () + list(APPEND _FFmpeg_REQUIRED_VARS ${_component}_LIBRARIES ${_component}_INCLUDE_DIRS ${_component}_FOUND) endforeach () +list(INSERT _FFmpeg_REQUIRED_VARS 0 _FFmpeg_FOUND_LIBRARIES) # Give a nice error message if some of the required vars are missing. -find_package_handle_standard_args(FFmpeg DEFAULT_MSG ${_FFmpeg_REQUIRED_VARS}) +find_package_handle_standard_args(FFmpeg + REQUIRED_VARS ${_FFmpeg_REQUIRED_VARS} + HANDLE_COMPONENTS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/ffmpegthumbnailer/filmstripfilter.cpp new/ffmpegthumbs-25.12.0/ffmpegthumbnailer/filmstripfilter.cpp --- old/ffmpegthumbs-25.08.3/ffmpegthumbnailer/filmstripfilter.cpp 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/ffmpegthumbnailer/filmstripfilter.cpp 2025-12-03 23:39:26.000000000 +0100 @@ -10,16 +10,13 @@ namespace ffmpegthumbnailer { -static const int FILMHOLE_WIDTH = 12; -static const int FILMHOLE_HEIGHT = 10; - static const quint8* determineFilmStrip(quint32 videoWidth, quint32& filmStripWidth, quint32& filmStripHeight) { if (videoWidth <= SMALLEST_FILM_STRIP_WIDTH * 2) { return nullptr; } - + if (videoWidth <= 96) { filmStripWidth = filmStripHeight = 4; @@ -55,12 +52,12 @@ quint32 filmStripWidth; quint32 filmStripHeight; const quint8* filmHole = determineFilmStrip(videoFrame.width, filmStripWidth, filmStripHeight); - + if (!filmHole) { return; } - + int frameIndex = 0; int filmHoleIndex = 0; int offset = (videoFrame.width * 3) - 3; @@ -81,7 +78,7 @@ } frameIndex += videoFrame.lineSize; filmHoleIndex = (i % filmStripHeight) * filmStripWidth * 3; - } + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/ffmpegthumbnailer/moviedecoder.cpp new/ffmpegthumbs-25.12.0/ffmpegthumbnailer/moviedecoder.cpp --- old/ffmpegthumbs-25.08.3/ffmpegthumbnailer/moviedecoder.cpp 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/ffmpegthumbnailer/moviedecoder.cpp 2025-12-03 23:39:26.000000000 +0100 @@ -12,7 +12,6 @@ extern "C" { #include <libswscale/swscale.h> -#include <libavcodec/version.h> #include <libavutil/display.h> #include <libavutil/imgutils.h> } @@ -90,11 +89,7 @@ { deleteFilterGraph(); if (m_pVideoCodecContext) { -#if LIBAVCODEC_VERSION_MAJOR >= 60 avcodec_free_context(&m_pVideoCodecContext); -#else - avcodec_close(m_pVideoCodecContext); -#endif m_pVideoCodecContext = nullptr; } m_pVideoStream = nullptr; @@ -220,11 +215,7 @@ } ++keyFrameAttempts; -#if LIBAVCODEC_VERSION_MAJOR >= 60 } while ((!gotFrame || !(m_pFrame->flags & AV_FRAME_FLAG_KEY)) && keyFrameAttempts < 200); -#else - } while ((!gotFrame || !m_pFrame->key_frame) && keyFrameAttempts < 200); -#endif if (gotFrame == 0) { qCDebug(ffmpegthumbs_LOG) << "Seeking in video failed"; @@ -272,29 +263,15 @@ return ret; } -#if LIBAVCODEC_VERSION_MAJOR >= 60 for (int i=0; i<m_pVideoStream->codecpar->nb_coded_side_data; i++) { if (m_pVideoStream->codecpar->coded_side_data[i].type != AV_PKT_DATA_DISPLAYMATRIX) { -#else - for (int i=0; i<m_pVideoStream->nb_side_data; i++) { - if (m_pVideoStream->side_data[i].type != AV_PKT_DATA_DISPLAYMATRIX) { -#endif continue; } -#if LIBAVCODEC_VERSION_MAJOR >= 60 if (m_pVideoStream->codecpar->coded_side_data[i].size != sizeof(int32_t) * 9) { qCWarning(ffmpegthumbs_LOG) << "Invalid display matrix size" << m_pVideoStream->codecpar->coded_side_data[i].size << "expected" << sizeof(int32_t) * 9; -#else - if (m_pVideoStream->side_data[i].size != sizeof(int32_t) * 9) { - qCWarning(ffmpegthumbs_LOG) << "Invalid display matrix size" << m_pVideoStream->side_data[i].size << "expected" << sizeof(int32_t) * 9; -#endif continue; } -#if LIBAVCODEC_VERSION_MAJOR >= 60 int32_t *matrix = reinterpret_cast<int32_t*>(m_pVideoStream->codecpar->coded_side_data[i].data); -#else - int32_t *matrix = reinterpret_cast<int32_t*>(m_pVideoStream->side_data[i].data); -#endif double rotation = av_display_rotation_get(matrix); if (qFuzzyCompare(rotation, 0.)) { ret |= QImageIOHandler::TransformationNone; @@ -427,11 +404,7 @@ void MovieDecoder::getScaledVideoFrame(int scaledSize, bool maintainAspectRatio, VideoFrame& videoFrame) { -#if LIBAVCODEC_VERSION_MAJOR >= 60 if (m_pFrame->flags & AV_FRAME_FLAG_INTERLACED) { -#else - if (m_pFrame->interlaced_frame) { -#endif processFilterGraph((AVFrame*) m_pFrame, (AVFrame*) m_pFrame, m_pVideoCodecContext->pix_fmt, m_pVideoCodecContext->width, m_pVideoCodecContext->height); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/ffmpegthumbnailer.cpp new/ffmpegthumbs-25.12.0/ffmpegthumbnailer.cpp --- old/ffmpegthumbs-25.08.3/ffmpegthumbnailer.cpp 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/ffmpegthumbnailer.cpp 2025-12-03 23:39:26.000000000 +0100 @@ -12,11 +12,7 @@ #include <limits> #include <KPluginFactory> -#include <QCheckBox> -#include <QFormLayout> #include <QImage> -#include <QLineEdit> -#include <QSpinBox> extern "C" { #include <libavformat/avformat.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/ffmpegthumbs.json new/ffmpegthumbs-25.12.0/ffmpegthumbs.json --- old/ffmpegthumbs-25.08.3/ffmpegthumbs.json 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/ffmpegthumbs.json 2025-12-03 23:39:26.000000000 +0100 @@ -57,7 +57,7 @@ "Name[kk]": "Видео файлдар (ffmpegthumbs)", "Name[km]": "ឯកសារវីដេអូ (ffmpegthumbs)", "Name[ko]": "동영상 파일 (ffmpegthumbs)", - "Name[lt]": "Video failai (ffmpegthumbs)", + "Name[lt]": "Vaizdo įrašo failai (ffmpegthumbs)", "Name[lv]": "Video datnes (ffmpegthumbs)", "Name[mr]": "व्हिडीओ फाईल्स (ffmpegthumbs)", "Name[nb]": "Videofiler (ffmpegthumbs)", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/org.kde.ffmpegthumbs.metainfo.xml new/ffmpegthumbs-25.12.0/org.kde.ffmpegthumbs.metainfo.xml --- old/ffmpegthumbs-25.08.3/org.kde.ffmpegthumbs.metainfo.xml 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/org.kde.ffmpegthumbs.metainfo.xml 2025-12-03 23:39:26.000000000 +0100 @@ -32,6 +32,7 @@ <name xml:lang="it">Generatore di miniature FFmpeg</name> <name xml:lang="ka">FFmpeg-ით მინიატურების შექმნა</name> <name xml:lang="ko">FFmpeg 섬네일 생성기</name> + <name xml:lang="lt">FFmpeg miniatiūrų kūrimo įrankis</name> <name xml:lang="lv">FFmpeg Thumbnailer</name> <name xml:lang="nl">FFmpeg miniatuurmaker</name> <name xml:lang="nn">FFmpeg Thumbnailer</name> @@ -73,6 +74,7 @@ <summary xml:lang="it">Generatore di miniature video che usa FFmpeg</summary> <summary xml:lang="ka">FFmpeg-ით ვიდეო მინიატურების შექმნა</summary> <summary xml:lang="ko">FFmpeg를 사용하여 동영상 섬네일 생성</summary> + <summary xml:lang="lt">Vaizdo įrašų miniatiūrų gamintojas naudojantis FFmpeg</summary> <summary xml:lang="lv">Video sīktēlu ģenerators, kas izmanto „FFmpeg“</summary> <summary xml:lang="nl">Generator van videominiatuur met behulp van FFmpeg</summary> <summary xml:lang="nn">Generer miniatyrbilete for video via FFmpeg</summary> @@ -116,6 +118,7 @@ <p xml:lang="it">Il generatore di miniature FFmpeg è un generatore di miniature video per i gestori di file di KDE.</p> <p xml:lang="ka">FFmpeg მემინიატურე KDE-ის ფაილის მმართველებისთვის ვიდეოდან სურათებს იღებს.</p> <p xml:lang="ko">FFmpeg 섬네일 생성기는 KDE 파일 관리자의 동영상 섬네일 생성기입니다.</p> + <p xml:lang="lt">FFmpeg miniatiūrų kūrimo įrankis yra vaizdo įrašų miniatiūrų gamintojas, skirtas KDE failų tvarkytuvėms.</p> <p xml:lang="lv">„FFmpeg Thumbnailer“ ir video sīktēlu ģenerators KDE datņu pārvaldniekiem.</p> <p xml:lang="nl">FFmpeg miniatuurmaker is een generator voor een videominiatuur voor KDE bestandsbeheerders.</p> <p xml:lang="nn">FFmpeg Thumbnailer er eit program for å generera video-miniatyrbilete for KDE-baserte filhandsamarar.</p> @@ -145,6 +148,7 @@ </screenshot> </screenshots> <releases> + <release version="25.12.0" date="2025-12-11"/> <release version="25.08.3" date="2025-11-06"/> <release version="25.08.2" date="2025-10-09"/> <release version="25.08.1" date="2025-09-11"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ffmpegthumbs-25.08.3/tests/CMakeLists.txt new/ffmpegthumbs-25.12.0/tests/CMakeLists.txt --- old/ffmpegthumbs-25.08.3/tests/CMakeLists.txt 2025-11-01 01:00:46.000000000 +0100 +++ new/ffmpegthumbs-25.12.0/tests/CMakeLists.txt 2025-12-03 23:39:26.000000000 +0100 @@ -24,13 +24,13 @@ target_link_libraries(ffmpegthumbtest Qt::Core Qt::Gui - KF6::KIOWidgets KF6::KIOCore + KF6::KIOGui KF6::ConfigCore KF6::ConfigGui - ${AVUTIL_LIBRARIES} ${AVFILTER_LIBRARIES} + ${SWSCALE_LIBRARIES} ${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} - ${SWSCALE_LIBRARIES} + ${AVUTIL_LIBRARIES} )
