summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2024-04-30 09:18:44 +0800
committerTim Blechmann <tim@klingt.org>2024-05-06 23:18:45 +0800
commit4a0388d86b97af68d5106b63ce3222556ec57d4b (patch)
tree7dccfc7e8cca2a2685a881410a636882bde50bd4
parent7d2b2490322c24ce9b0950c8dc1706803c6aef4c (diff)
GStreamer: QGstreamerImageCapture - set metadata immediately
Originally the metadata was populated with "Resolution" / "Date" from the `probeBuffer` handler. However according to imagemagick's `identify` these metadata do not seem to affect the generated images, probably they are generated from the timestamps/buffer image resolution Pick-to: 6.5 6.7 Change-Id: I81491e51c5b7a50c9aec23e1d7cf549382246b7d Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
-rw-r--r--src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture.cpp12
-rw-r--r--src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture_p.h2
-rw-r--r--tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp1
3 files changed, 10 insertions, 5 deletions
diff --git a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture.cpp b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture.cpp
index bb4990603..5ef797d6e 100644
--- a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture.cpp
+++ b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture.cpp
@@ -204,13 +204,9 @@ bool QGstreamerImageCapture::probeBuffer(GstBuffer *buffer)
emit imageCaptured(imageData.id, img);
QMediaMetaData metaData = this->metaData();
- metaData.insert(QMediaMetaData::Date, QDateTime::currentDateTime());
metaData.insert(QMediaMetaData::Resolution, frame.size());
imageData.metaData = metaData;
- // ensure taginject injects this metaData
- applyMetaDataToTagSetter(metaData, muxer);
-
emit imageMetadataAvailable(imageData.id, metaData);
return true;
@@ -243,6 +239,14 @@ void QGstreamerImageCapture::setCaptureSession(QPlatformMediaCaptureSession *ses
onCameraChanged();
}
+void QGstreamerImageCapture::setMetaData(const QMediaMetaData &m)
+{
+ QPlatformImageCapture::setMetaData(m);
+
+ // ensure taginject injects this metaData
+ applyMetaDataToTagSetter(m, muxer);
+}
+
void QGstreamerImageCapture::cameraActiveChanged(bool active)
{
qCDebug(qLcImageCaptureGst) << "cameraActiveChanged" << cameraActive << active;
diff --git a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture_p.h b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture_p.h
index 79c6a02e0..7be44a239 100644
--- a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture_p.h
+++ b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamerimagecapture_p.h
@@ -48,6 +48,8 @@ public:
QGstElement gstElement() const { return bin; }
+ void setMetaData(const QMediaMetaData &m) override;
+
public Q_SLOTS:
void cameraActiveChanged(bool active);
void onCameraChanged();
diff --git a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
index 521046d86..fd6d819eb 100644
--- a/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
+++ b/tests/auto/integration/qcamerabackend/tst_qcamerabackend.cpp
@@ -477,7 +477,6 @@ void tst_QCameraBackend::testCameraCaptureMetadata()
QMediaMetaData::Description,
})
QCOMPARE(receivedMetaData[key], referenceMetaData[key]);
- QVERIFY(receivedMetaData[QMediaMetaData::Date].isValid());
QVERIFY(receivedMetaData[QMediaMetaData::Resolution].isValid());
}
}