diff options
author | Tim Blechmann <tim@klingt.org> | 2024-04-30 09:18:44 +0800 |
---|---|---|
committer | Tim Blechmann <tim@klingt.org> | 2024-05-06 23:18:45 +0800 |
commit | 4a0388d86b97af68d5106b63ce3222556ec57d4b (patch) | |
tree | 7dccfc7e8cca2a2685a881410a636882bde50bd4 | |
parent | 7d2b2490322c24ce9b0950c8dc1706803c6aef4c (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>
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()); } } |