aboutsummaryrefslogtreecommitdiff
path: root/Src/id3v2/id3_header.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/id3v2/id3_header.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/id3v2/id3_header.cpp')
-rw-r--r--Src/id3v2/id3_header.cpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/Src/id3v2/id3_header.cpp b/Src/id3v2/id3_header.cpp
new file mode 100644
index 00000000..7da3592e
--- /dev/null
+++ b/Src/id3v2/id3_header.cpp
@@ -0,0 +1,98 @@
+// 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
+
+
+#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;
+}
+
+