2018-03-06 23:09:15 +01:00
|
|
|
#ifndef TAG_PARSER_ID3V2FRAMEIDS_H
|
|
|
|
#define TAG_PARSER_ID3V2FRAMEIDS_H
|
2015-04-22 19:22:01 +02:00
|
|
|
|
2020-04-22 19:15:54 +02:00
|
|
|
#include "../global.h"
|
|
|
|
|
2019-03-13 19:06:42 +01:00
|
|
|
#include <cstdint>
|
2015-04-22 19:22:01 +02:00
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
2018-03-06 23:09:15 +01:00
|
|
|
namespace TagParser {
|
2015-04-22 19:22:01 +02:00
|
|
|
|
|
|
|
namespace Id3v2FrameIds {
|
2019-03-13 19:06:42 +01:00
|
|
|
enum KnownValue : std::uint32_t {
|
2020-04-22 21:02:34 +02:00
|
|
|
lAlbum = 0x54414c42, /**< TALB */
|
|
|
|
lArtist = 0x54504531, /**< TPE1 */
|
|
|
|
lComment = 0x434f4d4d, /**< COMM */
|
|
|
|
lYear = 0x54594552, /**< TYER */
|
|
|
|
lOriginalYear = 0x544F5259, /**< TORY */
|
|
|
|
lRecordingDates = 0x54524441, /**< TRDA */
|
|
|
|
lDate = 0x54444154, /**< TDAT */
|
|
|
|
lTime = 0x54494D45, /**< TIME */
|
|
|
|
lRecordingTime = 0x54445243, /**< TDRC */
|
|
|
|
lReleaseTime = 0x5444524C, /**< TDRL */
|
|
|
|
lOriginalReleaseTime = 0x54444F52, /**< TDOR */
|
|
|
|
lTaggingTime = 0x54445447, /**< TDTG */
|
|
|
|
lTitle = 0x54495432, /**< TIT2 */
|
|
|
|
lGenre = 0x54434f4e, /**< TCON */
|
|
|
|
lTrackPosition = 0x5452434b, /**< TRCK */
|
|
|
|
lDiskPosition = 0x54504f53, /**< TPOS */
|
|
|
|
lEncoder = 0x54454e43, /**< TENC */
|
|
|
|
lBpm = 0x5442504d, /**< TBPM */
|
|
|
|
lCover = 0x41504943, /**< APIC */
|
|
|
|
lWriter = 0x54455854, /**< TEXT */
|
|
|
|
lLength = 0x544c454e, /**< TLEN */
|
|
|
|
lLanguage = 0x544c414e, /**< TLAN */
|
|
|
|
lEncoderSettings = 0x54535345, /**< TSSE */
|
|
|
|
lUnsynchronizedLyrics = 0x55534c54, /**< USLT */
|
|
|
|
lSynchronizedLyrics = 0x53594C54, /**< SYLT */
|
|
|
|
lAlbumArtist = 0x54504532, /**< TPE2 */
|
|
|
|
lContentGroupDescription = 0x54495431, /**< TIT1 */
|
|
|
|
lRecordLabel = 0x54505542, /**< TPUB */
|
|
|
|
lUniqueFileId = 0x55464944, /**< UFID */
|
|
|
|
lComposer = 0x54434f4d, /**< TCOM */
|
|
|
|
lRating = 0x504f504d, /**< POPM */
|
|
|
|
lUserDefinedText = 0x54585858, /**< TXXX */
|
2015-04-22 19:22:01 +02:00
|
|
|
|
2020-04-22 21:02:34 +02:00
|
|
|
sAlbum = 0x54414c, /**< ?TAL */
|
|
|
|
sArtist = 0x545031, /**< ?TP1 */
|
|
|
|
sComment = 0x434f4d, /**< ?COM */
|
|
|
|
sYear = 0x545945, /**< ?TYE */
|
|
|
|
sOriginalYear = 0x544F5259, /**< TORY */
|
|
|
|
sRecordingDates = 0x545244, /**< ?TRD */
|
|
|
|
sDate = 0x544441, /**< ?TDA */
|
|
|
|
sTime = 0x54494D, /**< ?TIM */
|
|
|
|
sTitle = 0x545432, /**< ?TT2 */
|
|
|
|
sGenre = 0x54434f, /**< ?TCO */
|
|
|
|
sTrackPosition = 0x54524b, /**< ?TRK */
|
|
|
|
sDiskPosition = 0x545041, /**< ?TPA */
|
|
|
|
sEncoder = 0x54454e, /**< ?TEN */
|
|
|
|
sBpm = 0x544250, /**< ?TBP */
|
|
|
|
sCover = 0x504943, /**< ?PIC */
|
|
|
|
sWriter = 0x545854, /**< ?TXT */
|
|
|
|
sLength = 0x544c45, /**< ?TLE */
|
|
|
|
sLanguage = 0x544c41, /**< ?TLA */
|
|
|
|
sEncoderSettings = 0x545353, /**< ?TSS */
|
|
|
|
sUnsynchronizedLyrics = 0x554C54, /**< ?ULT */
|
|
|
|
sSynchronizedLyrics = 0x534C54, /**< ?SLT */
|
|
|
|
sAlbumArtist = 0x545032, /**< ?TP2 */
|
|
|
|
sContentGroupDescription = 0x545431, /**< ?TT1 */
|
|
|
|
sRecordLabel = 0x545042, /**< ?TPB */
|
|
|
|
sUniqueFileId = 0x554649, /**< ?UFI */
|
|
|
|
sComposer = 0x54434d, /**< ?TCM */
|
|
|
|
sRating = 0x504f50, /**< ?POP */
|
|
|
|
sUserDefinedText = 0x545858, /**< ?TXX */
|
2015-04-22 19:22:01 +02:00
|
|
|
};
|
|
|
|
|
2020-04-22 19:15:54 +02:00
|
|
|
TAG_PARSER_EXPORT std::uint32_t convertToShortId(std::uint32_t id);
|
|
|
|
TAG_PARSER_EXPORT std::uint32_t convertToLongId(std::uint32_t id);
|
2020-04-22 19:48:27 +02:00
|
|
|
TAG_PARSER_EXPORT bool isPreId3v24Id(std::uint32_t id);
|
|
|
|
TAG_PARSER_EXPORT bool isOnlyId3v24Id(std::uint32_t id);
|
2015-04-22 19:22:01 +02:00
|
|
|
|
|
|
|
/*!
|
|
|
|
* \brief Returns an indication whether the specified \a id is a long frame id.
|
|
|
|
*/
|
2019-03-13 19:06:42 +01:00
|
|
|
constexpr bool isLongId(std::uint32_t id)
|
2015-04-22 19:22:01 +02:00
|
|
|
{
|
|
|
|
return (id & 0x00ffffff) != id;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* \brief Returns an indication whether the specified \a id is a short frame id.
|
|
|
|
*/
|
2019-03-13 19:06:42 +01:00
|
|
|
constexpr bool isShortId(std::uint32_t id)
|
2015-04-22 19:22:01 +02:00
|
|
|
{
|
|
|
|
return (id & 0x00ffffff) == id;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*!
|
|
|
|
* \brief Returns an indication whether the specified \a id is a text frame id.
|
|
|
|
*/
|
2019-03-13 19:06:42 +01:00
|
|
|
constexpr bool isTextFrame(std::uint32_t id)
|
2015-04-22 19:22:01 +02:00
|
|
|
{
|
2018-03-07 01:17:50 +01:00
|
|
|
if (isShortId(id)) {
|
2017-05-18 01:02:20 +02:00
|
|
|
return ((id & 0x00FF0000u) == 0x00540000u) && (id != Id3v2FrameIds::sUserDefinedText);
|
2015-04-22 19:22:01 +02:00
|
|
|
} else {
|
2017-05-18 01:02:20 +02:00
|
|
|
return (id & 0xFF000000u) == 0x54000000u && (id != Id3v2FrameIds::lUserDefinedText);
|
2015-04-22 19:22:01 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-07 01:17:50 +01:00
|
|
|
} // namespace Id3v2FrameIds
|
2015-04-22 19:22:01 +02:00
|
|
|
|
2018-03-07 01:17:50 +01:00
|
|
|
} // namespace TagParser
|
2018-03-06 23:09:15 +01:00
|
|
|
#endif // TAG_PARSER_ID3V2FRAMEIDS_H
|