diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-02-09 12:55:32 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-02-12 15:38:47 +0000 |
commit | 187419edb2c087063afc5931134d36692f4b39a4 (patch) | |
tree | 88d9117e2c6475f8c32d83b2ee09f27b2dba60a9 /src/multimedia/camera/qcameraimagecapture.cpp | |
parent | 3c59ba2b3ce96f578b2d677ecc1fbf7da0b2e27f (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.cpp | 28 |
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. |