diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-04-29 15:21:09 +0200 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-05-09 08:26:15 +0200 |
commit | 1dfafa0e7425afa8d80f2dbd35a2f08e0589436d (patch) | |
tree | bcbb9b98b4f8eac759ae0a6a9c4798a77bdf09bc | |
parent | 19c05fb683d7f4d5bae50dbd2bf9f82b936d124a (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.cpp | 4 |
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); |