id3lib
3.8.3
Main Page
Namespaces
Classes
Files
File List
File Members
include
id3
globals.h
Go to the documentation of this file.
1
// -*- C++ -*-
2
/* $Id: globals.h,v 1.54 2003/02/21 03:47:41 slackorama Exp $
3
4
* id3lib: a C++ library for creating and manipulating id3v1/v2 tags
5
* Copyright 1999, 2000 Scott Thomas Haug
6
* Copyright 2002 Thijmen Klok (thijmen@id3lib.org)
7
8
* This library is free software; you can redistribute it and/or modify it
9
* under the terms of the GNU Library General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or (at your
11
* option) any later version.
12
*
13
* This library is distributed in the hope that it will be useful, but WITHOUT
14
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
16
* License for more details.
17
*
18
* You should have received a copy of the GNU Library General Public License
19
* along with this library; if not, write to the Free Software Foundation,
20
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
22
* The id3lib authors encourage improvements and optimisations to be sent to
23
* the id3lib coordinator. Please see the README file for details on where to
24
* send such submissions. See the AUTHORS file for a list of people who have
25
* contributed to id3lib. See the ChangeLog file for a list of changes to
26
* id3lib. These files are distributed with id3lib at
27
* http://download.sourceforge.net/id3lib/
28
*/
29
34
#ifndef _ID3LIB_GLOBALS_H_
35
#define _ID3LIB_GLOBALS_H_
36
37
#include <stdlib.h>
38
#include "
id3/sized_types.h
"
39
40
/* id3lib version.
41
* we prefix variable declarations so they can
42
* properly get exported in windows dlls.
43
*/
44
#ifdef WIN32
45
# define LINKOPTION_STATIC 1 //both for use and creation of static lib
46
# define LINKOPTION_CREATE_DYNAMIC 2 //should only be used by prj/id3lib.dsp
47
# define LINKOPTION_USE_DYNAMIC 3 //if your project links id3lib dynamic
48
# ifndef ID3LIB_LINKOPTION
49
# pragma message("*** NOTICE *** (not a real error)")
50
# pragma message("* You should include a define in your project which reflect how you link the library")
51
# pragma message("* If you use id3lib.lib or libprj/id3lib.dsp (you link static) you should add")
52
# pragma message("* ID3LIB_LINKOPTION=1 to your preprocessor definitions of your project.")
53
# pragma message("* If you use id3lib.dll (you link dynamic) you should add ID3LIB_LINKOPTION=3")
54
# pragma message("* to your preprocessor definitions of your project.")
55
# pragma message("***")
56
# error read message above or win32.readme.first.txt
57
# else
58
# if (ID3LIB_LINKOPTION == LINKOPTION_CREATE_DYNAMIC)
59
//used for creating a dynamic dll
60
# define ID3_C_EXPORT extern _declspec(dllexport)
61
# define ID3_CPP_EXPORT __declspec(dllexport)
62
# define CCONV __stdcall // Added for VB & Delphi Compatibility - By FrogPrince Advised By Lothar
63
# endif
64
# if (ID3LIB_LINKOPTION == LINKOPTION_STATIC)
65
//used for creating a static lib and using a static lib
66
# define ID3_C_EXPORT
67
# define ID3_CPP_EXPORT
68
# define CCONV
69
# endif
70
# if (ID3LIB_LINKOPTION == LINKOPTION_USE_DYNAMIC)
71
//used for those that do not link static and are using the dynamic dll by including a id3lib header
72
# define ID3_C_EXPORT extern _declspec(dllimport)
73
# define ID3_CPP_EXPORT __declspec(dllimport) //functions like these shouldn't be used by vb and delphi,
74
# define CCONV __stdcall // Added for VB & Delphi Compatibility - By FrogPrince Advised By Lothar
75
# endif
76
# endif
77
#else
/* !WIN32 */
78
# define ID3_C_EXPORT
79
# define ID3_CPP_EXPORT
80
# define CCONV
81
#endif
/* !WIN32 */
82
83
#define ID3_C_VAR extern
84
85
#ifndef __cplusplus
86
87
typedef
int
bool;
88
# define false (0)
89
# define true (!false)
90
91
#endif
/* __cplusplus */
92
93
ID3_C_VAR
const
char
*
const
ID3LIB_NAME
;
94
ID3_C_VAR
const
char
*
const
ID3LIB_RELEASE
;
95
ID3_C_VAR
const
char
*
const
ID3LIB_FULL_NAME
;
96
ID3_C_VAR
const
int
ID3LIB_MAJOR_VERSION
;
97
ID3_C_VAR
const
int
ID3LIB_MINOR_VERSION
;
98
ID3_C_VAR
const
int
ID3LIB_PATCH_VERSION
;
99
ID3_C_VAR
const
int
ID3LIB_INTERFACE_AGE
;
100
ID3_C_VAR
const
int
ID3LIB_BINARY_AGE
;
101
102
#define ID3_TAGID "ID3"
103
#define ID3_TAGIDSIZE (3)
104
#define ID3_TAGHEADERSIZE (10)
105
111
#define STR_V1_COMMENT_DESC "ID3v1 Comment"
112
113
114
typedef
unsigned
char
uchar
;
115
typedef
long
unsigned
int
luint
;
116
117
typedef
uint16
unicode_t
;
118
typedef
uint16
flags_t
;
119
120
#define NULL_UNICODE ((unicode_t) '\0')
121
122
/* These macros are used to make the C and C++ declarations for enums and
123
* structs have the same syntax. Basically, it allows C users to refer to an
124
* enum or a struct without prepending enum/struct.
125
*/
126
#ifdef __cplusplus
127
# define ID3_ENUM(E) enum E
128
# define ID3_STRUCT(S) struct S
129
#else
130
# define ID3_ENUM(E) typedef enum _ ## E E; enum _ ## E
131
# define ID3_STRUCT(S) typedef struct _ ## S S; struct _ ## S
132
#endif
133
137
ID3_ENUM
(
ID3_TextEnc
)
138
{
139
ID3TE_NONE
= -1,
140
ID3TE_ISO8859_1
,
141
ID3TE_UTF16
,
142
ID3TE_UTF16BE
,
143
ID3TE_UTF8
,
144
ID3TE_NUMENCODINGS
,
145
ID3TE_ASCII
=
ID3TE_ISO8859_1
,
// do not use this -> use ID3TE_IS_SINGLE_BYTE_ENC(enc) instead
146
ID3TE_UNICODE
=
ID3TE_UTF16
// do not use this -> use ID3TE_IS_DOUBLE_BYTE_ENC(enc) instead
147
};
148
149
#define ID3TE_IS_SINGLE_BYTE_ENC(enc) ((enc) == ID3TE_ISO8859_1 || (enc) == ID3TE_UTF8)
150
#define ID3TE_IS_DOUBLE_BYTE_ENC(enc) ((enc) == ID3TE_UTF16 || (enc) == ID3TE_UTF16BE)
151
154
ID3_ENUM
(
ID3_V1Spec
)
155
{
156
ID3V1_0
= 0,
157
ID3V1_1
,
158
ID3V1_NUMSPECS
159
};
160
161
ID3_ENUM
(
ID3_V2Spec
)
162
{
163
ID3V2_UNKNOWN
= -1,
164
ID3V2_2_0
= 0,
165
ID3V2_2_1
,
166
ID3V2_3_0
,
167
ID3V2_4_0
,
168
ID3V2_EARLIEST
=
ID3V2_2_0
,
169
ID3V2_LATEST
=
ID3V2_3_0
170
};
171
174
ID3_ENUM
(
ID3_TagType
)
175
{
176
ID3TT_NONE
= 0,
177
ID3TT_ID3V1
= 1 << 0,
178
ID3TT_ID3V2
= 1 << 1,
179
ID3TT_LYRICS3
= 1 << 2,
180
ID3TT_LYRICS3V2
= 1 << 3,
181
ID3TT_MUSICMATCH
= 1 << 4,
183
ID3TT_LYRICS
=
ID3TT_LYRICS3
,
185
ID3TT_ID3
=
ID3TT_ID3V1
|
ID3TT_ID3V2
,
187
ID3TT_ALL
= ~
ID3TT_NONE
,
189
ID3TT_PREPENDED
=
ID3TT_ID3V2
,
191
ID3TT_APPENDED
=
ID3TT_ALL
& ~
ID3TT_ID3V2
192
};
193
197
ID3_ENUM
(
ID3_FieldID
)
198
{
199
ID3FN_NOFIELD
= 0,
200
ID3FN_TEXTENC
,
201
ID3FN_TEXT
,
202
ID3FN_URL
,
203
ID3FN_DATA
,
204
ID3FN_DESCRIPTION
,
205
ID3FN_OWNER
,
206
ID3FN_EMAIL
,
207
ID3FN_RATING
,
208
ID3FN_FILENAME
,
209
ID3FN_LANGUAGE
,
210
ID3FN_PICTURETYPE
,
211
ID3FN_IMAGEFORMAT
,
212
ID3FN_MIMETYPE
,
213
ID3FN_COUNTER
,
214
ID3FN_ID
,
215
ID3FN_VOLUMEADJ
,
216
ID3FN_NUMBITS
,
217
ID3FN_VOLCHGRIGHT
,
218
ID3FN_VOLCHGLEFT
,
219
ID3FN_PEAKVOLRIGHT
,
220
ID3FN_PEAKVOLLEFT
,
221
ID3FN_TIMESTAMPFORMAT
,
222
ID3FN_CONTENTTYPE
,
223
ID3FN_LASTFIELDID
224
};
225
229
ID3_ENUM
(
ID3_FrameID
)
230
{
231
/* ???? */
ID3FID_NOFRAME
= 0,
232
/* AENC */
ID3FID_AUDIOCRYPTO
,
233
/* APIC */
ID3FID_PICTURE
,
234
/* ASPI */
ID3FID_AUDIOSEEKPOINT
,
235
/* COMM */
ID3FID_COMMENT
,
236
/* COMR */
ID3FID_COMMERCIAL
,
237
/* ENCR */
ID3FID_CRYPTOREG
,
238
/* EQU2 */
ID3FID_EQUALIZATION2
,
239
/* EQUA */
ID3FID_EQUALIZATION
,
240
/* ETCO */
ID3FID_EVENTTIMING
,
241
/* GEOB */
ID3FID_GENERALOBJECT
,
242
/* GRID */
ID3FID_GROUPINGREG
,
243
/* IPLS */
ID3FID_INVOLVEDPEOPLE
,
244
/* LINK */
ID3FID_LINKEDINFO
,
245
/* MCDI */
ID3FID_CDID
,
246
/* MLLT */
ID3FID_MPEGLOOKUP
,
247
/* OWNE */
ID3FID_OWNERSHIP
,
248
/* PRIV */
ID3FID_PRIVATE
,
249
/* PCNT */
ID3FID_PLAYCOUNTER
,
250
/* POPM */
ID3FID_POPULARIMETER
,
251
/* POSS */
ID3FID_POSITIONSYNC
,
252
/* RBUF */
ID3FID_BUFFERSIZE
,
253
/* RVA2 */
ID3FID_VOLUMEADJ2
,
254
/* RVAD */
ID3FID_VOLUMEADJ
,
255
/* RVRB */
ID3FID_REVERB
,
256
/* SEEK */
ID3FID_SEEKFRAME
,
257
/* SIGN */
ID3FID_SIGNATURE
,
258
/* SYLT */
ID3FID_SYNCEDLYRICS
,
259
/* SYTC */
ID3FID_SYNCEDTEMPO
,
260
/* TALB */
ID3FID_ALBUM
,
261
/* TBPM */
ID3FID_BPM
,
262
/* TCOM */
ID3FID_COMPOSER
,
263
/* TCON */
ID3FID_CONTENTTYPE
,
264
/* TCOP */
ID3FID_COPYRIGHT
,
265
/* TDAT */
ID3FID_DATE
,
266
/* TDEN */
ID3FID_ENCODINGTIME
,
267
/* TDLY */
ID3FID_PLAYLISTDELAY
,
268
/* TDOR */
ID3FID_ORIGRELEASETIME
,
269
/* TDRC */
ID3FID_RECORDINGTIME
,
270
/* TDRL */
ID3FID_RELEASETIME
,
271
/* TDTG */
ID3FID_TAGGINGTIME
,
272
/* TIPL */
ID3FID_INVOLVEDPEOPLE2
,
273
/* TENC */
ID3FID_ENCODEDBY
,
274
/* TEXT */
ID3FID_LYRICIST
,
275
/* TFLT */
ID3FID_FILETYPE
,
276
/* TIME */
ID3FID_TIME
,
277
/* TIT1 */
ID3FID_CONTENTGROUP
,
278
/* TIT2 */
ID3FID_TITLE
,
279
/* TIT3 */
ID3FID_SUBTITLE
,
280
/* TKEY */
ID3FID_INITIALKEY
,
281
/* TLAN */
ID3FID_LANGUAGE
,
282
/* TLEN */
ID3FID_SONGLEN
,
283
/* TMCL */
ID3FID_MUSICIANCREDITLIST
,
284
/* TMED */
ID3FID_MEDIATYPE
,
285
/* TMOO */
ID3FID_MOOD
,
286
/* TOAL */
ID3FID_ORIGALBUM
,
287
/* TOFN */
ID3FID_ORIGFILENAME
,
288
/* TOLY */
ID3FID_ORIGLYRICIST
,
289
/* TOPE */
ID3FID_ORIGARTIST
,
290
/* TORY */
ID3FID_ORIGYEAR
,
291
/* TOWN */
ID3FID_FILEOWNER
,
292
/* TPE1 */
ID3FID_LEADARTIST
,
293
/* TPE2 */
ID3FID_BAND
,
294
/* TPE3 */
ID3FID_CONDUCTOR
,
295
/* TPE4 */
ID3FID_MIXARTIST
,
296
/* TPOS */
ID3FID_PARTINSET
,
297
/* TPRO */
ID3FID_PRODUCEDNOTICE
,
298
/* TPUB */
ID3FID_PUBLISHER
,
299
/* TRCK */
ID3FID_TRACKNUM
,
300
/* TRDA */
ID3FID_RECORDINGDATES
,
301
/* TRSN */
ID3FID_NETRADIOSTATION
,
302
/* TRSO */
ID3FID_NETRADIOOWNER
,
303
/* TSIZ */
ID3FID_SIZE
,
304
/* TSOA */
ID3FID_ALBUMSORTORDER
,
305
/* TSOP */
ID3FID_PERFORMERSORTORDER
,
306
/* TSOT */
ID3FID_TITLESORTORDER
,
307
/* TSRC */
ID3FID_ISRC
,
308
/* TSSE */
ID3FID_ENCODERSETTINGS
,
309
/* TSST */
ID3FID_SETSUBTITLE
,
310
/* TXXX */
ID3FID_USERTEXT
,
311
/* TYER */
ID3FID_YEAR
,
312
/* UFID */
ID3FID_UNIQUEFILEID
,
313
/* USER */
ID3FID_TERMSOFUSE
,
314
/* USLT */
ID3FID_UNSYNCEDLYRICS
,
315
/* WCOM */
ID3FID_WWWCOMMERCIALINFO
,
316
/* WCOP */
ID3FID_WWWCOPYRIGHT
,
317
/* WOAF */
ID3FID_WWWAUDIOFILE
,
318
/* WOAR */
ID3FID_WWWARTIST
,
319
/* WOAS */
ID3FID_WWWAUDIOSOURCE
,
320
/* WORS */
ID3FID_WWWRADIOPAGE
,
321
/* WPAY */
ID3FID_WWWPAYMENT
,
322
/* WPUB */
ID3FID_WWWPUBLISHER
,
323
/* WXXX */
ID3FID_WWWUSER
,
324
/* */
ID3FID_METACRYPTO
,
325
/* */
ID3FID_METACOMPRESSION
,
326
/* >>>> */
ID3FID_LASTFRAMEID
327
};
328
329
ID3_ENUM
(
ID3_V1Lengths
)
330
{
331
ID3_V1_LEN
= 128,
332
ID3_V1_LEN_ID
= 3,
333
ID3_V1_LEN_TITLE
= 30,
334
ID3_V1_LEN_ARTIST
= 30,
335
ID3_V1_LEN_ALBUM
= 30,
336
ID3_V1_LEN_YEAR
= 4,
337
ID3_V1_LEN_COMMENT
= 30,
338
ID3_V1_LEN_GENRE
= 1
339
};
340
341
ID3_ENUM
(
ID3_FieldFlags
)
342
{
343
ID3FF_NONE
= 0,
344
ID3FF_CSTR
= 1 << 0,
345
ID3FF_LIST
= 1 << 1,
346
ID3FF_ENCODABLE
= 1 << 2,
347
ID3FF_TEXTLIST
=
ID3FF_CSTR
|
ID3FF_LIST
|
ID3FF_ENCODABLE
348
};
349
351
ID3_ENUM
(
ID3_FieldType
)
352
{
353
ID3FTY_NONE
= -1,
354
ID3FTY_INTEGER
= 0,
355
ID3FTY_BINARY
,
356
ID3FTY_TEXTSTRING
,
357
ID3FTY_NUMTYPES
358
};
359
363
ID3_ENUM
(
ID3_Err
)
364
{
365
ID3E_NoError
= 0,
366
ID3E_NoMemory
,
367
ID3E_NoData
,
368
ID3E_BadData
,
369
ID3E_NoBuffer
,
370
ID3E_SmallBuffer
,
371
ID3E_InvalidFrameID
,
372
ID3E_FieldNotFound
,
373
ID3E_UnknownFieldType
,
374
ID3E_TagAlreadyAttached
,
375
ID3E_InvalidTagVersion
,
376
ID3E_NoFile
,
377
ID3E_ReadOnly
,
378
ID3E_zlibError
379
};
380
381
ID3_ENUM
(
ID3_ContentType
)
382
{
383
ID3CT_OTHER
= 0,
384
ID3CT_LYRICS
,
385
ID3CT_TEXTTRANSCRIPTION
,
386
ID3CT_MOVEMENT
,
387
ID3CT_EVENTS
,
388
ID3CT_CHORD
,
389
ID3CT_TRIVIA
390
};
391
392
ID3_ENUM
(
ID3_PictureType
)
393
{
394
ID3PT_OTHER
= 0,
395
ID3PT_PNG32ICON
= 1,
// 32x32 pixels 'file icon' (PNG only)
396
ID3PT_OTHERICON
= 2,
// Other file icon
397
ID3PT_COVERFRONT
= 3,
// Cover (front)
398
ID3PT_COVERBACK
= 4,
// Cover (back)
399
ID3PT_LEAFLETPAGE
= 5,
// Leaflet page
400
ID3PT_MEDIA
= 6,
// Media (e.g. lable side of CD)
401
ID3PT_LEADARTIST
= 7,
// Lead artist/lead performer/soloist
402
ID3PT_ARTIST
= 8,
// Artist/performer
403
ID3PT_CONDUCTOR
= 9,
// Conductor
404
ID3PT_BAND
= 10,
// Band/Orchestra
405
ID3PT_COMPOSER
= 11,
// Composer
406
ID3PT_LYRICIST
= 12,
// Lyricist/text writer
407
ID3PT_REC_LOCATION
= 13,
// Recording Location
408
ID3PT_RECORDING
= 14,
// During recording
409
ID3PT_PERFORMANCE
= 15,
// During performance
410
ID3PT_VIDEO
= 16,
// Movie/video screen capture
411
ID3PT_FISH
= 17,
// A bright coloured fish
412
ID3PT_ILLUSTRATION
= 18,
// Illustration
413
ID3PT_ARTISTLOGO
= 19,
// Band/artist logotype
414
ID3PT_PUBLISHERLOGO
= 20
// Publisher/Studio logotype
415
};
416
417
ID3_ENUM
(
ID3_TimeStampFormat
)
418
{
419
ID3TSF_FRAME
= 1,
420
ID3TSF_MS
421
};
422
423
ID3_ENUM
(
MP3_BitRates
)
424
{
425
MP3BITRATE_FALSE
= -1,
426
MP3BITRATE_NONE
= 0,
427
MP3BITRATE_8K
= 8000,
428
MP3BITRATE_16K
= 16000,
429
MP3BITRATE_24K
= 24000,
430
MP3BITRATE_32K
= 32000,
431
MP3BITRATE_40K
= 40000,
432
MP3BITRATE_48K
= 48000,
433
MP3BITRATE_56K
= 56000,
434
MP3BITRATE_64K
= 64000,
435
MP3BITRATE_80K
= 80000,
436
MP3BITRATE_96K
= 96000,
437
MP3BITRATE_112K
= 112000,
438
MP3BITRATE_128K
= 128000,
439
MP3BITRATE_144K
= 144000,
440
MP3BITRATE_160K
= 160000,
441
MP3BITRATE_176K
= 176000,
442
MP3BITRATE_192K
= 192000,
443
MP3BITRATE_224K
= 224000,
444
MP3BITRATE_256K
= 256000,
445
MP3BITRATE_288K
= 288000,
446
MP3BITRATE_320K
= 320000,
447
MP3BITRATE_352K
= 352000,
448
MP3BITRATE_384K
= 384000,
449
MP3BITRATE_416K
= 416000,
450
MP3BITRATE_448K
= 448000
451
};
452
453
ID3_ENUM
(
Mpeg_Layers
)
454
{
455
MPEGLAYER_FALSE
= -1,
456
MPEGLAYER_UNDEFINED
,
457
MPEGLAYER_III
,
458
MPEGLAYER_II
,
459
MPEGLAYER_I
460
};
461
462
ID3_ENUM
(
Mpeg_Version
)
463
{
464
MPEGVERSION_FALSE
= -1,
465
MPEGVERSION_2_5
,
466
MPEGVERSION_Reserved
,
467
MPEGVERSION_2
,
468
MPEGVERSION_1
469
};
470
471
ID3_ENUM
(
Mp3_Frequencies
)
472
{
473
MP3FREQUENCIES_FALSE
= -1,
474
MP3FREQUENCIES_Reserved
= 0,
475
MP3FREQUENCIES_8000HZ
= 8000,
476
MP3FREQUENCIES_11025HZ
= 11025,
477
MP3FREQUENCIES_12000HZ
= 12000,
478
MP3FREQUENCIES_16000HZ
= 16000,
479
MP3FREQUENCIES_22050HZ
= 22050,
480
MP3FREQUENCIES_24000HZ
= 24000,
481
MP3FREQUENCIES_32000HZ
= 32000,
482
MP3FREQUENCIES_48000HZ
= 48000,
483
MP3FREQUENCIES_44100HZ
= 44100,
484
};
485
486
ID3_ENUM
(
Mp3_ChannelMode
)
487
{
488
MP3CHANNELMODE_FALSE
= -1,
489
MP3CHANNELMODE_STEREO
,
490
MP3CHANNELMODE_JOINT_STEREO
,
491
MP3CHANNELMODE_DUAL_CHANNEL
,
492
MP3CHANNELMODE_SINGLE_CHANNEL
493
};
494
495
ID3_ENUM
(
Mp3_ModeExt
)
496
{
497
MP3MODEEXT_FALSE
= -1,
498
MP3MODEEXT_0
,
499
MP3MODEEXT_1
,
500
MP3MODEEXT_2
,
501
MP3MODEEXT_3
502
};
503
504
ID3_ENUM
(
Mp3_Emphasis
)
505
{
506
MP3EMPHASIS_FALSE
= -1,
507
MP3EMPHASIS_NONE
,
508
MP3EMPHASIS_50_15MS
,
509
MP3EMPHASIS_Reserved
,
510
MP3EMPHASIS_CCIT_J17
511
};
512
513
ID3_ENUM
(
Mp3_Crc
)
514
{
515
MP3CRC_ERROR_SIZE
= -2,
516
MP3CRC_MISMATCH
= -1,
517
MP3CRC_NONE
= 0,
518
MP3CRC_OK
= 1
519
};
520
521
ID3_STRUCT
(
Mp3_Headerinfo
)
522
{
523
Mpeg_Layers
layer
;
524
Mpeg_Version
version
;
525
MP3_BitRates
bitrate
;
526
Mp3_ChannelMode
channelmode
;
527
Mp3_ModeExt
modeext
;
528
Mp3_Emphasis
emphasis
;
529
Mp3_Crc
crc
;
530
uint32
vbr_bitrate
;
// avg bitrate from xing header
531
uint32
frequency
;
// samplerate
532
uint32
framesize
;
533
uint32
frames
;
// nr of frames
534
uint32
time
;
// nr of seconds in song
535
bool
privatebit
;
536
bool
copyrighted
;
537
bool
original
;
538
};
539
540
#define ID3_NR_OF_V1_GENRES 148
541
542
static
const
char
*ID3_v1_genre_description[
ID3_NR_OF_V1_GENRES
] =
543
{
544
"Blues"
,
//0
545
"Classic Rock"
,
//1
546
"Country"
,
//2
547
"Dance"
,
//3
548
"Disco"
,
//4
549
"Funk"
,
//5
550
"Grunge"
,
//6
551
"Hip-Hop"
,
//7
552
"Jazz"
,
//8
553
"Metal"
,
//9
554
"New Age"
,
//10
555
"Oldies"
,
//11
556
"Other"
,
//12
557
"Pop"
,
//13
558
"R&B"
,
//14
559
"Rap"
,
//15
560
"Reggae"
,
//16
561
"Rock"
,
//17
562
"Techno"
,
//18
563
"Industrial"
,
//19
564
"Alternative"
,
//20
565
"Ska"
,
//21
566
"Death Metal"
,
//22
567
"Pranks"
,
//23
568
"Soundtrack"
,
//24
569
"Euro-Techno"
,
//25
570
"Ambient"
,
//26
571
"Trip-Hop"
,
//27
572
"Vocal"
,
//28
573
"Jazz+Funk"
,
//29
574
"Fusion"
,
//30
575
"Trance"
,
//31
576
"Classical"
,
//32
577
"Instrumental"
,
//33
578
"Acid"
,
//34
579
"House"
,
//35
580
"Game"
,
//36
581
"Sound Clip"
,
//37
582
"Gospel"
,
//38
583
"Noise"
,
//39
584
"AlternRock"
,
//40
585
"Bass"
,
//41
586
"Soul"
,
//42
587
"Punk"
,
//43
588
"Space"
,
//44
589
"Meditative"
,
//45
590
"Instrumental Pop"
,
//46
591
"Instrumental Rock"
,
//47
592
"Ethnic"
,
//48
593
"Gothic"
,
//49
594
"Darkwave"
,
//50
595
"Techno-Industrial"
,
//51
596
"Electronic"
,
//52
597
"Pop-Folk"
,
//53
598
"Eurodance"
,
//54
599
"Dream"
,
//55
600
"Southern Rock"
,
//56
601
"Comedy"
,
//57
602
"Cult"
,
//58
603
"Gangsta"
,
//59
604
"Top 40"
,
//60
605
"Christian Rap"
,
//61
606
"Pop/Funk"
,
//62
607
"Jungle"
,
//63
608
"Native American"
,
//64
609
"Cabaret"
,
//65
610
"New Wave"
,
//66
611
"Psychadelic"
,
//67
612
"Rave"
,
//68
613
"Showtunes"
,
//69
614
"Trailer"
,
//70
615
"Lo-Fi"
,
//71
616
"Tribal"
,
//72
617
"Acid Punk"
,
//73
618
"Acid Jazz"
,
//74
619
"Polka"
,
//75
620
"Retro"
,
//76
621
"Musical"
,
//77
622
"Rock & Roll"
,
//78
623
"Hard Rock"
,
//79
624
// following are winamp extentions
625
"Folk"
,
//80
626
"Folk-Rock"
,
//81
627
"National Folk"
,
//82
628
"Swing"
,
//83
629
"Fast Fusion"
,
//84
630
"Bebob"
,
//85
631
"Latin"
,
//86
632
"Revival"
,
//87
633
"Celtic"
,
//88
634
"Bluegrass"
,
//89
635
"Avantgarde"
,
//90
636
"Gothic Rock"
,
//91
637
"Progressive Rock"
,
//92
638
"Psychedelic Rock"
,
//93
639
"Symphonic Rock"
,
//94
640
"Slow Rock"
,
//95
641
"Big Band"
,
//96
642
"Chorus"
,
//97
643
"Easy Listening"
,
//98
644
"Acoustic"
,
//99
645
"Humour"
,
//100
646
"Speech"
,
//101
647
"Chanson"
,
//102
648
"Opera"
,
//103
649
"Chamber Music"
,
//104
650
"Sonata"
,
//105
651
"Symphony"
,
//106
652
"Booty Bass"
,
//107
653
"Primus"
,
//108
654
"Porn Groove"
,
//109
655
"Satire"
,
//110
656
"Slow Jam"
,
//111
657
"Club"
,
//112
658
"Tango"
,
//113
659
"Samba"
,
//114
660
"Folklore"
,
//115
661
"Ballad"
,
//116
662
"Power Ballad"
,
//117
663
"Rhythmic Soul"
,
//118
664
"Freestyle"
,
//119
665
"Duet"
,
//120
666
"Punk Rock"
,
//121
667
"Drum Solo"
,
//122
668
"A capella"
,
//123
669
"Euro-House"
,
//124
670
"Dance Hall"
,
//125
671
"Goa"
,
//126
672
"Drum & Bass"
,
//127
673
"Club-House"
,
//128
674
"Hardcore"
,
//129
675
"Terror"
,
//130
676
"Indie"
,
//131
677
"Britpop"
,
//132
678
"Negerpunk"
,
//133
679
"Polsk Punk"
,
//134
680
"Beat"
,
//135
681
"Christian Gangsta Rap"
,
//136
682
"Heavy Metal"
,
//137
683
"Black Metal"
,
//138
684
"Crossover"
,
//139
685
"Contemporary Christian"
,
//140
686
"Christian Rock "
,
//141
687
"Merengue"
,
//142
688
"Salsa"
,
//143
689
"Trash Metal"
,
//144
690
"Anime"
,
//145
691
"JPop"
,
//146
692
"Synthpop"
//147
693
};
694
695
#define ID3_V1GENRE2DESCRIPTION(x) (x < ID3_NR_OF_V1_GENRES && x >= 0) ? ID3_v1_genre_description[x] : NULL
696
697
#define MASK(bits) ((1 << (bits)) - 1)
698
#define MASK1 MASK(1)
699
#define MASK2 MASK(2)
700
#define MASK3 MASK(3)
701
#define MASK4 MASK(4)
702
#define MASK5 MASK(5)
703
#define MASK6 MASK(6)
704
#define MASK7 MASK(7)
705
#define MASK8 MASK(8)
706
707
/*
708
* The following is borrowed from glib.h (http://www.gtk.org)
709
*/
710
#ifdef WIN32
711
712
/* On native Win32, directory separator is the backslash, and search path
713
* separator is the semicolon.
714
*/
715
# define ID3_DIR_SEPARATOR '\\'
716
# define ID3_DIR_SEPARATOR_S "\\"
717
# define ID3_SEARCHPATH_SEPARATOR ';'
718
# define ID3_SEARCHPATH_SEPARATOR_S ";"
719
720
#else
/* !WIN32 */
721
722
# ifndef _EMX_
723
/* Unix */
724
725
# define ID3_DIR_SEPARATOR '/'
726
# define ID3_DIR_SEPARATOR_S "/"
727
# define ID3_SEARCHPATH_SEPARATOR ':'
728
# define ID3_SEARCHPATH_SEPARATOR_S ":"
729
730
# else
731
/* EMX/OS2 */
732
733
# define ID3_DIR_SEPARATOR '/'
734
# define ID3_DIR_SEPARATOR_S "/"
735
# define ID3_SEARCHPATH_SEPARATOR ';'
736
# define ID3_SEARCHPATH_SEPARATOR_S ";"
737
738
# endif
739
740
#endif
/* !WIN32 */
741
742
#ifndef NULL
743
# define NULL ((void*) 0)
744
#endif
745
746
#endif
/* _ID3LIB_GLOBALS_H_ */
747
Generated on Fri Apr 5 2013 19:40:28 for id3lib by
1.8.3