dtkmultimedia
DTK Multimedia module
载入中...
搜索中...
未找到
dmediametadata.h
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DMEDIAMETADATA_H
6#define DMEDIAMETADATA_H
7
8#include <QHash>
9#include <QVariant>
10#include <QtMultimedia/qtmultimediaglobal.h>
11#include <dtkmultimedia.h>
12
13class QString;
14DMULTIMEDIA_BEGIN_NAMESPACE
15class Q_MULTIMEDIA_EXPORT DMediaMetaData
16{
17 Q_GADGET
18public:
19 enum Key {
20 Title,
21 Author,
22 Comment,
23 Description,
24 Genre,
25 Date,
26
27 Language,
28 Publisher,
29 Copyright,
30 Url,
31
32 Duration,
33 MediaType,
34 FileFormat,
35
36 AudioBitRate,
37 AudioCodec,
38 VideoBitRate,
39 VideoCodec,
40 VideoFrameRate,
41
42 AlbumTitle,
43 AlbumArtist,
44 ContributingArtist,
45 TrackNumber,
46 Composer,
47 LeadPerformer,
48
49 ThumbnailImage,
50 CoverArtImage,
51
52 Orientation,
53 Resolution
54 };
55 Q_ENUM(Key)
56
57 static constexpr int NumMetaData = Resolution + 1;
58
59 Q_INVOKABLE QVariant value(Key k) const
60 {
61 return data.value(k);
62 }
63 Q_INVOKABLE void insert(Key k, const QVariant &value)
64 {
65 data.insert(k, value);
66 }
67 Q_INVOKABLE void remove(Key k)
68 {
69 data.remove(k);
70 }
71 Q_INVOKABLE QList<Key> keys() const
72 {
73 return data.keys();
74 }
75 QVariant &operator[](Key k)
76 {
77 return data[k];
78 }
79 Q_INVOKABLE void clear()
80 {
81 data.clear();
82 }
83 Q_INVOKABLE bool isEmpty() const
84 {
85 return data.isEmpty();
86 }
87 Q_INVOKABLE QString stringValue(Key k) const;
88 Q_INVOKABLE static QString metaDataKeyToString(Key k);
89
90protected:
91 friend bool operator==(const DMediaMetaData &a, const DMediaMetaData &b)
92 {
93 return a.data == b.data;
94 }
95 friend bool operator!=(const DMediaMetaData &a, const DMediaMetaData &b)
96 {
97 return a.data != b.data;
98 }
99
100protected:
101 QHash<Key, QVariant> data;
102};
103
104DMULTIMEDIA_END_NAMESPACE
105
106Q_DECLARE_METATYPE(DMULTIMEDIA_NAMESPACE::DMediaMetaData)
107
108#endif //
Definition dmediametadata.h:16