summaryrefslogtreecommitdiffstats
path: root/src/multimedia/camera
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/camera')
-rw-r--r--src/multimedia/camera/qcameraimagecapture.cpp28
-rw-r--r--src/multimedia/camera/qcameraimagecapture.h11
2 files changed, 32 insertions, 7 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.
diff --git a/src/multimedia/camera/qcameraimagecapture.h b/src/multimedia/camera/qcameraimagecapture.h
index 4bb3ed89a..4b7684ca4 100644
--- a/src/multimedia/camera/qcameraimagecapture.h
+++ b/src/multimedia/camera/qcameraimagecapture.h
@@ -50,6 +50,7 @@
QT_BEGIN_NAMESPACE
class QSize;
+class QMediaMetaData;
QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
@@ -101,6 +102,10 @@ public:
CaptureDestinations captureDestination() const;
void setCaptureDestination(CaptureDestinations destination);
+ QMediaMetaData metaData() const;
+ void setMetaData(const QMediaMetaData &metaData);
+ void addMetaData(const QMediaMetaData &metaData);
+
public Q_SLOTS:
int capture(const QString &location = QString());
void cancelCapture();
@@ -113,7 +118,7 @@ Q_SIGNALS:
void imageExposed(int id);
void imageCaptured(int id, const QImage &preview);
- void imageMetadataAvailable(int id, const QString &key, const QVariant &value);
+ void imageMetadataAvailable(int id, const QMediaMetaData &metaData);
void imageAvailable(int id, const QVideoFrame &frame);
void imageSaved(int id, const QString &fileName);
@@ -131,10 +136,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QCameraImageCapture::CaptureDestinations)
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QCameraImageCapture::Error)
-Q_DECLARE_METATYPE(QCameraImageCapture::CaptureDestination)
-Q_DECLARE_METATYPE(QCameraImageCapture::CaptureDestinations)
-
Q_MEDIA_ENUM_DEBUG(QCameraImageCapture, Error)
Q_MEDIA_ENUM_DEBUG(QCameraImageCapture, CaptureDestination)