summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2024-04-02 11:35:48 +0800
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-04-04 09:27:19 +0000
commitb77ad3ae3bf39d6d5b567373d57722b5a9b86061 (patch)
tree626dc01686ad64a6a232eb6af00048dba01143b1
parentf200769f1d9db045780632bbd47031076c163591 (diff)
GStreamer: fix nativeSize handling
In `parseStreamsAndMetadata` we may not have a `QVideoSink` set, but still use a fake video sink. So we should not propagate the native size hint directly, but apply it to the `QGstreamerVideoOutput`. Pick-to: 6.5 Change-Id: I9a3667185f0bf7c3a7547235f1fa61469feb1548 Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> (cherry picked from commit 8de19600c9ddc9dd2a44a2031885323399b185a5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b2f80e7a87078ed96b344def185ed29812e4c815)
-rw-r--r--src/plugins/multimedia/gstreamer/common/qgstreamermediaplayer.cpp2
-rw-r--r--src/plugins/multimedia/gstreamer/common/qgstreamervideooutput.cpp13
-rw-r--r--src/plugins/multimedia/gstreamer/common/qgstreamervideooutput_p.h4
3 files changed, 16 insertions, 3 deletions
diff --git a/src/plugins/multimedia/gstreamer/common/qgstreamermediaplayer.cpp b/src/plugins/multimedia/gstreamer/common/qgstreamermediaplayer.cpp
index a4e2036e7..9edb5b3dd 100644
--- a/src/plugins/multimedia/gstreamer/common/qgstreamermediaplayer.cpp
+++ b/src/plugins/multimedia/gstreamer/common/qgstreamermediaplayer.cpp
@@ -870,7 +870,7 @@ void QGstreamerMediaPlayer::parseStreamsAndMetadata()
qCDebug(qLcMediaPlayer) << " tags=(null)";
QSize nativeSize = structure.nativeSize();
- gstVideoOutput->gstreamerVideoSink()->setNativeSize(nativeSize);
+ gstVideoOutput->setNativeSize(nativeSize);
}
diff --git a/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput.cpp b/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput.cpp
index 0cc96e7a9..ccfb08d19 100644
--- a/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput.cpp
+++ b/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput.cpp
@@ -85,9 +85,11 @@ void QGstreamerVideoOutput::setVideoSink(QVideoSink *sink)
m_videoSink->setPipeline({});
m_videoSink = gstVideoSink;
- if (m_videoSink)
+ if (m_videoSink) {
m_videoSink->setPipeline(gstPipeline);
-
+ if (nativeSize.isValid())
+ m_videoSink->setNativeSize(nativeSize);
+ }
QGstElement gstSink;
if (m_videoSink) {
gstSink = m_videoSink->gstSink();
@@ -202,6 +204,13 @@ void QGstreamerVideoOutput::flushSubtitles()
}
}
+void QGstreamerVideoOutput::setNativeSize(QSize sz)
+{
+ nativeSize = sz;
+ if (m_videoSink)
+ m_videoSink->setNativeSize(nativeSize);
+}
+
QT_END_NAMESPACE
#include "moc_qgstreamervideooutput_p.cpp"
diff --git a/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput_p.h b/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput_p.h
index 7f6539955..62bd4b219 100644
--- a/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput_p.h
+++ b/src/plugins/multimedia/gstreamer/common/qgstreamervideooutput_p.h
@@ -49,6 +49,8 @@ public:
void setIsPreview();
void flushSubtitles();
+ void setNativeSize(QSize);
+
private:
QGstreamerVideoOutput(QGstElement videoConvert, QGstElement videoScale, QGstElement videoSink,
QObject *parent);
@@ -68,6 +70,8 @@ private:
QGstElement subtitleSrc;
QGstElement subtitleSink;
+
+ QSize nativeSize;
};
QT_END_NAMESPACE