Am 10.08.25 11:48, schrieb Rene Engelhard: > Debdiff attached. Obviously it wasn't. Now, really.
Regards, Rene
diff -Nru libreoffice-25.2.3/debian/changelog libreoffice-25.2.3/debian/changelog --- libreoffice-25.2.3/debian/changelog 2025-05-04 07:34:39.000000000 +0200 +++ libreoffice-25.2.3/debian/changelog 2025-08-09 18:26:25.000000000 +0200 @@ -1,3 +1,18 @@ +libreoffice (4:25.2.3-2+deb13u1) trixie; urgency=medium + + * debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff: add + back + * debian/patches/qt-Consolidate-to-one-toOUString-helper.diff: add from + upstream; fixes --enable-qt6 builds with the above + + * debian/rules: + - remove USE_GSTREAMER=n setting on build-indep since it somehow also + affects the AVMEDIA conditional which makes build-indep builds loose + the gallery sound files (closes: #1108832), and move the gstreamer -dev + packages from B-D-A to B-D consequently + + -- Rene Engelhard <[email protected]> Sat, 09 Aug 2025 18:26:25 +0200 + libreoffice (4:25.2.3-2) unstable; urgency=medium * debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff: diff -Nru libreoffice-25.2.3/debian/control libreoffice-25.2.3/debian/control --- libreoffice-25.2.3/debian/control 2025-05-01 20:15:55.000000000 +0200 +++ libreoffice-25.2.3/debian/control 2025-08-02 11:42:10.000000000 +0200 @@ -72,6 +72,8 @@ libglib2.0-dev, libglm-dev, libgraphite2-dev, + libgstreamer-plugins-base1.0-dev, + libgstreamer1.0-dev, libharfbuzz-dev (>= 5.1.0), libhsqldb1.8.0-java [!armel !armhf !hppa !kfreebsd-amd64 !kfreebsd-i386 !mips64 !powerpcspe !ppc64el !s390x !sparc] <!nojava>, libhunspell-dev, @@ -200,8 +202,6 @@ libgpg-error-dev, libgpgme-dev, libgpgmepp-dev, - libgstreamer-plugins-base1.0-dev, - libgstreamer1.0-dev, libgtk-3-dev, libgtk-4-dev (>= 4.10), libkf6config-dev, diff -Nru libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff --- libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff 1970-01-01 01:00:00.000000000 +0100 +++ libreoffice-25.2.3/debian/patches/avmedia-qt-use-gstreamer-frame-grabber-by-default.diff 2025-08-02 11:43:35.000000000 +0200 @@ -0,0 +1,165 @@ +From 4bda0a68ef81a3f3eb5233b35ea046aca5352c88 Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <[email protected]> +Date: Fri, 2 May 2025 17:52:19 +0200 +Subject: tdf#166055 avmedia qt: Use GStreamer frame grabber by default + +As described in tdf#166055, QtFrameGrabber currently +still causes issues (freezes or crashes). + +The QtMultimedia API does not provide a simple +way to synchronously retrieve a video frame, so +the current approach is to connect to the +QVideoSink::videoFrameChanged signal and start +playing the video until the first frame arrives. + +There are various QtMultimedia plugins/backends +(at least GStreamer and ffmpeg for Linux). Some +use multiple threads internally. Some logic +needs to be run in the main thread however, so +it's not possible to move things to a separate +thread/event loop to decouple it from the main +thread. +As a consequence, there is a need to trigger +event processing while waiting for the frame, +as QVideoSink::videoFrameChanged would otherwise +never be called. + +Triggering event processing can have bad side-effects +however, as seen in tdf#166055, e.g. leading to +endless recursion or crashes when processing LO events. + +See also + + commit 697405b533a8ae5b6a8f5bd184b9344a96f71c69 + Author: Michael Weghorn <[email protected]> + Date: Wed Apr 9 09:42:45 2025 +0200 + + tdf#166055 qt avmedia: Provide media/player size right away + +for more background and some thoughts. + +For now, avoid the problem by using +the GStreamer based frame grabber even with +QtPlayer by default. + +This means that the QtMultimedia +framework is still used for video playback with the +qt6 VCL plugin, where LO's GStreamer implementation +doesn't work properly, see + + commit 441d8ed9be0e7f831b455a69b8688dcb79a8bc00 + Author: Michael Weghorn <[email protected]> + Date: Mon May 20 16:25:09 2024 +0200 + + tdf#145735 avmedia qt: Use QtMultimedia for Qt 6 media playback + +. However, in order to preview images (that are e.g. shown +in Impress when not in presentation mode) the LO GStreamer +backend is used now. +(That works fine, no UI interaction is needed +for that.) + +Adjust QtPlayer::createFrameGrabber accordingly +to return the LO default platform player/frame grabber +implementation (which is the GStreamer one on Linux), see also +MediaWindowImpl::createPlayer. Use the service to +avoid having to link GStreamer libraries. + +However, allow to force the use of QtFrameGrabber +by setting environment variable +SAL_VCL_QT_USE_QT_FRAME_GRABBER. + +Change-Id: Ibe5c42adf6e8f699f33e5f089bd2f6076c3de4f7 +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184912 +Tested-by: Jenkins +Reviewed-by: Michael Weghorn <[email protected]> +(cherry picked from commit 08533ca4e2526644b803c40c0c3d3c96f43762af) +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184918 +Reviewed-by: Adolfo Jayme Barrientos <[email protected]> +--- + avmedia/source/qt6/QtPlayer.cxx | 51 +++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 49 insertions(+), 2 deletions(-) + +diff --git a/avmedia/source/qt6/QtPlayer.cxx b/avmedia/source/qt6/QtPlayer.cxx +index 1be226b248dd..dc0dea9fb05a 100644 +--- a/avmedia/source/qt6/QtPlayer.cxx ++++ b/avmedia/source/qt6/QtPlayer.cxx +@@ -17,6 +17,9 @@ + #include <QtWidgets/QLabel> + #include <QtWidgets/QLayout> + ++#include <com/sun/star/media/XManager.hpp> ++#include <com/sun/star/uno/XComponentContext.hpp> ++#include <comphelper/processfactory.hxx> + #include <cppuhelper/supportsservice.hxx> + #include <sal/log.hxx> + #include <rtl/string.hxx> +@@ -30,6 +33,7 @@ + #include <vcl/timer.hxx> + + #include <gstwindow.hxx> ++#include <mediamisc.hxx> + #include "QtFrameGrabber.hxx" + #include "QtPlayer.hxx" + +@@ -245,12 +249,55 @@ uno::Reference<::media::XPlayerWindow> + return xRet; + } + ++namespace ++{ ++// see also MediaWindowImpl::createPlayer ++uno::Reference<media::XFrameGrabber> createPlatformFrameGrabber(const OUString& rUrl) ++{ ++ const uno::Reference<uno::XComponentContext>& xContext ++ = comphelper::getProcessComponentContext(); ++ try ++ { ++ uno::Reference<css::media::XManager> xManager( ++ xContext->getServiceManager()->createInstanceWithContext(AVMEDIA_MANAGER_SERVICE_NAME, ++ xContext), ++ uno::UNO_QUERY); ++ if (!xManager.is()) ++ return nullptr; ++ ++ uno::Reference<media::XPlayer> xPlayer = xManager->createPlayer(rUrl); ++ if (!xPlayer.is()) ++ return nullptr; ++ ++ return xPlayer->createFrameGrabber(); ++ } ++ catch (const uno::Exception&) ++ { ++ SAL_WARN("avmedia", "Exception in createPlatformFrameGrabber"); ++ } ++ ++ return nullptr; ++} ++} ++ + uno::Reference<media::XFrameGrabber> SAL_CALL QtPlayer::createFrameGrabber() + { + osl::MutexGuard aGuard(m_aMutex); + +- rtl::Reference<QtFrameGrabber> xFrameGrabber = new QtFrameGrabber(m_xMediaPlayer->source()); +- return xFrameGrabber; ++ // use the default platform frame grabber (GStreamer on Linux) by default ++ // instead of using QtFrameGrabber for now unless overriden by env variable, ++ // as QtFrameGrabber has issues (see e.g. tdf#166055) ++ static const bool bPreferQtFrameGrabber ++ = (getenv("SAL_VCL_QT_USE_QT_FRAME_GRABBER") != nullptr); ++ if (!bPreferQtFrameGrabber) ++ { ++ uno::Reference<media::XFrameGrabber> xFrameGrabber ++ = createPlatformFrameGrabber(toOUString(m_xMediaPlayer->source().url())); ++ if (xFrameGrabber.is()) ++ return xFrameGrabber; ++ } ++ ++ return new QtFrameGrabber(m_xMediaPlayer->source()); + } + + OUString SAL_CALL QtPlayer::getImplementationName() +-- +cgit v1.2.3 + diff -Nru libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff --- libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff 1970-01-01 01:00:00.000000000 +0100 +++ libreoffice-25.2.3/debian/patches/qt-Consolidate-to-one-toOUString-helper.diff 2025-08-02 11:44:35.000000000 +0200 @@ -0,0 +1,90 @@ +From 30c0c6cc92df8f86d8b6fdf9143b46f77befc92f Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <[email protected]> +Date: Fri, 11 Apr 2025 17:19:20 +0200 +Subject: [PATCH] qt: Consolidate to one toOUString helper + +Instead of having one for vcl in vcl/inc/qt5/QtTools.hxx +and one in avmedia/source/qt6/QtFrameGrabber.cxx, +move the existing implementation to +include/vcl/qt/QtUtils.hxx and use it everywhere. + +Change-Id: I8576ab0fe2fd12bb25ae262e59acb8412ef8be0c +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184057 +Tested-by: Jenkins +Reviewed-by: Michael Weghorn <[email protected]> +(cherry picked from commit d023035acf83ee1b61dfc03333bfc6e612bb58f6) +--- + avmedia/source/qt6/QtFrameGrabber.cxx | 6 +----- + include/vcl/qt/QtUtils.hxx | 6 ++++++ + vcl/inc/qt5/QtTools.hxx | 7 +------ + 3 files changed, 8 insertions(+), 11 deletions(-) + +diff --git a/avmedia/source/qt6/QtFrameGrabber.cxx b/avmedia/source/qt6/QtFrameGrabber.cxx +index a9cf99fadc7f..b82b02005d9a 100644 +--- a/avmedia/source/qt6/QtFrameGrabber.cxx ++++ b/avmedia/source/qt6/QtFrameGrabber.cxx +@@ -14,6 +14,7 @@ + #include <vcl/filter/PngImageReader.hxx> + #include <vcl/graph.hxx> + #include <vcl/image.hxx> ++#include <vcl/qt/QtUtils.hxx> + #include <vcl/scheduler.hxx> + + #include "QtFrameGrabber.hxx" +@@ -23,11 +24,6 @@ using namespace ::com::sun::star; + + namespace + { +-inline OUString toOUString(const QString& s) +-{ +- return OUString(reinterpret_cast<const sal_Unicode*>(s.data()), s.length()); +-} +- + uno::Reference<css::graphic::XGraphic> toXGraphic(const QImage& rImage) + { + QByteArray aData; +diff --git a/include/vcl/qt/QtUtils.hxx b/include/vcl/qt/QtUtils.hxx +index 87f21d96315c..3ab5f19f02cb 100644 +--- a/include/vcl/qt/QtUtils.hxx ++++ b/include/vcl/qt/QtUtils.hxx +@@ -31,6 +31,12 @@ inline QString toQString(const OUString& rStr) + return QString::fromUtf16(rStr.getStr(), rStr.getLength()); + } + ++inline OUString toOUString(const QString& s) ++{ ++ // QString stores UTF16, just like OUString ++ return OUString(reinterpret_cast<const sal_Unicode*>(s.data()), s.length()); ++} ++ + inline QPixmap toQPixmap(const BitmapEx& rBitmapEx) + { + SvMemoryStream aMemoryStream; +diff --git a/vcl/inc/qt5/QtTools.hxx b/vcl/inc/qt5/QtTools.hxx +index c1b2b75fff5f..b090ba3718c8 100644 +--- a/vcl/inc/qt5/QtTools.hxx ++++ b/vcl/inc/qt5/QtTools.hxx +@@ -33,6 +33,7 @@ + #include <tools/color.hxx> + #include <tools/gen.hxx> + #include <vcl/bitmap/BitmapTypes.hxx> ++#include <vcl/qt/QtUtils.hxx> + #include <vcl/vclenum.hxx> + + #include <com/sun/star/uno/Sequence.hxx> +@@ -43,12 +44,6 @@ + class Image; + class QImage; + +-inline OUString toOUString(const QString& s) +-{ +- // QString stores UTF16, just like OUString +- return OUString(reinterpret_cast<const sal_Unicode*>(s.data()), s.length()); +-} +- + inline QRect toQRect(const tools::Rectangle& rRect) + { + return QRect(rRect.Left(), rRect.Top(), rRect.GetWidth(), rRect.GetHeight()); +-- +2.47.2 + diff -Nru libreoffice-25.2.3/debian/patches/series libreoffice-25.2.3/debian/patches/series --- libreoffice-25.2.3/debian/patches/series 2025-05-04 07:33:52.000000000 +0200 +++ libreoffice-25.2.3/debian/patches/series 2025-08-02 11:44:59.000000000 +0200 @@ -51,3 +51,5 @@ fix-32bits-test-build.diff disable-uitest-xmlsecurity-gpg.diff system-colamd.diff +avmedia-qt-use-gstreamer-frame-grabber-by-default.diff +qt-Consolidate-to-one-toOUString-helper.diff diff -Nru libreoffice-25.2.3/debian/rules libreoffice-25.2.3/debian/rules --- libreoffice-25.2.3/debian/rules 2025-05-01 20:15:55.000000000 +0200 +++ libreoffice-25.2.3/debian/rules 2025-08-02 11:42:10.000000000 +0200 @@ -514,7 +514,6 @@ ENABLE_SKIA=n ENABLE_COINMP=n ENABLE_LPSOLVE=n -USE_GSTREAMER=n ENABLE_LDAP=n ENABLE_PDFIUM=n USE_DBUS=n @@ -1839,9 +1838,9 @@ endif ifeq "$(USE_GSTREAMER)" "y" - BUILD_DEPS_ARCH += , libgstreamer1.0-dev + BUILD_DEPS += , libgstreamer1.0-dev CONFIGURE_FLAGS += --enable-gstreamer-1-0 - BUILD_DEPS_ARCH += , libgstreamer-plugins-base1.0-dev + BUILD_DEPS += , libgstreamer-plugins-base1.0-dev GSTREAMER_PLUGINS_SUGGESTS += , gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-ugly, gstreamer1.0-plugins-bad, gstreamer1.0-libav else CONFIGURE_FLAGS += --disable-gstreamer-1-0

