tagparser/id3/id3v2frameids.h

100 lines
2.5 KiB
C++

#ifndef TAG_PARSER_ID3V2FRAMEIDS_H
#define TAG_PARSER_ID3V2FRAMEIDS_H
#include <c++utilities/conversion/types.h>
#include <string>
namespace TagParser {
namespace Id3v2FrameIds {
enum KnownValue : uint32 {
lAlbum = 0x54414c42,
lArtist = 0x54504531,
lComment = 0x434f4d4d,
lYear = 0x54594552,
lRecordDate = 0x54445243,
lTitle = 0x54495432,
lGenre = 0x54434f4e,
lTrackPosition = 0x5452434b,
lDiskPosition = 0x54504f53,
lEncoder = 0x54454e43,
lBpm = 0x5442504d,
lCover = 0x41504943,
lWriter = 0x54455854,
lLength = 0x544c454e,
lLanguage = 0x544c414e,
lEncoderSettings = 0x54535345,
lUnsynchronizedLyrics = 0x55534c54,
lSynchronizedLyrics = 0x53594C54,
lGrouping = 0x54504532, // FIXME: rename to lAlbumArtist in v9
lContentGroupDescription = 0x54495431,
lRecordLabel = 0x54505542,
lUniqueFileId = 0x55464944,
lComposer = 0x54434f4d,
lRating = 0x504f504d,
lUserDefinedText = 0x54585858,
sAlbum = 0x54414c,
sArtist = 0x545031,
sComment = 0x434f4d,
sYear = 0x545945,
sRecordDate = 0x545243,
sTitle = 0x545432,
sGenre = 0x54434f,
sTrackPosition = 0x54524b,
sDiskPosition = 0x545041,
sEncoder = 0x54454e,
sBpm = 0x544250,
sCover = 0x504943,
sWriter = 0x545854,
sLength = 0x544c45,
sLanguage = 0x544c41,
sEncoderSettings = 0x545353,
sUnsynchronizedLyrics = 0x554C54,
sSynchronizedLyrics = 0x534C54,
sGrouping = 0x545032, // FIXME: rename to sAlbumArtist in v9
sContentGroupDescription = 0x545431,
sRecordLabel = 0x545042,
sUniqueFileId = 0x554649,
sComposer = 0x54434d,
sRating = 0x504f50,
sUserDefinedText = 0x545858,
};
uint32 convertToShortId(uint32 id);
uint32 convertToLongId(uint32 id);
/*!
* \brief Returns an indication whether the specified \a id is a long frame id.
*/
constexpr bool isLongId(uint32 id)
{
return (id & 0x00ffffff) != id;
}
/*!
* \brief Returns an indication whether the specified \a id is a short frame id.
*/
constexpr bool isShortId(uint32 id)
{
return (id & 0x00ffffff) == id;
}
/*!
* \brief Returns an indication whether the specified \a id is a text frame id.
*/
constexpr bool isTextFrame(uint32 id)
{
if (isShortId(id)) {
return ((id & 0x00FF0000u) == 0x00540000u) && (id != Id3v2FrameIds::sUserDefinedText);
} else {
return (id & 0xFF000000u) == 0x54000000u && (id != Id3v2FrameIds::lUserDefinedText);
}
}
} // namespace Id3v2FrameIds
} // namespace TagParser
#endif // TAG_PARSER_ID3V2FRAMEIDS_H