diff options
Diffstat (limited to 'src/multimedia/camera')
-rw-r--r-- | src/multimedia/camera/qcameraimagecapture.cpp | 28 | ||||
-rw-r--r-- | src/multimedia/camera/qcameraimagecapture.h | 11 |
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) |