summaryrefslogtreecommitdiffstats
path: root/src/multimedia/playback/qmediaplayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/playback/qmediaplayer.cpp')
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index 2c196a04d..5917b083e 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -714,6 +714,11 @@ void QMediaPlayer::setActiveSubtitleTrack(int index)
void QMediaPlayer::setVideoOutput(QObject *output)
{
auto *mo = output->metaObject();
+ QVideoSink *sink = nullptr;
+ if (!output || mo->invokeMethod(output, "videoSink", Q_RETURN_ARG(QVideoSink *, sink))) {
+ setVideoOutput(sink);
+ return;
+ }
QAbstractVideoSurface *surface = nullptr;
if (output && !mo->invokeMethod(output, "videoSurface", Q_RETURN_ARG(QAbstractVideoSurface *, surface))) {
qWarning() << "QMediaPlayer::setVideoOutput: Object" << output->metaObject()->className() << "does not have a videoSurface()";
@@ -728,7 +733,6 @@ void QMediaPlayer::setVideoOutput(QObject *output)
If a video output has already been set on the media player the new surface
will replace it.
*/
-
void QMediaPlayer::setVideoOutput(QAbstractVideoSurface *surface)
{
Q_D(QMediaPlayer);
@@ -739,6 +743,16 @@ void QMediaPlayer::setVideoOutput(QAbstractVideoSurface *surface)
d->control->setVideoSurface(surface);
}
+void QMediaPlayer::setVideoOutput(QVideoSink *sink)
+{
+ Q_D(QMediaPlayer);
+
+ if (!d->control)
+ return;
+
+ d->control->setVideoSink(sink);
+}
+
/*!
\since 5.15
Sets multiple video surfaces as the video output of a media player.
@@ -751,7 +765,6 @@ void QMediaPlayer::setVideoOutput(QAbstractVideoSurface *surface)
\sa QAbstractVideoSurface::supportedPixelFormats
*/
-
void QMediaPlayer::setVideoOutput(const QList<QAbstractVideoSurface *> &surfaces)
{
setVideoOutput(!surfaces.empty() ? new QVideoSurfaces(surfaces, this) : nullptr);