diff options
author | Tim Blechmann <tim@klingt.org> | 2024-04-29 19:06:37 +0800 |
---|---|---|
committer | Tim Blechmann <tim@klingt.org> | 2024-05-02 19:23:58 +0800 |
commit | e2893da47485a9f70b7890f61cdf878f3dd524c6 (patch) | |
tree | 03aae7a9b7ebef094e8c0c4426fda6604db1ac49 /tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp | |
parent | b1a790ee33fee626eda3888761ea7b324bd8d90b (diff) |
GStreamer: fix QGstreamerMediaPlayer - fix metadata test
QGstreamerMediaPlayer did not emit metaDataChanged after parsing
GST_MESSAGE_TAG. This caused metadata to be changed without notifying
the application.
In the unit test we need to wait for `metaDataChanged` at least twice,
since it is called from both the GST_MESSAGE_TAG handler and from
parseStreamsAndMetadata.
Fixes: QTBUG-124182
Pick-to: 6.5 6.7
Change-Id: I68f81d5bcb1a2c809f3641ec11356f5b9a8cb601
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Diffstat (limited to 'tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp')
-rw-r--r-- | tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp index f1baa5d1d..7f1cee1cc 100644 --- a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp +++ b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp @@ -687,8 +687,6 @@ void tst_QCameraBackend::testNativeMetadata() QVERIFY(!fileName.isEmpty()); QVERIFY(QFileInfo(fileName).size() > 0); - QSKIP_GSTREAMER("QTBUG-124182: spurious failure while retrieving the metadata"); - // QMediaRecorder::metaData() can only test that QMediaMetaData is set properly on the recorder. // Use QMediaPlayer to test that the native metadata is properly set on the track QAudioOutput output; @@ -700,16 +698,17 @@ void tst_QCameraBackend::testNativeMetadata() player.setSource(QUrl::fromLocalFile(fileName)); player.play(); - QTRY_VERIFY(metadataChangedSpy.size() > 0); + int metadataChangedRequiredCount = isGStreamerPlatform() ? 2 : 1; + + QTRY_VERIFY(metadataChangedSpy.size() >= metadataChangedRequiredCount); - QCOMPARE(player.metaData().value(QMediaMetaData::Title).toString(), metaData.value(QMediaMetaData::Title).toString()); + QCOMPARE(player.metaData().value(QMediaMetaData::Title).toString(), + metaData.value(QMediaMetaData::Title).toString()); auto lang = player.metaData().value(QMediaMetaData::Language).value<QLocale::Language>(); if (lang != QLocale::AnyLanguage) QCOMPARE(lang, metaData.value(QMediaMetaData::Language).value<QLocale::Language>()); QCOMPARE(player.metaData().value(QMediaMetaData::Description).toString(), metaData.value(QMediaMetaData::Description).toString()); - metadataChangedSpy.clear(); - player.stop(); player.setSource({}); QFile(fileName).remove(); |