1 From ed61f1d932c5c6d38458fcd2e1d5d154383f017e Mon Sep 17 00:00:00 2001
2 From: Tasuku Suzuki <tasuku.suzuki@qt.io>
3 Date: Mon, 12 Dec 2016 16:32:47 +0900
4 Subject: [PATCH] metadata image support with the "data" URL scheme for QtQuick
6 add posterImage, coverArtImage and thumbnailImage to metadata
8 Change-Id: I10b9bae10c219ffa41506d6e6b345020790217a6
10 .../multimedia/qdeclarativemediametadata_p.h | 33 ++++++++++++++++++++++
11 1 file changed, 33 insertions(+)
13 diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h
14 index ede7f87..6a6a815 100644
15 --- a/src/imports/multimedia/qdeclarativemediametadata_p.h
16 +++ b/src/imports/multimedia/qdeclarativemediametadata_p.h
21 +#include <QtCore/QBuffer>
22 +#include <QtGui/QImage>
23 +#include <QtGui/QImageWriter>
24 #include <QtQml/qqml.h>
25 #include <QtMultimedia/qmediametadata.h>
26 #include <QtMultimedia/qmediaservice.h>
27 @@ -153,6 +156,9 @@ class QDeclarativeMediaMetaData : public QObject
28 Q_PROPERTY(QVariant gpsProcessingMethod READ gpsProcessingMethod WRITE setGPSProcessingMethod NOTIFY metaDataChanged)
29 Q_PROPERTY(QVariant gpsAreaInformation READ gpsAreaInformation WRITE setGPSAreaInformation NOTIFY metaDataChanged)
31 + Q_PROPERTY(QVariant posterImage READ posterImage NOTIFY metaDataChanged)
32 + Q_PROPERTY(QVariant coverArtImage READ coverArtImage NOTIFY metaDataChanged)
33 + Q_PROPERTY(QVariant thumbnailImage READ thumbnailImage NOTIFY metaDataChanged)
35 QDeclarativeMediaMetaData(QMediaObject *player, QObject *parent = 0)
37 @@ -425,6 +431,16 @@ QT_WARNING_POP
38 void setGPSAreaInformation(const QVariant &information) {
39 setMetaData(QMediaMetaData::GPSAreaInformation, information); }
41 + QVariant posterImage() const {
42 + return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::PosterImage));
44 + QVariant coverArtImage() const {
45 + return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::CoverArtImage));
47 + QVariant thumbnailImage() const {
48 + return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::ThumbnailImage));
52 void metaDataChanged();
54 @@ -440,6 +456,23 @@ private:
55 m_writerControl->setMetaData(key, value);
58 + QUrl convertImageToUrl(const QVariant &variant) const
60 + if (variant.type() != QVariant::Image)
63 + QImage image = variant.value<QImage>();
65 + QBuffer buffer(&data);
66 + buffer.open(QBuffer::WriteOnly);
67 + QImageWriter png(&buffer, "png");
68 + if (!png.write(image)) {
72 + return QUrl(QStringLiteral("data:image/png;base64,") + data.toBase64());
75 QMediaObject *m_mediaObject;
76 QMetaDataWriterControl *m_writerControl;
77 bool m_requestedWriterControl;