Tag Parser 12.5.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
id3v2frameids.h
Go to the documentation of this file.
1#ifndef TAG_PARSER_ID3V2FRAMEIDS_H
2#define TAG_PARSER_ID3V2FRAMEIDS_H
3
4#include "../global.h"
5
6#include <cstdint>
7
8#include <string>
9
10namespace TagParser {
11
12namespace Id3v2FrameIds {
13enum KnownValue : std::uint32_t {
14 lAlbum = 0x54414c42,
15 lArtist = 0x54504531,
16 lComment = 0x434f4d4d,
17 lYear = 0x54594552,
18 lOriginalYear = 0x544F5259,
19 lRecordingDates = 0x54524441,
20 lDate = 0x54444154,
21 lTime = 0x54494D45,
22 lRecordingTime = 0x54445243,
23 lReleaseTime = 0x5444524C,
24 lOriginalReleaseTime = 0x54444F52,
25 lOriginalMediaType = 0x544D4544,
26 lTaggingTime = 0x54445447,
27 lGenre = 0x54434f4e,
28 lTrackPosition = 0x5452434b,
29 lDiskPosition = 0x54504f53,
30 lEncoder = 0x54454e43,
31 lBpm = 0x5442504d,
32 lCover = 0x41504943,
33 lWriter = 0x54455854,
34 lLength = 0x544c454e,
35 lLanguage = 0x544c414e,
36 lEncoderSettings = 0x54535345,
37 lUnsynchronizedLyrics = 0x55534c54,
38 lSynchronizedLyrics = 0x53594C54,
39 lAlbumArtist = 0x54504532,
41 lTitle = 0x54495432,
43 lLongDescription = 0x54444553,
44 lRecordLabel = 0x54505542,
45 lUniqueFileId = 0x55464944,
46 lComposer = 0x54434f4d,
47 lPlayCounter = 0x50434E54,
48 lRating = 0x504f504d,
49 lRemixedBy = 0x54504534,
50 lCopyright = 0x54434F50,
51 lEncodingTime = 0x5444454E,
52 lMood = 0x544D4F4F,
53 lISRC = 0x54535243,
54 lKey = 0x544B4559,
55 lUserDefinedText = 0x54585858,
57 lCopyrightInfoWebpage = 0x57434F50,
58 lAudioFileWebpage = 0x574F4146,
59 lAudioSourceWebpage = 0x574F4153,
61 lPaymentWebpage = 0x57504159,
62 lPublisherWebpage = 0x57505542,
63 lPerformerWebpage = 0x574F4152,
64 lUserDefinedURL = 0x57585858,
65
66 sAlbum = 0x54414c,
67 sArtist = 0x545031,
68 sComment = 0x434f4d,
69 sYear = 0x545945,
70 sOriginalYear = 0x544F52,
71 sOriginalMediaType = 0x544D54,
72 sRecordingDates = 0x545244,
73 sDate = 0x544441,
74 sTime = 0x54494D,
75 sGenre = 0x54434f,
76 sTrackPosition = 0x54524b,
77 sDiskPosition = 0x545041,
78 sEncoder = 0x54454e,
79 sBpm = 0x544250,
80 sCover = 0x504943,
81 sWriter = 0x545854,
82 sLength = 0x544c45,
83 sLanguage = 0x544c41,
84 sEncoderSettings = 0x545353,
87 sAlbumArtist = 0x545032,
89 sTitle = 0x545432,
91 sRecordLabel = 0x545042,
92 sUniqueFileId = 0x554649,
93 sComposer = 0x54434d,
94 sPlayCounter = 0x434E54,
95 sRating = 0x504f50,
96 sRemixedBy = 0x545034,
97 sCopyright = 0x544352,
98 sISRC = 0x545243,
99 sKey = 0x544B45,
100 sUserDefinedText = 0x545858,
103 sAudioFileWebpage = 0x574146,
105 sPublisherWebpage = 0x575042,
106 sPerformerWebpage = 0x574152,
107 sUserDefinedURL = 0x575858,
108};
109
110TAG_PARSER_EXPORT std::uint32_t convertToShortId(std::uint32_t id);
111TAG_PARSER_EXPORT std::uint32_t convertToLongId(std::uint32_t id);
112TAG_PARSER_EXPORT bool isPreId3v24Id(std::uint32_t id);
113TAG_PARSER_EXPORT bool isOnlyId3v24Id(std::uint32_t id);
114
118constexpr bool isLongId(std::uint32_t id)
119{
120 return (id & 0x00ffffff) != id;
121}
122
126constexpr bool isShortId(std::uint32_t id)
127{
128 return (id & 0x00ffffff) == id;
129}
130
134constexpr bool isTextFrame(std::uint32_t id)
135{
136 if (isShortId(id)) {
137 return ((id & 0x00FF0000u) == 0x00540000u) && (id != Id3v2FrameIds::sUserDefinedText);
138 } else {
139 return (id & 0xFF000000u) == 0x54000000u && (id != Id3v2FrameIds::lUserDefinedText);
140 }
141}
142
146constexpr bool isUrlFrame(std::uint32_t id)
147{
148 if (isShortId(id)) {
149 return ((id & 0x00FF0000u) == 0x00570000u) && (id != Id3v2FrameIds::sUserDefinedURL);
150 } else {
151 return (id & 0xFF000000u) == 0x57000000u && (id != Id3v2FrameIds::lUserDefinedURL);
152 }
153}
154
155} // namespace Id3v2FrameIds
156
157} // namespace TagParser
158#endif // TAG_PARSER_ID3V2FRAMEIDS_H
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
Definition global.h:14
Encapsulates the most common ID3v2 frame IDs and related functions.
TAG_PARSER_EXPORT bool isPreId3v24Id(std::uint32_t id)
TAG_PARSER_EXPORT std::uint32_t convertToShortId(std::uint32_t id)
Converts the specified long frame ID to the equivalent short frame ID.
constexpr bool isLongId(std::uint32_t id)
Returns an indication whether the specified id is a long frame id.
constexpr bool isTextFrame(std::uint32_t id)
Returns an indication whether the specified id is a text frame id.
constexpr bool isUrlFrame(std::uint32_t id)
Returns an indication whether the specified id is a URL frame id.
constexpr bool isShortId(std::uint32_t id)
Returns an indication whether the specified id is a short frame id.
TAG_PARSER_EXPORT bool isOnlyId3v24Id(std::uint32_t id)
TAG_PARSER_EXPORT std::uint32_t convertToLongId(std::uint32_t id)
Converts the specified short frame ID to the equivalent long frame ID.
Contains all classes and functions of the TagInfo library.
Definition aaccodebook.h:10