summaryrefslogtreecommitdiffstats
path: root/src/multimedia/camera/qcameraimagecapture.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-02-09 12:55:32 +0100
committerLars Knoll <lars.knoll@qt.io>2021-02-12 15:38:47 +0000
commit187419edb2c087063afc5931134d36692f4b39a4 (patch)
tree88d9117e2c6475f8c32d83b2ee09f27b2dba60a9 /src/multimedia/camera/qcameraimagecapture.cpp
parent3c59ba2b3ce96f578b2d677ecc1fbf7da0b2e27f (diff)
Rework the metadata handling
Get rid of metadata reader and writer controls. Instead use a simple cross platform value class to store meta data. The backend can then convert to and from whatever the native API expects. Change-Id: I7cf84bfbe8eef2a88615a52ba5afeec50a0652c8 Reviewed-by: Doris Verria <doris.verria@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/camera/qcameraimagecapture.cpp')
-rw-r--r--src/multimedia/camera/qcameraimagecapture.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/multimedia/camera/qcameraimagecapture.cpp b/src/multimedia/camera/qcameraimagecapture.cpp
index 844555aa6..836468dbb 100644
--- a/src/multimedia/camera/qcameraimagecapture.cpp
+++ b/src/multimedia/camera/qcameraimagecapture.cpp
@@ -39,6 +39,7 @@
#include <qcameraimagecapture.h>
#include <qcameraimagecapturecontrol.h>
#include <qmediaencodersettings.h>
+#include <qmediametadata.h>
#include "qmediasource_p.h"
#include <qmediaservice.h>
@@ -88,6 +89,7 @@ public:
QCameraImageCapture::Error error = QCameraImageCapture::NoError;
QString errorString;
+ QMediaMetaData metaData;
void _q_error(int id, int error, const QString &errorString);
void _q_readyChanged(bool);
@@ -144,8 +146,8 @@ QCameraImageCapture::QCameraImageCapture(QCamera *camera)
this, SIGNAL(imageExposed(int)));
connect(d->control, SIGNAL(imageCaptured(int,QImage)),
this, SIGNAL(imageCaptured(int,QImage)));
- connect(d->control, SIGNAL(imageMetadataAvailable(int,QString,QVariant)),
- this, SIGNAL(imageMetadataAvailable(int,QString,QVariant)));
+ connect(d->control, SIGNAL(imageMetadataAvailable(int,const QMediaMetaData&)),
+ this, SIGNAL(imageMetadataAvailable(int,const QMediaMetaData&)));
connect(d->control, SIGNAL(imageAvailable(int,QVideoFrame)),
this, SIGNAL(imageAvailable(int,QVideoFrame)));
connect(d->control, SIGNAL(imageSaved(int,QString)),
@@ -288,6 +290,28 @@ void QCameraImageCapture::setCaptureDestination(QCameraImageCapture::CaptureDest
emit captureDestinationChanged(destination);
}
+QMediaMetaData QCameraImageCapture::metaData() const
+{
+ Q_D(const QCameraImageCapture);
+ return d->metaData;
+}
+
+void QCameraImageCapture::setMetaData(const QMediaMetaData &metaData)
+{
+ Q_D(QCameraImageCapture);
+ d->metaData = metaData;
+ d->control->setMetaData(d->metaData);
+}
+
+void QCameraImageCapture::addMetaData(const QMediaMetaData &metaData)
+{
+ Q_D(QCameraImageCapture);
+ auto data = d->metaData;
+ for (auto k : metaData.keys())
+ data.insert(k, metaData.value(k));
+ setMetaData(data);
+}
+
/*!
\property QCameraImageCapture::readyForCapture
\brief whether the service is ready to capture a an image immediately.