summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/multimediawidgets/camera/camera.cpp10
-rw-r--r--examples/multimediawidgets/camera/metadatadialog.cpp4
-rw-r--r--src/imports/multimedia/qdeclarativemediametadata_p.h3
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmetadata.cpp3
-rw-r--r--src/multimedia/platform/gstreamer/common/qgstreamermetadata.cpp39
-rw-r--r--src/multimedia/platform/windows/player/mfmetadata.cpp2
-rw-r--r--src/multimedia/qmediametadata.cpp4
-rw-r--r--src/multimedia/qmediametadata.h1
-rw-r--r--tests/auto/unit/mockbackend/mockcameraimagecapturecontrol.h2
-rw-r--r--tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp2
10 files changed, 33 insertions, 37 deletions
diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp
index 580d7c390..f9a37216c 100644
--- a/examples/multimediawidgets/camera/camera.cpp
+++ b/examples/multimediawidgets/camera/camera.cpp
@@ -296,19 +296,19 @@ void Camera::updateRecorderState(QMediaEncoder::State state)
ui->recordButton->setEnabled(true);
ui->pauseButton->setEnabled(true);
ui->stopButton->setEnabled(false);
- ui->metaDataButton->setEnabled(false);
+ ui->metaDataButton->setEnabled(true);
break;
case QMediaEncoder::PausedState:
ui->recordButton->setEnabled(true);
ui->pauseButton->setEnabled(false);
ui->stopButton->setEnabled(true);
- ui->metaDataButton->setEnabled(true);
+ ui->metaDataButton->setEnabled(false);
break;
case QMediaEncoder::RecordingState:
ui->recordButton->setEnabled(false);
ui->pauseButton->setEnabled(true);
ui->stopButton->setEnabled(true);
- ui->metaDataButton->setEnabled(true);
+ ui->metaDataButton->setEnabled(false);
break;
}
}
@@ -408,6 +408,10 @@ void Camera::saveMetaData()
QImage thumbnail(val);
data.insert(key, thumbnail);
}
+ else if (i == QMediaMetaData::Date) {
+ QDateTime date = QDateTime::fromString(val);
+ data.insert(key, date);
+ }
else {
data.insert(key, val);
}
diff --git a/examples/multimediawidgets/camera/metadatadialog.cpp b/examples/multimediawidgets/camera/metadatadialog.cpp
index e0df6ba57..28d8db035 100644
--- a/examples/multimediawidgets/camera/metadatadialog.cpp
+++ b/examples/multimediawidgets/camera/metadatadialog.cpp
@@ -83,8 +83,8 @@ MetaDataDialog::MetaDataDialog(QWidget *parent)
m_metaDataFields[key]->setText(tr("Qt Camera Example"));
else if (key == QMediaMetaData::Author)
m_metaDataFields[key]->setText(tr("The Qt Company"));
- else if (key == QMediaMetaData::Year)
- m_metaDataFields[key]->setText("2020");
+ else if (key == QMediaMetaData::Date)
+ m_metaDataFields[key]->setText(QDateTime::currentDateTime().toString());
else if (key == QMediaMetaData::Date)
m_metaDataFields[key]->setText(QDate::currentDate().toString());
metaDataLayout->addRow(label, m_metaDataFields[key]);
diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h
index 3ed7f49de..91b609b4c 100644
--- a/src/imports/multimedia/qdeclarativemediametadata_p.h
+++ b/src/imports/multimedia/qdeclarativemediametadata_p.h
@@ -67,7 +67,6 @@ class QDeclarativeMediaMetaData : public QObject
Q_PROPERTY(QVariant description READ description WRITE setDescription NOTIFY metaDataChanged)
// Q_PROPERTY(QVariant category READ category WRITE setCategory NOTIFY metaDataChanged)
Q_PROPERTY(QVariant genre READ genre WRITE setGenre NOTIFY metaDataChanged)
- Q_PROPERTY(QVariant year READ year WRITE setYear NOTIFY metaDataChanged)
Q_PROPERTY(QVariant date READ date WRITE setDate NOTIFY metaDataChanged)
// Q_PROPERTY(QVariant userRating READ userRating WRITE setUserRating NOTIFY metaDataChanged)
// Q_PROPERTY(QVariant keywords READ keywords WRITE setKeywords NOTIFY metaDataChanged)
@@ -178,8 +177,6 @@ public:
setMetaData(QMediaMetaData::Description, description); }
QVariant genre() const { return metaData.value(QMediaMetaData::Genre); }
void setGenre(const QVariant &genre) { setMetaData(QMediaMetaData::Genre, genre); }
- QVariant year() const { return metaData.value(QMediaMetaData::Year); }
- void setYear(const QVariant &year) { setMetaData(QMediaMetaData::Year, year); }
QVariant date() const { return metaData.value(QMediaMetaData::Date); }
void setDate(const QVariant &date) { setMetaData(QMediaMetaData::Date, date); }
// QVariant userRating() const { return metaData.value(QMediaMetaData::UserRating); }
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmetadata.cpp b/src/multimedia/platform/android/mediaplayer/qandroidmetadata.cpp
index e086ba1b4..5fd3a91f4 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmetadata.cpp
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmetadata.cpp
@@ -156,9 +156,6 @@ QMediaMetaData QAndroidMetaData::extractMetadata(const QUrl &url)
// if (!string.isNull())
// metadata.insert(QMediaMetaData::Writer, string.split('/', Qt::SkipEmptyParts));
- string = retriever.extractMetadata(AndroidMediaMetadataRetriever::Year);
- if (!string.isNull())
- metadata.insert(QMediaMetaData::Year, string.toInt());
}
return metadata;
diff --git a/src/multimedia/platform/gstreamer/common/qgstreamermetadata.cpp b/src/multimedia/platform/gstreamer/common/qgstreamermetadata.cpp
index 427afb092..7988f6b99 100644
--- a/src/multimedia/platform/gstreamer/common/qgstreamermetadata.cpp
+++ b/src/multimedia/platform/gstreamer/common/qgstreamermetadata.cpp
@@ -55,7 +55,8 @@ struct {
{ GST_TAG_COMMENT, QMediaMetaData::Comment },
{ GST_TAG_DESCRIPTION, QMediaMetaData::Description },
{ GST_TAG_GENRE, QMediaMetaData::Genre },
- { "year", QMediaMetaData::Year },
+ { GST_TAG_DATE_TIME, QMediaMetaData::Date },
+ { GST_TAG_DATE, QMediaMetaData::Date },
{ GST_TAG_LANGUAGE_CODE, QMediaMetaData::Language },
@@ -162,28 +163,28 @@ static void addTagToMap(const GstTagList *list,
int year = g_date_get_year(date);
int month = g_date_get_month(date);
int day = g_date_get_day(date);
- map->insert(key, QDate(year,month,day));
- if (!map->contains(QMediaMetaData::Year))
- map->insert(QMediaMetaData::Year, year);
+ // don't insert if we already have a datetime.
+ if (!map->contains(key))
+ map->insert(key, QDateTime(QDate(year, month, day), QTime()));
}
} else if (G_VALUE_TYPE(&val) == GST_TYPE_DATE_TIME) {
const GstDateTime *dateTime = (const GstDateTime *)g_value_get_boxed(&val);
int year = gst_date_time_has_year(dateTime) ? gst_date_time_get_year(dateTime) : 0;
int month = gst_date_time_has_month(dateTime) ? gst_date_time_get_month(dateTime) : 0;
int day = gst_date_time_has_day(dateTime) ? gst_date_time_get_day(dateTime) : 0;
+ int hour = 0;
+ int minute = 0;
+ int second = 0;
+ float tz = 0;
if (gst_date_time_has_time(dateTime)) {
- int hour = gst_date_time_get_hour(dateTime);
- int minute = gst_date_time_get_minute(dateTime);
- int second = gst_date_time_get_second(dateTime);
- float tz = gst_date_time_get_time_zone_offset(dateTime);
- QDateTime dateTime(QDate(year, month, day), QTime(hour, minute, second),
- Qt::OffsetFromUTC, tz * 60 * 60);
- map->insert(key, dateTime);
- } else if (year > 0 && month > 0 && day > 0) {
- map->insert(key, QDate(year,month,day));
+ hour = gst_date_time_get_hour(dateTime);
+ minute = gst_date_time_get_minute(dateTime);
+ second = gst_date_time_get_second(dateTime);
+ tz = gst_date_time_get_time_zone_offset(dateTime);
}
- if (!map->contains(QMediaMetaData::Year) && year > 0)
- map->insert(QMediaMetaData::Year, year);
+ QDateTime qDateTime(QDate(year, month, day), QTime(hour, minute, second),
+ Qt::OffsetFromUTC, tz * 60 * 60);
+ map->insert(key, qDateTime);
} else if (G_VALUE_TYPE(&val) == GST_TYPE_SAMPLE) {
GstSample *sample = (GstSample *)g_value_get_boxed(&val);
GstCaps* caps = gst_sample_get_caps(sample);
@@ -232,7 +233,10 @@ void QGstreamerMetaData::setMetaData(GstElement *element)
for (auto it = data.cbegin(), end = data.cend(); it != end; ++it) {
const char *tagName = keyToTag(it.key());
+ if (!tagName)
+ continue;
const QVariant &tagValue = it.value();
+ qDebug() << tagName << tagValue;
switch (tagValue.typeId()) {
case QMetaType::QString:
@@ -258,11 +262,12 @@ void QGstreamerMetaData::setMetaData(GstElement *element)
nullptr);
break;
case QMetaType::QDateTime: {
- QDateTime date = tagValue.toDateTime().toLocalTime();
+ QDateTime date = tagValue.toDateTime();
+ qDebug() << "XXXXX" << date;
gst_tag_setter_add_tags(GST_TAG_SETTER(element),
GST_TAG_MERGE_REPLACE,
tagName,
- gst_date_time_new_local_time(
+ gst_date_time_new(date.offsetFromUtc() / 60. / 60.,
date.date().year(), date.date().month(), date.date().day(),
date.time().hour(), date.time().minute(), date.time().second()),
nullptr);
diff --git a/src/multimedia/platform/windows/player/mfmetadata.cpp b/src/multimedia/platform/windows/player/mfmetadata.cpp
index a6b16e2d4..d64b3fa2f 100644
--- a/src/multimedia/platform/windows/player/mfmetadata.cpp
+++ b/src/multimedia/platform/windows/player/mfmetadata.cpp
@@ -262,8 +262,6 @@ QMediaMetaData MFMetaData::fromNative(IMFMediaSource* mediaSource)
mediaKey = QMediaMetaData::Comment;
} else if (key == PKEY_Media_ProviderStyle) {
mediaKey = QMediaMetaData::Genre;
- } else if (key == PKEY_Media_Year) {
- mediaKey = QMediaMetaData::Year;
} else if (key == PKEY_Media_DateEncoded) {
mediaKey = QMediaMetaData::Date;
// } else if (key == PKEY_Rating) {
diff --git a/src/multimedia/qmediametadata.cpp b/src/multimedia/qmediametadata.cpp
index 7a2ee634f..466507a4e 100644
--- a/src/multimedia/qmediametadata.cpp
+++ b/src/multimedia/qmediametadata.cpp
@@ -65,7 +65,6 @@ QT_BEGIN_NAMESPACE
\row \li Description \li A description of the media. \li QString
\row \li Category \li The category of the media. \li QStringList
\row \li Genre \li The genre of the media. \li QStringList
- \row \li Year \li The year of release of the media. \li int
\row \li Date \li The date of the media. \li QDate.
\row \li UserRating \li A user rating of the media. \li int [0..100]
\row \li Keywords \li A list of keywords describing the media. \li QStringList
@@ -249,7 +248,6 @@ QString QMediaMetaData::stringValue(QMediaMetaData::Key k) const
case Comment:
case Description:
case Genre:
- case Year:
case Language:
case Publisher:
case Copyright:
@@ -300,8 +298,6 @@ QString QMediaMetaData::metaDataKeyToString(QMediaMetaData::Key k)
return (QObject::tr("Description"));
case QMediaMetaData::Genre:
return (QObject::tr("Genre"));
- case QMediaMetaData::Year:
- return (QObject::tr("Year"));
case QMediaMetaData::Date:
return (QObject::tr("Date"));
case QMediaMetaData::Language:
diff --git a/src/multimedia/qmediametadata.h b/src/multimedia/qmediametadata.h
index 255953b2b..29fecb1b2 100644
--- a/src/multimedia/qmediametadata.h
+++ b/src/multimedia/qmediametadata.h
@@ -59,7 +59,6 @@ public:
Comment,
Description,
Genre,
- Year,
Date,
Language,
diff --git a/tests/auto/unit/mockbackend/mockcameraimagecapturecontrol.h b/tests/auto/unit/mockbackend/mockcameraimagecapturecontrol.h
index cf5544c07..52400c8d8 100644
--- a/tests/auto/unit/mockbackend/mockcameraimagecapturecontrol.h
+++ b/tests/auto/unit/mockbackend/mockcameraimagecapturecontrol.h
@@ -94,7 +94,7 @@ private Q_SLOTS:
QMediaMetaData metaData;
metaData.insert(QMediaMetaData::Author, QString::fromUtf8("Author"));
- metaData.insert(QMediaMetaData::Year, 2021);
+ metaData.insert(QMediaMetaData::Date, QDateTime(QDate(2021, 1, 1), QTime()));
emit imageMetadataAvailable(m_captureRequest, metaData);
}
diff --git a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
index bbf405ad0..1dc3a8171 100644
--- a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
+++ b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp
@@ -357,7 +357,7 @@ void tst_QCamera::testCameraCaptureMetadata()
QMediaMetaData data = metadata[1].value<QMediaMetaData>();
QCOMPARE(data.keys().length(), 2);
QCOMPARE(data[QMediaMetaData::Author].toString(), "Author");
- QCOMPARE(data[QMediaMetaData::Year].toInt(), 2021);
+ QCOMPARE(data[QMediaMetaData::Date].toDateTime().date().year(), 2021);
}