summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-04-29 15:21:09 +0200
committerPiotr Srebrny <piotr.srebrny@qt.io>2022-05-09 08:26:15 +0200
commit1dfafa0e7425afa8d80f2dbd35a2f08e0589436d (patch)
treebcbb9b98b4f8eac759ae0a6a9c4798a77bdf09bc
parent19c05fb683d7f4d5bae50dbd2bf9f82b936d124a (diff)
Update metadata after updating media duration
Media duration was sometimes set to 0 in metadata as it was read from m_duration variable, which is updated asynchronously from gstreambus. Do metadata parsing after updateding the m_duration variable to avoid this race. Fixes: QTBUG-102588 Change-Id: Id7514c73c7668f589e0a209f8fdf00a86e8a1208 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit fe1177d6c771b8195284f2e6f2f0876790b07c03) Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r--src/multimedia/platform/gstreamer/common/qgstreamermediaplayer.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/multimedia/platform/gstreamer/common/qgstreamermediaplayer.cpp b/src/multimedia/platform/gstreamer/common/qgstreamermediaplayer.cpp
index e9ac97724..cf990edf4 100644
--- a/src/multimedia/platform/gstreamer/common/qgstreamermediaplayer.cpp
+++ b/src/multimedia/platform/gstreamer/common/qgstreamermediaplayer.cpp
@@ -345,8 +345,6 @@ bool QGstreamerMediaPlayer::processBusMessage(const QGstreamerMessage &message)
prerolling = false;
GST_DEBUG_BIN_TO_DOT_FILE(playerPipeline.bin(), GST_DEBUG_GRAPH_SHOW_ALL, "playerPipeline");
- parseStreamsAndMetadata();
-
qint64 d = playerPipeline.duration()/1e6;
if (d != m_duration) {
m_duration = d;
@@ -354,6 +352,8 @@ bool QGstreamerMediaPlayer::processBusMessage(const QGstreamerMessage &message)
emit durationChanged(duration());
}
+ parseStreamsAndMetadata();
+
emit tracksChanged();
mediaStatusChanged(QMediaPlayer::LoadedMedia);