1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
// 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_DLLHEADERS_H
#define ID3LIB_DLLHEADERS_H
typedef unsigned char uchar;
typedef short signed int ssint;
typedef short unsigned int suint;
typedef long signed int lsint;
typedef long unsigned int luint;
typedef long double ldoub;
typedef long unsigned int * bitset;
struct ID3_VerInfo
{
char name [ 30 ];
luint version,
revision;
};
enum ID3_TextEnc
{
ID3TE_ASCII = 0,
ID3TE_UNICODE
};
enum ID3_FieldID
{
ID3FN_NOFIELD = 0,
ID3FN_TEXTENC,
ID3FN_TEXT,
ID3FN_URL,
ID3FN_DATA,
ID3FN_DESCRIPTION,
ID3FN_OWNER,
ID3FN_EMAIL,
ID3FN_RATING,
ID3FN_FILENAME,
ID3FN_LANGUAGE,
ID3FN_PICTURETYPE,
ID3FN_IMAGEFORMAT,
ID3FN_MIMETYPE,
ID3FN_COUNTER,
ID3FN_SYMBOL,
ID3FN_VOLUMEADJ,
ID3FN_NUMBITS,
ID3FN_VOLCHGRIGHT,
ID3FN_VOLCHGLEFT,
ID3FN_PEAKVOLRIGHT,
ID3FN_PEAKVOLLEFT,
ID3FN_LASTFIELDID
};
enum ID3_FrameID
{
ID3FID_NOFRAME = 0,
ID3FID_ORIGALBUM,
ID3FID_PUBLISHER,
ID3FID_ENCODEDBY,
ID3FID_ENCODERSETTINGS,
ID3FID_ORIGFILENAME,
ID3FID_LANGUAGE,
ID3FID_PARTINSET,
ID3FID_DATE,
ID3FID_TIME,
ID3FID_RECORDINGDATES,
ID3FID_MEDIATYPE,
ID3FID_FILETYPE,
ID3FID_NETRADIOSTATION,
ID3FID_NETRADIOOWNER,
ID3FID_LYRICIST,
ID3FID_ORIGARTIST,
ID3FID_ORIGLYRICIST,
ID3FID_SUBTITLE,
ID3FID_MIXARTIST,
ID3FID_USERTEXT,
ID3FID_CONTENTGROUP,
ID3FID_TITLE,
ID3FID_LEADARTIST,
ID3FID_BAND,
ID3FID_ALBUM,
ID3FID_YEAR,
ID3FID_CONDUCTOR,
ID3FID_COMPOSER,
ID3FID_COPYRIGHT,
ID3FID_CONTENTTYPE,
ID3FID_TRACKNUM,
ID3FID_COMMENT,
ID3FID_WWWAUDIOFILE,
ID3FID_WWWARTIST,
ID3FID_WWWAUDIOSOURCE,
ID3FID_WWWCOMMERCIALINFO,
ID3FID_WWWCOPYRIGHT,
ID3FID_WWWPUBLISHER,
ID3FID_WWWPAYMENT,
ID3FID_WWWRADIOPAGE,
ID3FID_WWWUSER,
ID3FID_INVOLVEDPEOPLE,
ID3FID_UNSYNCEDLYRICS,
ID3FID_PICTURE,
ID3FID_GENERALOBJECT,
ID3FID_UNIQUEFILEID,
ID3FID_PLAYCOUNTER,
ID3FID_POPULARIMETER,
ID3FID_GROUPINGREG,
ID3FID_CRYPTOREG
};
class ID3_Field;
class ID3_Frame;
class ID3_Tag;
void ID3_GetVersion ( ID3_VerInfo *info );
// tag wrappers
ID3_Tag *ID3Tag_New ( void );
void ID3Tag_Delete ( ID3_Tag *tag );
void ID3Tag_Clear ( ID3_Tag *tag );
bool ID3Tag_HasChanged ( ID3_Tag *tag );
void ID3Tag_SetUnsync ( ID3_Tag *tag, bool unsync );
void ID3Tag_SetExtendedHeader ( ID3_Tag *tag, bool ext );
void ID3Tag_SetCompression ( ID3_Tag *tag, bool comp );
void ID3Tag_SetPadding ( ID3_Tag *tag, bool pad );
void ID3Tag_AddFrame ( ID3_Tag *tag, ID3_Frame *frame );
void ID3Tag_AddFrames ( ID3_Tag *tag, ID3_Frame *frames, luint num );
void ID3Tag_RemoveFrame ( ID3_Tag *tag, ID3_Frame *frame );
void ID3Tag_Parse ( ID3_Tag *tag, uchar header[ ID3_TAGHEADERSIZE ], uchar *buffer );
luint ID3Tag_Link ( ID3_Tag *tag, char *fileName );
void ID3Tag_Update ( ID3_Tag *tag );
void ID3Tag_Strip ( ID3_Tag *tag, bool v1Also );
ID3_Frame *ID3Tag_FindFrameWithID ( ID3_Tag *tag, ID3_FrameID id );
ID3_Frame *ID3Tag_FindFrameWithINT ( ID3_Tag *tag, ID3_FrameID id, ID3_FieldID fld, luint data );
ID3_Frame *ID3Tag_FindFrameWithASCII ( ID3_Tag *tag, ID3_FrameID id, ID3_FieldID fld, char *data );
ID3_Frame *ID3Tag_FindFrameWithUNICODE ( ID3_Tag *tag, ID3_FrameID id, ID3_FieldID fld, wchar_t *data );
ID3_Frame *ID3Tag_GetFrameNum ( ID3_Tag *tag, luint num );
luint ID3Tag_NumFrames ( ID3_Tag *tag );
// frame wrappers
void ID3Frame_Clear ( ID3_Frame *frame );
void ID3Frame_SetID ( ID3_Frame *frame, ID3_FrameID id );
ID3_FrameID ID3Frame_GetID ( ID3_Frame *frame );
ID3_Field *ID3Frame_GetField ( ID3_Frame *frame, ID3_FieldID name );
// field wrappers
void ID3Field_Clear ( ID3_Field *field );
luint ID3Field_Size ( ID3_Field *field );
luint ID3Field_GetNumTextItems ( ID3_Field *field );
void ID3Field_SetINT ( ID3_Field *field, luint data );
luint ID3Field_GetINT ( ID3_Field *field );
void ID3Field_SetUNICODE ( ID3_Field *field, wchar_t *string );
luint ID3Field_GetUNICODE ( ID3_Field *field, wchar_t *buffer, luint maxChars, luint itemNum );
void ID3Field_AddUNICODE ( ID3_Field *field, wchar_t *string );
void ID3Field_SetASCII ( ID3_Field *field, char *string );
luint ID3Field_GetASCII ( ID3_Field *field, char *buffer, luint maxChars, luint itemNum );
void ID3Field_AddASCII ( ID3_Field *field, char *string );
void ID3Field_SetBINARY ( ID3_Field *field, uchar *data, luint size );
void ID3Field_GetBINARY ( ID3_Field *field, uchar *buffer, luint buffLength );
void ID3Field_FromFile ( ID3_Field *field, char *fileName );
void ID3Field_ToFile ( ID3_Field *field, char *fileName );
#endif
|