1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // 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 ([email protected]). Approved
- // submissions may be altered, and will be included and released under these terms.
- //
- // Mon Nov 23 18:34:01 1998
- #include <string.h>
- #include <memory.h>
- #include "id3_header.h"
- #include "id3_error.h"
- static ID3_HeaderInfo ID3_VersionInfo[4][3] =
- {
- // SIZEOF SIZEOF SIZEOF EXT EXT EXPERIM
- // VER REV FRID FRSZ FRFL HEADER SIZE BIT
- {
- { 2, 0, 3, 3, 0, false, 0, false },
- { 2, 1, 3, 3, 0, true, 8, true },
- {0,},
- },
- {
- { 3, 0, 4, 4, 2, false, 10, false },
- {0,},
- },
- {
- { 4, 0, 4, 4, 2, false, 10, false },
- {0,},
- },
- { 0 }
- };
- ID3_HeaderInfo *ID3_LookupHeaderInfo(uchar ver, uchar rev)
- {
- ID3_HeaderInfo *info = NULL;
- size_t v=0,r=0;
- while (ID3_VersionInfo[v][0].version != 0)
- {
- r=0;
- if (ID3_VersionInfo[v][0].version == ver)
- {
- while (ID3_VersionInfo[v][r].version != 0)
- {
- if (ID3_VersionInfo[v][r].revision == rev)
- {
- goto found;
- }
- else
- r++;
- }
- // later revision. still backwards compat so we'll stick with it.
- r--;
- goto found;
- }
- else
- v++;
- }
- found:
- if (ID3_VersionInfo[v][r].version != 0)
- info = &ID3_VersionInfo[v][r];
- return info;
- }
- ID3_Header::ID3_Header(void)
- {
- SetVersion(ID3_TAGVERSION, ID3_TAGREVISION);
- dataSize = 0;
- flags = 0;
- }
- void ID3_Header::SetVersion(uchar ver, uchar rev)
- {
- version = ver;
- revision = rev;
- info = ID3_LookupHeaderInfo(version, revision);
- }
- void ID3_Header::SetDataSize(luint newSize)
- {
- dataSize = newSize;
- }
- void ID3_Header::SetFlags(luint newFlags)
- {
- flags = newFlags;
- }
|