summaryrefslogtreecommitdiffstats
path: root/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/gstreamer/camerabin/camerabinmetadata.cpp')
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinmetadata.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
index b265fc2aa..c2b7c33c3 100644
--- a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp
@@ -198,11 +198,13 @@ QVariant CameraBinMetaData::metaData(const QString &key) const
void CameraBinMetaData::setMetaData(const QString &key, const QVariant &value)
{
QVariant correctedValue = value;
- if (key == QMediaMetaData::Orientation) {
- correctedValue = toGStreamerOrientation(value);
- } else if (key == QMediaMetaData::GPSSpeed) {
- // kilometers per hour to meters per second.
- correctedValue = (value.toDouble() * 1000) / 3600;
+ if (value.isValid()) {
+ if (key == QMediaMetaData::Orientation) {
+ correctedValue = toGStreamerOrientation(value);
+ } else if (key == QMediaMetaData::GPSSpeed) {
+ // kilometers per hour to meters per second.
+ correctedValue = (value.toDouble() * 1000) / 3600;
+ }
}
static const int count = sizeof(qt_gstreamerMetaDataKeys) / sizeof(QGstreamerMetaDataKeyLookup);
@@ -211,9 +213,12 @@ void CameraBinMetaData::setMetaData(const QString &key, const QVariant &value)
if (qt_gstreamerMetaDataKeys[i].key == key) {
const char *name = qt_gstreamerMetaDataKeys[i].token;
- correctedValue.convert(qt_gstreamerMetaDataKeys[i].type);
-
- m_values.insert(QByteArray::fromRawData(name, qstrlen(name)), correctedValue);
+ if (correctedValue.isValid()) {
+ correctedValue.convert(qt_gstreamerMetaDataKeys[i].type);
+ m_values.insert(QByteArray::fromRawData(name, qstrlen(name)), correctedValue);
+ } else {
+ m_values.remove(QByteArray::fromRawData(name, qstrlen(name)));
+ }
emit QMetaDataWriterControl::metaDataChanged();
emit metaDataChanged(m_values);