office-gobmx/avmedia
Michael Weghorn a99575f04f tdf#194504 qt avmedia: Don't wait for video frame if there's none
If the media doesn't have video, then don't try to
grab a frame, but stop waiting for the
`QVideoSink::videoFrameChanged` signal to be emitted
in `QtFrameGrabber::grabFrame`.

Don't call `QMediaPlayer::hasVideo` while the media
is still being loaded, as the result is only valid once loading
the media has been finished (`false` is returned otherwise
even if the media file contains video), s. the platform
implementation in qtmultimedia's `QFFmpegMediaPlayer::setMedia`,
which loads the media in a separate thread: Once the media
has been loaded, `QFFmpegMediaPlayer::setMediaAsync`
calls `QPlatformMediaPlayer::videoAvailableChanged`
to specify whether video is available.

With this commit in place, opening an Impress presentation
that contains an audio file (like attachment 194504
from tdf#145735) now shows an "audio icon" as placeholder
as expected and the application exits properly on close,
rather than blocking as it's still waiting for a video frame.

Change-Id: I5448a9f7396d4c419d76a2400e3f2a1ef52a7e85
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168305
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-06-02 06:19:25 +02:00
..
inc Extended loplugin:ostr: Rewrite some O[U]StringLiteral -> O[U]String 2023-10-23 11:04:42 +02:00
source tdf#194504 qt avmedia: Don't wait for video frame if there's none 2024-06-02 06:19:25 +02:00
util
AllLangMoTarget_avmedia.mk
CustomTarget_avmediaqt6_moc.mk tdf#145735 qt avmedia: Implement frame grabber 2024-05-31 09:24:01 +02:00
IwyuFilter_avmedia.yaml
Library_avmedia.mk Use less epoxy external headers dependency 2023-09-23 10:38:36 +02:00
Library_avmediagst.mk tdf#149971 avmedia: implement video crop support in the gsteamer backend 2022-08-26 11:48:41 +02:00
Library_avmediagtk.mk avmediagtk: Use gb_Library_set_include for GTK4_CFLAGS 2024-05-20 15:22:49 +02:00
Library_avmediaMacAVF.mk Generally determine Rdb content from gb_*_set_componentfile calls 2021-12-10 08:14:24 +01:00
Library_avmediaqt6.mk tdf#145735 qt avmedia: Implement frame grabber 2024-05-31 09:24:01 +02:00
Library_avmediawin.mk Generally determine Rdb content from gb_*_set_componentfile calls 2021-12-10 08:14:24 +01:00
Makefile
Module_avmedia.mk tdf#145735 avmedia qt: Use QtMultimedia for Qt 6 media playback 2024-05-21 17:28:04 +02:00
README.md Updated README.md files to represent current code / use Markdown format 2021-04-07 17:47:16 +02:00

Audio / video Media Implementation.

Provides per-platform implementations of multimedia functionality. Currently no stream API is provided, only a URI based one, so streaming has to be wrapped around it via temp files.

Also provides (in source/framework/mediacontrol.cxx) an implementation of the graphical media playback control that appears in the toolbar / mediaobject bar when media is selected under the .uno:AVMediaToolBox item.

avmedia / gstreamer

The avmedia component is implementation of manager service defined in offapi/com/sun/star/media/. Radek has added implementation based on gstreamer so that we can add audio and video files into impress presentation on Linux with gstreamer.

The implementation is pretty straightforward, sometimes it has problems when gstreamer installation is incomplete.

In the beginning the media files were not embedded, Thorsten added support for that later.

Future Works

it might be worthwhile to revamp the avmedia UI.