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);
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);
GstIterator *elements = gst_bin_iterate_all_by_interface(GST_BIN(m_camerabin), GST_TYPE_TAG_SETTER);
GstElement *element = 0;
while (gst_iterator_next(elements, (void**)&element) == GST_ITERATOR_OK) {
+ gst_tag_setter_reset_tags(GST_TAG_SETTER(element));
+
QMapIterator<QByteArray, QVariant> it(data);
while (it.hasNext()) {
it.next();