diff options
Diffstat (limited to 'Src/id3v2/id3_header.h')
-rw-r--r-- | Src/id3v2/id3_header.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Src/id3v2/id3_header.h b/Src/id3v2/id3_header.h new file mode 100644 index 00000000..18252c8e --- /dev/null +++ b/Src/id3v2/id3_header.h @@ -0,0 +1,80 @@ +// The authors have released ID3Lib as Public Domain (PD) and claim no copyright, +// patent or other intellectual property protection in this work. This means that +// it may be modified, redistributed and used in commercial and non-commercial +// software and hardware without restrictions. ID3Lib is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. +// +// The ID3Lib authors encourage improvements and optimisations to be sent to the +// ID3Lib coordinator, currently Dirk Mahoney (dirk@id3.org). Approved +// submissions may be altered, and will be included and released under these terms. +// +// Mon Nov 23 18:34:01 1998 + + +#ifndef ID3LIB_HEADER_H +#define ID3LIB_HEADER_H + +#include "id3_types.h" + +#define MIN_ID3_TAGVERSION 2 +#define MAX_ID3_TAGVERSION 4 +#define ID3_TAGVERSION (3) +#define ID3_TAGREVISION (0) + +struct ID3_HeaderInfo +{ + unsigned __int8 version; + unsigned __int8 revision; + unsigned __int8 frameIDBytes; + unsigned __int8 frameSizeBytes; + unsigned __int8 frameFlagsBytes; + bool hasExtHeader; + luint extHeaderBytes; + bool setExpBit; +}; + +struct ID3_Quirks +{ + ID3_Quirks() : id3v2_4_itunes_bug(false) {} + bool id3v2_4_itunes_bug; // itunes doesn't write syncsafe values for 2.4 +}; + +class ID3_Header +{ +public: + ID3_Header (void); + + void SetVersion(uchar ver, uchar rev); + void SetDataSize(luint newSize); + void SetFlags(luint newFlags); + void SetQuirks(ID3_Quirks &_quirks) + { + quirks=_quirks; + } + + ID3_Quirks &GetQuirks() + { + return quirks; + } + + virtual luint Size(void) = 0; + virtual luint Render(unsigned __int8 *buffer) = 0; + + // *** PRIVATE INTERNAL DATA - DO NOT USE *** PRIVATE INTERNAL DATA - DO NOT USE *** + +protected: + unsigned __int8 version; // which version? + unsigned __int8 revision; // which revision? + luint dataSize; // how big is the data? + luint flags; // tag flags + ID3_HeaderInfo *info; // the info about this version of the headers + ID3_Quirks quirks; +}; + + +ID3_HeaderInfo *ID3_LookupHeaderInfo (uchar ver, uchar rev); + + +#endif + + |