summaryrefslogtreecommitdiffstats
path: root/src/multimedia/qmediametadata.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/qmediametadata.h')
-rw-r--r--src/multimedia/qmediametadata.h351
1 files changed, 80 insertions, 271 deletions
diff --git a/src/multimedia/qmediametadata.h b/src/multimedia/qmediametadata.h
index 8d8744490..0ff03dda2 100644
--- a/src/multimedia/qmediametadata.h
+++ b/src/multimedia/qmediametadata.h
@@ -1,49 +1,17 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QMEDIAMETADATA_H
#define QMEDIAMETADATA_H
+#if 0
+#pragma qt_class(QMediaMetaData)
+#endif
+
#include <QtCore/qpair.h>
-#include <QtCore/qmetatype.h>
+#include <QtCore/qvariant.h>
#include <QtCore/qstring.h>
-
+#include <QtCore/qhash.h>
#include <QtMultimedia/qtmultimediaglobal.h>
QT_BEGIN_NAMESPACE
@@ -51,238 +19,79 @@ QT_BEGIN_NAMESPACE
// Class forward declaration required for QDoc bug
class QString;
-#define Q_DECLARE_METADATA(key) Q_MULTIMEDIA_EXPORT extern const QString key
-
-namespace QMediaMetaData {
-#ifdef Q_QDOC
- // QDoc does not like macros, so try to keep this in sync :)
- QString Title;
- QString SubTitle;
- QString Author;
- QString Comment;
- QString Description;
- QString Category;
- QString Genre;
- QString Year;
- QString Date;
- QString UserRating;
- QString Keywords;
- QString Language;
- QString Publisher;
- QString Copyright;
- QString ParentalRating;
- QString RatingOrganization;
-
- // Media
- QString Size;
- QString MediaType;
- QString Duration;
-
- // Audio
- QString AudioBitRate;
- QString AudioCodec;
- QString AverageLevel;
- QString ChannelCount;
- QString PeakValue;
- QString SampleRate;
-
- // Music
- QString AlbumTitle;
- QString AlbumArtist;
- QString ContributingArtist;
- QString Composer;
- QString Conductor;
- QString Lyrics;
- QString Mood;
- QString TrackNumber;
- QString TrackCount;
-
- QString CoverArtUrlSmall;
- QString CoverArtUrlLarge;
-
- // Image/Video
- QString Resolution;
- QString PixelAspectRatio;
-
- // Video
- QString VideoFrameRate;
- QString VideoBitRate;
- QString VideoCodec;
-
- QString PosterUrl;
-
- // Movie
- QString ChapterNumber;
- QString Director;
- QString LeadPerformer;
- QString Writer;
-
- // Photos
- QString CameraManufacturer;
- QString CameraModel;
- QString Event;
- QString Subject;
- QString Orientation;
- QString ExposureTime;
- QString FNumber;
- QString ExposureProgram;
- QString ISOSpeedRatings;
- QString ExposureBiasValue;
- QString DateTimeOriginal;
- QString DateTimeDigitized;
- QString SubjectDistance;
- QString MeteringMode;
- QString LightSource;
- QString Flash;
- QString FocalLength;
- QString ExposureMode;
- QString WhiteBalance;
- QString DigitalZoomRatio;
- QString FocalLengthIn35mmFilm;
- QString SceneCaptureType;
- QString GainControl;
- QString Contrast;
- QString Saturation;
- QString Sharpness;
- QString DeviceSettingDescription;
-
- // Location
- QString GPSLatitude;
- QString GPSLongitude;
- QString GPSAltitude;
- QString GPSTimeStamp;
- QString GPSSatellites;
- QString GPSStatus;
- QString GPSDOP;
- QString GPSSpeed;
- QString GPSTrack;
- QString GPSTrackRef;
- QString GPSImgDirection;
- QString GPSImgDirectionRef;
- QString GPSMapDatum;
- QString GPSProcessingMethod;
- QString GPSAreaInformation;
-
- QString PosterImage;
- QString CoverArtImage;
- QString ThumbnailImage;
-#else
- // Common
- Q_DECLARE_METADATA(Title);
- Q_DECLARE_METADATA(SubTitle);
- Q_DECLARE_METADATA(Author);
- Q_DECLARE_METADATA(Comment);
- Q_DECLARE_METADATA(Description);
- Q_DECLARE_METADATA(Category);
- Q_DECLARE_METADATA(Genre);
- Q_DECLARE_METADATA(Year);
- Q_DECLARE_METADATA(Date);
- Q_DECLARE_METADATA(UserRating);
- Q_DECLARE_METADATA(Keywords);
- Q_DECLARE_METADATA(Language);
- Q_DECLARE_METADATA(Publisher);
- Q_DECLARE_METADATA(Copyright);
- Q_DECLARE_METADATA(ParentalRating);
- Q_DECLARE_METADATA(RatingOrganization);
-
- // Media
- Q_DECLARE_METADATA(Size);
- Q_DECLARE_METADATA(MediaType);
- Q_DECLARE_METADATA(Duration);
-
- // Audio
- Q_DECLARE_METADATA(AudioBitRate);
- Q_DECLARE_METADATA(AudioCodec);
- Q_DECLARE_METADATA(AverageLevel);
- Q_DECLARE_METADATA(ChannelCount);
- Q_DECLARE_METADATA(PeakValue);
- Q_DECLARE_METADATA(SampleRate);
-
- // Music
- Q_DECLARE_METADATA(AlbumTitle);
- Q_DECLARE_METADATA(AlbumArtist);
- Q_DECLARE_METADATA(ContributingArtist);
- Q_DECLARE_METADATA(Composer);
- Q_DECLARE_METADATA(Conductor);
- Q_DECLARE_METADATA(Lyrics);
- Q_DECLARE_METADATA(Mood);
- Q_DECLARE_METADATA(TrackNumber);
- Q_DECLARE_METADATA(TrackCount);
-
- Q_DECLARE_METADATA(CoverArtUrlSmall);
- Q_DECLARE_METADATA(CoverArtUrlLarge);
-
- // Image/Video
- Q_DECLARE_METADATA(Resolution);
- Q_DECLARE_METADATA(PixelAspectRatio);
-
- // Video
- Q_DECLARE_METADATA(VideoFrameRate);
- Q_DECLARE_METADATA(VideoBitRate);
- Q_DECLARE_METADATA(VideoCodec);
-
- Q_DECLARE_METADATA(PosterUrl);
-
- // Movie
- Q_DECLARE_METADATA(ChapterNumber);
- Q_DECLARE_METADATA(Director);
- Q_DECLARE_METADATA(LeadPerformer);
- Q_DECLARE_METADATA(Writer);
-
- // Photos
- Q_DECLARE_METADATA(CameraManufacturer);
- Q_DECLARE_METADATA(CameraModel);
- Q_DECLARE_METADATA(Event);
- Q_DECLARE_METADATA(Subject);
- Q_DECLARE_METADATA(Orientation);
- Q_DECLARE_METADATA(ExposureTime);
- Q_DECLARE_METADATA(FNumber);
- Q_DECLARE_METADATA(ExposureProgram);
- Q_DECLARE_METADATA(ISOSpeedRatings);
- Q_DECLARE_METADATA(ExposureBiasValue);
- Q_DECLARE_METADATA(DateTimeOriginal);
- Q_DECLARE_METADATA(DateTimeDigitized);
- Q_DECLARE_METADATA(SubjectDistance);
- Q_DECLARE_METADATA(MeteringMode);
- Q_DECLARE_METADATA(LightSource);
- Q_DECLARE_METADATA(Flash);
- Q_DECLARE_METADATA(FocalLength);
- Q_DECLARE_METADATA(ExposureMode);
- Q_DECLARE_METADATA(WhiteBalance);
- Q_DECLARE_METADATA(DigitalZoomRatio);
- Q_DECLARE_METADATA(FocalLengthIn35mmFilm);
- Q_DECLARE_METADATA(SceneCaptureType);
- Q_DECLARE_METADATA(GainControl);
- Q_DECLARE_METADATA(Contrast);
- Q_DECLARE_METADATA(Saturation);
- Q_DECLARE_METADATA(Sharpness);
- Q_DECLARE_METADATA(DeviceSettingDescription);
-
- // Location
- Q_DECLARE_METADATA(GPSLatitude);
- Q_DECLARE_METADATA(GPSLongitude);
- Q_DECLARE_METADATA(GPSAltitude);
- Q_DECLARE_METADATA(GPSTimeStamp);
- Q_DECLARE_METADATA(GPSSatellites);
- Q_DECLARE_METADATA(GPSStatus);
- Q_DECLARE_METADATA(GPSDOP);
- Q_DECLARE_METADATA(GPSSpeed);
- Q_DECLARE_METADATA(GPSTrack);
- Q_DECLARE_METADATA(GPSTrackRef);
- Q_DECLARE_METADATA(GPSImgDirection);
- Q_DECLARE_METADATA(GPSImgDirectionRef);
- Q_DECLARE_METADATA(GPSMapDatum);
- Q_DECLARE_METADATA(GPSProcessingMethod);
- Q_DECLARE_METADATA(GPSAreaInformation);
-
- Q_DECLARE_METADATA(PosterImage);
- Q_DECLARE_METADATA(CoverArtImage);
- Q_DECLARE_METADATA(ThumbnailImage);
-#endif
-}
-
-#undef Q_DECLARE_METADATA
+class Q_MULTIMEDIA_EXPORT QMediaMetaData
+{
+ Q_GADGET
+public:
+ enum Key {
+ Title,
+ Author,
+ Comment,
+ Description,
+ Genre,
+ Date,
+
+ Language,
+ Publisher,
+ Copyright,
+ Url,
+
+ Duration,
+ MediaType,
+ FileFormat,
+
+ AudioBitRate,
+ AudioCodec,
+ VideoBitRate,
+ VideoCodec,
+ VideoFrameRate,
+
+ AlbumTitle,
+ AlbumArtist,
+ ContributingArtist,
+ TrackNumber,
+ Composer,
+ LeadPerformer,
+
+ ThumbnailImage,
+ CoverArtImage,
+
+ Orientation,
+ Resolution,
+
+ HasHdrContent
+ };
+ Q_ENUM(Key)
+
+ static constexpr int NumMetaData = HasHdrContent + 1;
+
+// QMetaType typeForKey(Key k);
+ Q_INVOKABLE QVariant value(Key k) const { return data.value(k); }
+ Q_INVOKABLE void insert(Key k, const QVariant &value) { data.insert(k, value); }
+ Q_INVOKABLE void remove(Key k) { data.remove(k); }
+ Q_INVOKABLE QList<Key> keys() const { return data.keys(); }
+
+ QVariant &operator[](Key k) { return data[k]; }
+ Q_INVOKABLE void clear() { data.clear(); }
+
+ Q_INVOKABLE bool isEmpty() const { return data.isEmpty(); }
+ Q_INVOKABLE QString stringValue(Key k) const;
+
+ Q_INVOKABLE static QString metaDataKeyToString(Key k);
+
+protected:
+ friend bool operator==(const QMediaMetaData &a, const QMediaMetaData &b)
+ { return a.data == b.data; }
+ friend bool operator!=(const QMediaMetaData &a, const QMediaMetaData &b)
+ { return a.data != b.data; }
+
+ static QMetaType keyType(Key key);
+
+ QHash<Key, QVariant> data;
+};
QT_END_NAMESPACE
+Q_DECLARE_METATYPE(QMediaMetaData)
+
#endif // QMEDIAMETADATA_H