1 package org.farng.mp3;
2 
3 import java.util.HashMap;
4 import java.util.Iterator;
5 
6 /**
7  * This contais all ID3 frame descriptions and Lyric3 field description. It also has bit masks for all the flags in the
8  * MP3 Header.
9  *
10  * @author Eric Farng
11  * @version $Revision: 1.3 $
12  */
13 public class TagConstant {
14 
15     // Bit numbering starts with the most significat bit as 7
16     /**
17      * defined for convenience
18      */
19     public static final int BIT7 = 0x80;
20     /**
21      * defined for convenience
22      */
23     public static final int BIT6 = 0x40;
24     /**
25      * defined for convenience
26      */
27     public static final int BIT5 = 0x20;
28     /**
29      * defined for convenience
30      */
31     public static final int BIT4 = 0x10;
32     /**
33      * defined for convenience
34      */
35     public static final int BIT3 = 0x08;
36     /**
37      * defined for convenience
38      */
39     public static final int BIT2 = 0x04;
40     /**
41      * defined for convenience
42      */
43     public static final int BIT1 = 0x02;
44     /**
45      * defined for convenience
46      */
47     public static final int BIT0 = 0x01;
48     /**
49      * System seperators
50      */
51     public static final String SEPERATOR_LINE = System.getProperty("line.separator");
52     public static final String SEPERATOR_FILE = System.getProperty("file.separator");
53     public static final String SEPERATOR_PATH = System.getProperty("path.separator");
54     /**
55      * MP3 save mode lowest numbered index
56      */
57     public static final int MP3_FILE_SAVE_FIRST = 1;
58     /**
59      * MP3 save mode matching <code>write</code> method
60      */
61     public static final int MP3_FILE_SAVE_WRITE = 1;
62     /**
63      * MP3 save mode matching <code>overwrite</code> method
64      */
65     public static final int MP3_FILE_SAVE_OVERWRITE = 2;
66     /**
67      * MP3 save mode matching <code>append</code> method
68      */
69     public static final int MP3_FILE_SAVE_APPEND = 3;
70     /**
71      * MP3 save mode highest numbered index
72      */
73     public static final int MP3_FILE_SAVE_LAST = 3;
74     /**
75      * ID3v2.2 Header bit mask
76      */
77     public static final int MASK_V22_UNSYNCHRONIZATION = BIT7;
78     /**
79      * ID3v2.2 Header bit mask
80      */
81     public static final int MASK_V22_COMPRESSION = BIT7;
82     /**
83      * ID3v2.2 BUF Frame bit mask
84      */
85     public static final int MASK_V22_EMBEDDED_INFO_FLAG = BIT1;
86     /**
87      * ID3v2.3 Header bit mask
88      */
89     public static final int MASK_V23_UNSYNCHRONIZATION = BIT7;
90     /**
91      * ID3v2.3 Header bit mask
92      */
93     public static final int MASK_V23_EXTENDED_HEADER = BIT6;
94     /**
95      * ID3v2.3 Header bit mask
96      */
97     public static final int MASK_V23_EXPERIMENTAL = BIT5;
98     /**
99      * ID3v2.3 Extended Header bit mask
100      */
101     public static final int MASK_V23_CRC_DATA_PRESENT = BIT7;
102     /**
103      * ID3v2.3 Frame bit mask
104      */
105     public static final int MASK_V23_TAG_ALTER_PRESERVATION = BIT7;
106     /**
107      * ID3v2.3 Frame bit mask
108      */
109     public static final int MASK_V23_FILE_ALTER_PRESERVATION = BIT6;
110     /**
111      * ID3v2.3 Frame bit mask
112      */
113     public static final int MASK_V23_READ_ONLY = BIT5;
114     /**
115      * ID3v2.3 Frame bit mask
116      */
117     public static final int MASK_V23_COMPRESSION = BIT7;
118     /**
119      * ID3v2.3 Frame bit mask
120      */
121     public static final int MASK_V23_ENCRYPTION = BIT6;
122     /**
123      * ID3v2.3 Frame bit mask
124      */
125     public static final int MASK_V23_GROUPING_IDENTITY = BIT5;
126     /**
127      * ID3v2.3 RBUF frame bit mask
128      */
129     public static final int MASK_V23_EMBEDDED_INFO_FLAG = BIT1;
130     /**
131      * ID3v2.4 Header bit mask
132      */
133     public static final int MASK_V24_UNSYNCHRONIZATION = BIT7;
134     /**
135      * ID3v2.4 Header bit mask
136      */
137     public static final int MASK_V24_EXTENDED_HEADER = BIT6;
138     /**
139      * ID3v2.4 Header bit mask
140      */
141     public static final int MASK_V24_EXPERIMENTAL = BIT5;
142     /**
143      * ID3v2.4 Header bit mask
144      */
145     public static final int MASK_V24_FOOTER_PRESENT = BIT4;
146     /**
147      * ID3v2.4 Extended header bit mask
148      */
149     public static final int MASK_V24_TAG_UPDATE = BIT6;
150     /**
151      * ID3v2.4 Extended header bit mask
152      */
153     public static final int MASK_V24_CRC_DATA_PRESENT = BIT5;
154     /**
155      * ID3v2.4 Extended header bit mask
156      */
157     public static final int MASK_V24_TAG_RESTRICTIONS = BIT4;
158     /**
159      * ID3v2.4 Extended header bit mask
160      */
161     public static final int MASK_V24_TAG_SIZE_RESTRICTIONS = (byte) BIT7 | BIT6;
162     /**
163      * ID3v2.4 Extended header bit mask
164      */
165     public static final int MASK_V24_TEXT_ENCODING_RESTRICTIONS = BIT5;
166     /**
167      * ID3v2.4 Extended header bit mask
168      */
169     public static final int MASK_V24_TEXT_FIELD_SIZE_RESTRICTIONS = BIT4 | BIT3;
170     /**
171      * ID3v2.4 Extended header bit mask
172      */
173     public static final int MASK_V24_IMAGE_ENCODING = BIT2;
174     /**
175      * ID3v2.4 Extended header bit mask
176      */
177     public static final int MASK_V24_IMAGE_SIZE_RESTRICTIONS = BIT2 | BIT1;
178 
179     /**
180      * ID3v2.4 Header Footer are the same as the header flags. WHY?!?! move the
181      * flags from thier position in 2.3??????????
182      */
183     /**
184      * ID3v2.4 Header Footer bit mask
185      */
186     public static final int MASK_V24_TAG_ALTER_PRESERVATION = BIT6;
187     /**
188      * ID3v2.4 Header Footer bit mask
189      */
190     public static final int MASK_V24_FILE_ALTER_PRESERVATION = BIT5;
191     /**
192      * ID3v2.4 Header Footer bit mask
193      */
194     public static final int MASK_V24_READ_ONLY = BIT4;
195     /**
196      * ID3v2.4 Header Footer bit mask
197      */
198     public static final int MASK_V24_GROUPING_IDENTITY = BIT6;
199     /**
200      * ID3v2.4 Header Footer bit mask
201      */
202     public static final int MASK_V24_COMPRESSION = BIT4;
203     /**
204      * ID3v2.4 Header Footer bit mask
205      */
206     public static final int MASK_V24_ENCRYPTION = BIT3;
207     /**
208      * ID3v2.4 Header Footer bit mask
209      */
210     public static final int MASK_V24_FRAME_UNSYNCHRONIZATION = BIT2;
211     /**
212      * ID3v2.4 Header Footer bit mask
213      */
214     public static final int MASK_V24_DATA_LENGTH_INDICATOR = BIT1;
215     /**
216      * MP3 Frame Header bit mask
217      */
218     public static final int MASK_MP3_ID = BIT3;
219     /**
220      * MP3 Frame Header bit mask
221      */
222     public static final int MASK_MP3_VERSION = BIT4 | BIT3;
223     /**
224      * MP3 Frame Header bit mask
225      */
226     public static final int MASK_MP3_LAYER = BIT2 | BIT1;
227     /**
228      * MP3 Frame Header bit mask
229      */
230     public static final int MASK_MP3_PROTECTION = BIT0;
231     /**
232      * MP3 Frame Header bit mask
233      */
234     public static final int MASK_MP3_BITRATE = BIT7 | BIT6 | BIT5 | BIT4;
235     /**
236      * MP3 Frame Header bit mask
237      */
238     public static final int MASK_MP3_FREQUENCY = BIT3 + BIT2;
239     /**
240      * MP3 Frame Header bit mask
241      */
242     public static final int MASK_MP3_PADDING = BIT1;
243     /**
244      * MP3 Frame Header bit mask
245      */
246     public static final int MASK_MP3_PRIVACY = BIT0;
247     /**
248      * MP3 Frame Header bit mask
249      */
250     public static final int MASK_MP3_MODE = BIT7 | BIT6;
251     /**
252      * MP3 Frame Header bit mask
253      */
254     public static final int MASK_MP3_MODE_EXTENSION = BIT5 | BIT4;
255     /**
256      * MP3 Frame Header bit mask
257      */
258     public static final int MASK_MP3_COPY = BIT3;
259     /**
260      * MP3 Frame Header bit mask
261      */
262     public static final int MASK_MP3_HOME = BIT2;
263     /**
264      * MP3 Frame Header bit mask
265      */
266     public static final int MASK_MP3_EMPHASIS = BIT1 | BIT0;
267     /**
268      * <code>HashMap</code> translating the three letter ID into a human understandable string
269      */
270     public static final HashMap id3v2_2FrameIdToString = new HashMap();
271     /**
272      * <code>HashMap</code> translating the four letter ID into a human understandable string
273      */
274     public static final HashMap id3v2_3FrameIdToString = new HashMap();
275     /**
276      * <code>HashMap</code> translating the four letter ID into a human understandable string
277      */
278     public static final HashMap id3v2_4FrameIdToString = new HashMap();
279     /**
280      * <code>HashMap</code> translating the predefined string into the three letter ID
281      */
282     public static final HashMap id3v2_2FrameStringToId = new HashMap();
283     /**
284      * <code>HashMap</code> translating the predefined string into the four letter ID
285      */
286     public static final HashMap id3v2_3FrameStringToId = new HashMap();
287     /**
288      * <code>HashMap</code> translating the predefined string into the four letter ID
289      */
290     public static final HashMap id3v2_4FrameStringToId = new HashMap();
291     /**
292      * <code>HashMap</code> translating the predefined string into the three letter ID
293      */
294     public static final HashMap lyrics3v2FieldIdToString = new HashMap();
295     /**
296      * <code>HashMap</code> translating the predefined string into the three letter ID
297      */
298     public static final HashMap lyrics3v2FieldStringToId = new HashMap();
299     /**
300      * <code>HashMap</code> translating the three letter ID3v2.2 ID to the corresponding ID3v2.4 ID
301      */
302     public static final HashMap id3v2_3ToId3v2_4 = new HashMap();
303     /**
304      * <code>HashMap</code> translating the three letter ID3v2.2 ID to the corresponding ID3v2.3 ID
305      */
306     public static final HashMap id3v2_2ToId3v2_3 = new HashMap();
307     /**
308      * <code>HashMap</code> translating the three letter ID3v2.2 ID to the corresponding ID3v2.4 ID
309      */
310     public static final HashMap id3v2_4ToId3v2_3 = new HashMap();
311     /**
312      * <code>HashMap</code> translating the three letter ID3v2.2 ID to the corresponding ID3v2.3 ID
313      */
314     public static final HashMap id3v2_3ToId3v2_2 = new HashMap();
315     /**
316      * <code>HashMap</code> translating the ID3v1 genre bit into a human readable string
317      */
318     public static final HashMap genreIdToString = new HashMap();
319     /**
320      * <code>HashMap</code> translating the predefined genre string into the ID3v1 genre bit
321      */
322     public static final HashMap genreStringToId = new HashMap();
323     /**
324      * <code>HashMap</code> translating the language ID to a human readable string. [ISO-639-2] ISO/FDIS 639-2
325      */
326     public static final HashMap languageIdToString = new HashMap();
327     /**
328      * <code>HashMap</code> translating the predefined language string into the ID. [ISO-639-2] ISO/FDIS 639-2
329      */
330     public static final HashMap languageStringToId = new HashMap();
331     /**
332      * <code>HashMap</code> translating the bitrate read in from the MP3 Header into a base-10 integer
333      */
334     public static final HashMap bitrate = new HashMap();
335     /**
336      * <code>HashMap</code> translating table found in ID3 tags
337      */
338     public static final HashMap textEncodingIdToString = new HashMap();
339     /**
340      * <code>HashMap</code> translating table found in ID3 tags
341      */
342     public static final HashMap textEncodingStringToId = new HashMap();
343     /**
344      * <code>HashMap</code> translating table found in ID3 tags
345      */
346     public static final HashMap interpolationMethodIdToString = new HashMap();
347     /**
348      * <code>HashMap</code> translating table found in ID3 tags
349      */
350     public static final HashMap interpolationMethodStringToId = new HashMap();
351     /**
352      * <code>HashMap</code> translating table found in ID3 tags
353      */
354     public static final HashMap pictureTypeIdToString = new HashMap();
355     /**
356      * <code>HashMap</code> translating table found in ID3 tags
357      */
358     public static final HashMap pictureTypeStringToId = new HashMap();
359     /**
360      * <code>HashMap</code> translating table found in ID3 tags
361      */
362     public static final HashMap timeStampFormatIdToString = new HashMap();
363     /**
364      * <code>HashMap</code> translating table found in ID3 tags
365      */
366     public static final HashMap timeStampFormatStringToId = new HashMap();
367     /**
368      * <code>HashMap</code> translating table found in ID3 tags
369      */
370     public static final HashMap typeOfEventIdToString = new HashMap();
371     /**
372      * <code>HashMap</code> translating table found in ID3 tags
373      */
374     public static final HashMap typeOfEventStringToId = new HashMap();
375     /**
376      * <code>HashMap</code> translating table found in ID3 tags
377      */
378     public static final HashMap typeOfChannelIdToString = new HashMap();
379     /**
380      * <code>HashMap</code> translating table found in ID3 tags
381      */
382     public static final HashMap typeOfChannelStringToId = new HashMap();
383     /**
384      * <code>HashMap</code> translating table found in ID3 tags
385      */
386     public static final HashMap recievedAsIdToString = new HashMap();
387     /**
388      * <code>HashMap</code> translating table found in ID3 tags
389      */
390     public static final HashMap recievedAsStringToId = new HashMap();
391 
392     static {
393         id3v2_2FrameIdToString.put("BUF", "Recommended buffer size");
394         id3v2_2FrameIdToString.put("CNT", "Play counter");
395         id3v2_2FrameIdToString.put("COM", "Comments");
396         id3v2_2FrameIdToString.put("CRA", "Audio encryption");
397         id3v2_2FrameIdToString.put("CRM", "Encrypted meta frame");
398         id3v2_2FrameIdToString.put("ETC", "Event timing codes");
399         id3v2_2FrameIdToString.put("EQU", "Equalization");
400         id3v2_2FrameIdToString.put("GEO", "General encapsulated object");
401         id3v2_2FrameIdToString.put("IPL", "Involved people list");
402         id3v2_2FrameIdToString.put("LNK", "Linked information");
403         id3v2_2FrameIdToString.put("MCI", "Music CD Identifier");
404         id3v2_2FrameIdToString.put("MLL", "MPEG location lookup table");
405         id3v2_2FrameIdToString.put("PIC", "Attached picture");
406         id3v2_2FrameIdToString.put("POP", "Popularimeter");
407         id3v2_2FrameIdToString.put("REV", "Reverb");
408         id3v2_2FrameIdToString.put("RVA", "Relative volume adjustment");
409         id3v2_2FrameIdToString.put("SLT", "Synchronized lyric/text");
410         id3v2_2FrameIdToString.put("STC", "Synced tempo codes");
411         id3v2_2FrameIdToString.put("TAL", "Text: Album/Movie/Show title");
412         id3v2_2FrameIdToString.put("TBP", "Text: BPM (Beats Per Minute)");
413         id3v2_2FrameIdToString.put("TCM", "Text: Composer");
414         id3v2_2FrameIdToString.put("TCO", "Text: Content type");
415         id3v2_2FrameIdToString.put("TCR", "Text: Copyright message");
416         id3v2_2FrameIdToString.put("TDA", "Text: Date");
417         id3v2_2FrameIdToString.put("TDY", "Text: Playlist delay");
418         id3v2_2FrameIdToString.put("TEN", "Text: Encoded by");
419         id3v2_2FrameIdToString.put("TFT", "Text: File type");
420         id3v2_2FrameIdToString.put("TIM", "Text: Time");
421         id3v2_2FrameIdToString.put("TKE", "Text: Initial key");
422         id3v2_2FrameIdToString.put("TLA", "Text: Language(s)");
423         id3v2_2FrameIdToString.put("TLE", "Text: Length");
424         id3v2_2FrameIdToString.put("TMT", "Text: Media type");
425         id3v2_2FrameIdToString.put("TOA", "Text: Original artist(s)/performer(s)");
426         id3v2_2FrameIdToString.put("TOF", "Text: Original filename");
427         id3v2_2FrameIdToString.put("TOL", "Text: Original Lyricist(s)/text writer(s)");
428         id3v2_2FrameIdToString.put("TOR", "Text: Original release year");
429         id3v2_2FrameIdToString.put("TOT", "Text: Original album/Movie/Show title");
430         id3v2_2FrameIdToString.put("TP1", "Text: Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group");
431         id3v2_2FrameIdToString.put("TP2", "Text: Band/Orchestra/Accompaniment");
432         id3v2_2FrameIdToString.put("TP3", "Text: Conductor/Performer refinement");
433         id3v2_2FrameIdToString.put("TP4", "Text: Interpreted, remixed, or otherwise modified by");
434         id3v2_2FrameIdToString.put("TPA", "Text: Part of a set");
435         id3v2_2FrameIdToString.put("TPB", "Text: Publisher");
436         id3v2_2FrameIdToString.put("TRC", "Text: ISRC (International Standard Recording Code)");
437         id3v2_2FrameIdToString.put("TRD", "Text: Recording dates");
438         id3v2_2FrameIdToString.put("TRK", "Text: Track number/Position in set");
439         id3v2_2FrameIdToString.put("TSI", "Text: Size");
440         id3v2_2FrameIdToString.put("TSS", "Text: Software/hardware and settings used for encoding");
441         id3v2_2FrameIdToString.put("TT1", "Text: Content group description");
442         id3v2_2FrameIdToString.put("TT2", "Text: Title/Songname/Content description");
443         id3v2_2FrameIdToString.put("TT3", "Text: Subtitle/Description refinement");
444         id3v2_2FrameIdToString.put("TXT", "Text: Lyricist/text writer");
445         id3v2_2FrameIdToString.put("TXX", "User defined text information frame");
446         id3v2_2FrameIdToString.put("TYE", "Text: Year");
447         id3v2_2FrameIdToString.put("UFI", "Unique file identifier");
448         id3v2_2FrameIdToString.put("ULT", "Unsychronized lyric/text transcription");
449         id3v2_2FrameIdToString.put("WAF", "URL: Official audio file webpage");
450         id3v2_2FrameIdToString.put("WAR", "URL: Official artist/performer webpage");
451         id3v2_2FrameIdToString.put("WAS", "URL: Official audio source webpage");
452         id3v2_2FrameIdToString.put("WCM", "URL: Commercial information");
453         id3v2_2FrameIdToString.put("WCP", "URL: Copyright/Legal information");
454         id3v2_2FrameIdToString.put("WPB", "URL: Publishers official webpage");
455         id3v2_2FrameIdToString.put("WXX", "User defined URL link frame");
456         String key;
457         String value;
458         Iterator iterator = id3v2_2FrameIdToString.keySet().iterator();
459         while (iterator.hasNext()) {
460             key = (String) iterator.next();
461             value = (String) id3v2_2FrameIdToString.get(key);
id3v2_2FrameStringToId.put(value, key)462             id3v2_2FrameStringToId.put(value, key);
463         }
464         id3v2_3FrameIdToString.put("AENC", "Audio encryption");
465         id3v2_3FrameIdToString.put("APIC", "Attached picture");
466         id3v2_3FrameIdToString.put("COMM", "Comments");
467         id3v2_3FrameIdToString.put("COMR", "Commercial frame");
468         id3v2_3FrameIdToString.put("ENCR", "Encryption method registration");
469         id3v2_3FrameIdToString.put("EQUA", "Equalization");
470         id3v2_3FrameIdToString.put("ETCO", "Event timing codes");
471         id3v2_3FrameIdToString.put("GEOB", "General encapsulated object");
472         id3v2_3FrameIdToString.put("GRID", "Group identification registration");
473         id3v2_3FrameIdToString.put("IPLS", "Involved people list");
474         id3v2_3FrameIdToString.put("LINK", "Linked information");
475         id3v2_3FrameIdToString.put("MCDI", "Music CD identifier");
476         id3v2_3FrameIdToString.put("MLLT", "MPEG location lookup table");
477         id3v2_3FrameIdToString.put("OWNE", "Ownership frame");
478         id3v2_3FrameIdToString.put("PRIV", "Private frame");
479         id3v2_3FrameIdToString.put("PCNT", "Play counter");
480         id3v2_3FrameIdToString.put("POPM", "Popularimeter");
481         id3v2_3FrameIdToString.put("POSS", "Position synchronisation frame");
482         id3v2_3FrameIdToString.put("RBUF", "Recommended buffer size");
483         id3v2_3FrameIdToString.put("RVAD", "Relative volume adjustment");
484         id3v2_3FrameIdToString.put("RVRB", "Reverb");
485         id3v2_3FrameIdToString.put("SYLT", "Synchronized lyric/text");
486         id3v2_3FrameIdToString.put("SYTC", "Synchronized tempo codes");
487         id3v2_3FrameIdToString.put("TALB", "Text: Album/Movie/Show title");
488         id3v2_3FrameIdToString.put("TBPM", "Text: BPM (beats per minute)");
489         id3v2_3FrameIdToString.put("TCOM", "Text: Composer");
490         id3v2_3FrameIdToString.put("TCON", "Text: Content type");
491         id3v2_3FrameIdToString.put("TCOP", "Text: Copyright message");
492         id3v2_3FrameIdToString.put("TDAT", "Text: Date");
493         id3v2_3FrameIdToString.put("TDLY", "Text: Playlist delay");
494         id3v2_3FrameIdToString.put("TENC", "Text: Encoded by");
495         id3v2_3FrameIdToString.put("TEXT", "Text: Lyricist/Text writer");
496         id3v2_3FrameIdToString.put("TFLT", "Text: File type");
497         id3v2_3FrameIdToString.put("TIME", "Text: Time");
498         id3v2_3FrameIdToString.put("TIT1", "Text: Content group description");
499         id3v2_3FrameIdToString.put("TIT2", "Text: Title/songname/content description");
500         id3v2_3FrameIdToString.put("TIT3", "Text: Subtitle/Description refinement");
501         id3v2_3FrameIdToString.put("TKEY", "Text: Initial key");
502         id3v2_3FrameIdToString.put("TLAN", "Text: Language(s)");
503         id3v2_3FrameIdToString.put("TLEN", "Text: Length");
504         id3v2_3FrameIdToString.put("TMED", "Text: Media type");
505         id3v2_3FrameIdToString.put("TOAL", "Text: Original album/movie/show title");
506         id3v2_3FrameIdToString.put("TOFN", "Text: Original filename");
507         id3v2_3FrameIdToString.put("TOLY", "Text: Original lyricist(s)/text writer(s)");
508         id3v2_3FrameIdToString.put("TOPE", "Text: Original artist(s)/performer(s)");
509         id3v2_3FrameIdToString.put("TORY", "Text: Original release year");
510         id3v2_3FrameIdToString.put("TOWN", "Text: File owner/licensee");
511         id3v2_3FrameIdToString.put("TPE1", "Text: Lead performer(s)/Soloist(s)");
512         id3v2_3FrameIdToString.put("TPE2", "Text: Band/orchestra/accompaniment");
513         id3v2_3FrameIdToString.put("TPE3", "Text: Conductor/performer refinement");
514         id3v2_3FrameIdToString.put("TPE4", "Text: Interpreted, remixed, or otherwise modified by");
515         id3v2_3FrameIdToString.put("TPOS", "Text: Part of a set");
516         id3v2_3FrameIdToString.put("TPUB", "Text: Publisher");
517         id3v2_3FrameIdToString.put("TRCK", "Text: Track number/Position in set");
518         id3v2_3FrameIdToString.put("TRDA", "Text: Recording dates");
519         id3v2_3FrameIdToString.put("TRSN", "Text: Internet radio station name");
520         id3v2_3FrameIdToString.put("TRSO", "Text: Internet radio station owner");
521         id3v2_3FrameIdToString.put("TSIZ", "Text: Size");
522         id3v2_3FrameIdToString.put("TSRC", "Text: ISRC (international standard recording code)");
523         id3v2_3FrameIdToString.put("TSSE", "Text: Software/Hardware and settings used for encoding");
524         id3v2_3FrameIdToString.put("TYER", "Text: Year");
525         id3v2_3FrameIdToString.put("TXXX", "User defined text information frame");
526         id3v2_3FrameIdToString.put("UFID", "Unique file identifier");
527         id3v2_3FrameIdToString.put("USER", "Terms of use");
528         id3v2_3FrameIdToString.put("USLT", "Unsychronized lyric/text transcription");
529         id3v2_3FrameIdToString.put("WCOM", "URL: Commercial information");
530         id3v2_3FrameIdToString.put("WCOP", "URL: Copyright/Legal information");
531         id3v2_3FrameIdToString.put("WOAF", "URL: Official audio file webpage");
532         id3v2_3FrameIdToString.put("WOAR", "URL: Official artist/performer webpage");
533         id3v2_3FrameIdToString.put("WOAS", "URL: Official audio source webpage");
534         id3v2_3FrameIdToString.put("WORS", "URL: Official internet radio station homepage");
535         id3v2_3FrameIdToString.put("WPAY", "URL: Payment");
536         id3v2_3FrameIdToString.put("WPUB", "URL: Publishers official webpage");
537         id3v2_3FrameIdToString.put("WXXX", "User defined URL link frame");
538         iterator = id3v2_3FrameIdToString.keySet().iterator();
539         while (iterator.hasNext()) {
540             key = (String) iterator.next();
541             value = (String) id3v2_3FrameIdToString.get(key);
id3v2_3FrameStringToId.put(value, key)542             id3v2_3FrameStringToId.put(value, key);
543         }
544         id3v2_4FrameIdToString.put("AENC", "Audio encryption");
545         id3v2_4FrameIdToString.put("APIC", "Attached picture");
546         id3v2_4FrameIdToString.put("ASPI", "Audio seek point index");
547         id3v2_4FrameIdToString.put("COMM", "Comments");
548         id3v2_4FrameIdToString.put("COMR", "Commercial frame");
549         id3v2_4FrameIdToString.put("ENCR", "Encryption method registration");
550         id3v2_4FrameIdToString.put("EQU2", "Equalisation (2)");
551         id3v2_4FrameIdToString.put("ETCO", "Event timing codes");
552         id3v2_4FrameIdToString.put("GEOB", "General encapsulated object");
553         id3v2_4FrameIdToString.put("GRID", "Group identification registration");
554         id3v2_4FrameIdToString.put("LINK", "Linked information");
555         id3v2_4FrameIdToString.put("MCDI", "Music CD identifier");
556         id3v2_4FrameIdToString.put("MLLT", "MPEG location lookup table");
557         id3v2_4FrameIdToString.put("OWNE", "Ownership frame");
558         id3v2_4FrameIdToString.put("PRIV", "Private frame");
559         id3v2_4FrameIdToString.put("PCNT", "Play counter");
560         id3v2_4FrameIdToString.put("POPM", "Popularimeter");
561         id3v2_4FrameIdToString.put("POSS", "Position synchronisation frame");
562         id3v2_4FrameIdToString.put("RBUF", "Recommended buffer size");
563         id3v2_4FrameIdToString.put("RVA2", "Relative volume adjustment (2)");
564         id3v2_4FrameIdToString.put("RVRB", "Reverb");
565         id3v2_4FrameIdToString.put("SEEK", "Seek frame");
566         id3v2_4FrameIdToString.put("SIGN", "Signature frame");
567         id3v2_4FrameIdToString.put("SYLT", "Synchronised lyric/text");
568         id3v2_4FrameIdToString.put("SYTC", "Synchronised tempo codes");
569         id3v2_4FrameIdToString.put("TALB", "Text: Album/Movie/Show title");
570         id3v2_4FrameIdToString.put("TBPM", "Text: BPM (beats per minute)");
571         id3v2_4FrameIdToString.put("TCOM", "Text: Composer");
572         id3v2_4FrameIdToString.put("TCON", "Text: Content type (genre)");
573         id3v2_4FrameIdToString.put("TCOP", "Text: Copyright message");
574         id3v2_4FrameIdToString.put("TDEN", "Text: Encoding time");
575         id3v2_4FrameIdToString.put("TDLY", "Text: Playlist delay");
576         id3v2_4FrameIdToString.put("TDOR", "Text: Original release time");
577         id3v2_4FrameIdToString.put("TDRC", "Text: Recording time");
578         id3v2_4FrameIdToString.put("TDRL", "Text: Release time");
579         id3v2_4FrameIdToString.put("TDTG", "Text: Tagging time");
580         id3v2_4FrameIdToString.put("TENC", "Text: Encoded by");
581         id3v2_4FrameIdToString.put("TEXT", "Text: Lyricist/Text writer");
582         id3v2_4FrameIdToString.put("TFLT", "Text: File type");
583         id3v2_4FrameIdToString.put("TIPL", "Text: Involved people list");
584         id3v2_4FrameIdToString.put("TIT1", "Text: Content group description");
585         id3v2_4FrameIdToString.put("TIT2", "Text: Title/songname/content description");
586         id3v2_4FrameIdToString.put("TIT3", "Text: Subtitle/Description refinement");
587         id3v2_4FrameIdToString.put("TKEY", "Text: Initial key");
588         id3v2_4FrameIdToString.put("TLAN", "Text: Language(s)");
589         id3v2_4FrameIdToString.put("TLEN", "Text: Length");
590         id3v2_4FrameIdToString.put("TMCL", "Text: Musician credits list");
591         id3v2_4FrameIdToString.put("TMED", "Text: Media type");
592         id3v2_4FrameIdToString.put("TMOO", "Text: Mood");
593         id3v2_4FrameIdToString.put("TOAL", "Text: Original album/movie/show title");
594         id3v2_4FrameIdToString.put("TOFN", "Text: Original filename");
595         id3v2_4FrameIdToString.put("TOLY", "Text: Original lyricist(s)/text writer(s)");
596         id3v2_4FrameIdToString.put("TOPE", "Text: Original artist(s)/performer(s)");
597         id3v2_4FrameIdToString.put("TOWN", "Text: File owner/licensee");
598         id3v2_4FrameIdToString.put("TPE1", "Text: Lead performer(s)/Soloist(s)");
599         id3v2_4FrameIdToString.put("TPE2", "Text: Band/orchestra/accompaniment");
600         id3v2_4FrameIdToString.put("TPE3", "Text: Conductor/performer refinement");
601         id3v2_4FrameIdToString.put("TPE4", "Text: Interpreted, remixed, or otherwise modified by");
602         id3v2_4FrameIdToString.put("TPOS", "Text: Part of a set");
603         id3v2_4FrameIdToString.put("TPRO", "Text: Produced notice");
604         id3v2_4FrameIdToString.put("TPUB", "Text: Publisher");
605         id3v2_4FrameIdToString.put("TRCK", "Text: Track number/Position in set");
606         id3v2_4FrameIdToString.put("TRSN", "Text: Internet radio station name");
607         id3v2_4FrameIdToString.put("TRSO", "Text: Internet radio station owner");
608         id3v2_4FrameIdToString.put("TSOA", "Text: Album sort order");
609         id3v2_4FrameIdToString.put("TSOP", "Text: Performer sort order");
610         id3v2_4FrameIdToString.put("TSOT", "Text: Title sort order");
611         id3v2_4FrameIdToString.put("TSRC", "Text: ISRC (international standard recording code)");
612         id3v2_4FrameIdToString.put("TSSE", "Text: Software/Hardware and settings used for encoding");
613         id3v2_4FrameIdToString.put("TSST", "Text: Set subtitle");
614         id3v2_4FrameIdToString.put("TXXX", "User defined text information frame");
615         id3v2_4FrameIdToString.put("UFID", "Unique file identifier");
616         id3v2_4FrameIdToString.put("USER", "Terms of use");
617         id3v2_4FrameIdToString.put("USLT", "Unsynchronised lyric/text transcription");
618         id3v2_4FrameIdToString.put("WCOM", "URL: Commercial information");
619         id3v2_4FrameIdToString.put("WCOP", "URL: Copyright/Legal information");
620         id3v2_4FrameIdToString.put("WOAF", "URL: Official audio file webpage");
621         id3v2_4FrameIdToString.put("WOAR", "URL: Official artist/performer webpage");
622         id3v2_4FrameIdToString.put("WOAS", "URL: Official audio source webpage");
623         id3v2_4FrameIdToString.put("WORS", "URL: Official Internet radio station homepage");
624         id3v2_4FrameIdToString.put("WPAY", "URL: Payment");
625         id3v2_4FrameIdToString.put("WPUB", "URL: Publishers official webpage");
626         id3v2_4FrameIdToString.put("WXXX", "User defined URL link frame");
627         iterator = id3v2_4FrameIdToString.keySet().iterator();
628         while (iterator.hasNext()) {
629             key = (String) iterator.next();
630             value = (String) id3v2_4FrameIdToString.get(key);
id3v2_4FrameStringToId.put(value, key)631             id3v2_4FrameStringToId.put(value, key);
632         }
633         lyrics3v2FieldIdToString.put("IND", "Indications field");
634         lyrics3v2FieldIdToString.put("LYR", "Lyrics multi line text");
635         lyrics3v2FieldIdToString.put("INF", "Additional information multi line text");
636         lyrics3v2FieldIdToString.put("AUT", "Lyrics/Music Author name");
637         lyrics3v2FieldIdToString.put("EAL", "Extended Album name");
638         lyrics3v2FieldIdToString.put("EAR", "Extended Artist name");
639         lyrics3v2FieldIdToString.put("ETT", "Extended Track Title");
640         lyrics3v2FieldIdToString.put("IMG", "Link to an image files");
641         iterator = lyrics3v2FieldIdToString.keySet().iterator();
642         while (iterator.hasNext()) {
643             key = (String) iterator.next();
644             value = (String) lyrics3v2FieldIdToString.get(key);
lyrics3v2FieldStringToId.put(value, key)645             lyrics3v2FieldStringToId.put(value, key);
646         }
647         id3v2_2ToId3v2_3.put("BUF", "RBUF");
648         id3v2_2ToId3v2_3.put("CNT", "PCNT");
649         id3v2_2ToId3v2_3.put("COM", "COMM");
650         id3v2_2ToId3v2_3.put("CRA", "AENC");
651 
652         //id3v2_2ToId3v2_4.put("CRM", "CRM"); // removed in ID3v2.3
653         id3v2_2ToId3v2_3.put("ETC", "ETCO");
654         id3v2_2ToId3v2_3.put("EQU", "EQUA"); // changed from EQUA to EQU2 in
655 
656         // ID3v2.4
657         id3v2_2ToId3v2_3.put("GEO", "GEOB"); // Deprecated in ID3v2.4
658         id3v2_2ToId3v2_3.put("IPL", "IPLS");
659         id3v2_2ToId3v2_3.put("LNK", "LINK");
660         id3v2_2ToId3v2_3.put("MCI", "MCDI");
661         id3v2_2ToId3v2_3.put("MLL", "MLLT");
662         id3v2_2ToId3v2_3.put("PIC", "APIC"); // the APIC spec is different from
663 
664         // PIC
665         id3v2_2ToId3v2_3.put("POP", "POPM");
666         id3v2_2ToId3v2_3.put("REV", "RVRB");
667         id3v2_2ToId3v2_3.put("RVA", "RVAD"); // changed from RVAD to RVA2 in
668 
669         // ID3v2.4
670         id3v2_2ToId3v2_3.put("SLT", "SYLT");
671         id3v2_2ToId3v2_3.put("STC", "SYTC");
672         id3v2_2ToId3v2_3.put("TAL", "TALB");
673         id3v2_2ToId3v2_3.put("TBP", "TBPM");
674         id3v2_2ToId3v2_3.put("TCM", "TCOM");
675         id3v2_2ToId3v2_3.put("TCO", "TCON");
676         id3v2_2ToId3v2_3.put("TCR", "TCOP");
677         id3v2_2ToId3v2_3.put("TDA", "TDAT"); // Deprecated in ID3v2.4
678         id3v2_2ToId3v2_3.put("TDY", "TDLY");
679         id3v2_2ToId3v2_3.put("TEN", "TENC");
680         id3v2_2ToId3v2_3.put("TFT", "TFLT");
681         id3v2_2ToId3v2_3.put("TIM", "TIME"); // Deprecated in ID3v2.4
682         id3v2_2ToId3v2_3.put("TKE", "TKEY");
683         id3v2_2ToId3v2_3.put("TLA", "TLAN");
684         id3v2_2ToId3v2_3.put("TLE", "TLEN");
685         id3v2_2ToId3v2_3.put("TMT", "TMED");
686         id3v2_2ToId3v2_3.put("TOA", "TOPE");
687         id3v2_2ToId3v2_3.put("TOF", "TOFN");
688         id3v2_2ToId3v2_3.put("TOL", "TOLY");
689         id3v2_2ToId3v2_3.put("TOR", "TORY"); // Deprecated in ID3v2.4
690         id3v2_2ToId3v2_3.put("TOT", "TOAL");
691         id3v2_2ToId3v2_3.put("TP1", "TPE1");
692         id3v2_2ToId3v2_3.put("TP2", "TPE2");
693         id3v2_2ToId3v2_3.put("TP3", "TPE3");
694         id3v2_2ToId3v2_3.put("TP4", "TPE4");
695         id3v2_2ToId3v2_3.put("TPA", "TPOS");
696         id3v2_2ToId3v2_3.put("TPB", "TPUB");
697         id3v2_2ToId3v2_3.put("TRC", "TSRC");
698         id3v2_2ToId3v2_3.put("TRD", "TRDA"); // Deprecated in ID3v2.4
699         id3v2_2ToId3v2_3.put("TRK", "TRCK");
700         id3v2_2ToId3v2_3.put("TSI", "TSIZ"); // Deprecated in ID3v2.4
701         id3v2_2ToId3v2_3.put("TSS", "TSSE");
702         id3v2_2ToId3v2_3.put("TT1", "TIT1");
703         id3v2_2ToId3v2_3.put("TT2", "TIT2");
704         id3v2_2ToId3v2_3.put("TT3", "TIT3");
705         id3v2_2ToId3v2_3.put("TXT", "TEXT");
706         id3v2_2ToId3v2_3.put("TXX", "TXXX");
707         id3v2_2ToId3v2_3.put("TYE", "TYER"); // Deprecated in ID3v2.4
708         id3v2_2ToId3v2_3.put("UFI", "UFID");
709         id3v2_2ToId3v2_3.put("ULT", "USLT");
710         id3v2_2ToId3v2_3.put("WAF", "WOAF");
711         id3v2_2ToId3v2_3.put("WAR", "WOAR");
712         id3v2_2ToId3v2_3.put("WAS", "WOAS");
713         id3v2_2ToId3v2_3.put("WCM", "WCOM");
714         id3v2_2ToId3v2_3.put("WCP", "WCOP");
715         id3v2_2ToId3v2_3.put("WPB", "WPUB");
716         id3v2_2ToId3v2_3.put("WXX", "WXXX");
717         iterator = id3v2_2ToId3v2_3.keySet().iterator();
718         while (iterator.hasNext()) {
719             key = (String) iterator.next();
720             value = (String) id3v2_2ToId3v2_3.get(key);
id3v2_3ToId3v2_2.put(value, key)721             id3v2_3ToId3v2_2.put(value, key);
722         }
723         id3v2_3ToId3v2_4.put("EQUA", "EQU2"); // changed from EQUA to EQU2 in
724 
725         // ID3v2.4
726         id3v2_3ToId3v2_4.put("GEOB", null); // Deprecated in ID3v2.4
727         id3v2_3ToId3v2_4.put("RVAD", "RVA2"); // changed from RVAD to RVA2 in
728 
729         // ID3v2.4
730         id3v2_3ToId3v2_4.put("TDAT", null); // Deprecated in ID3v2.4
731         id3v2_3ToId3v2_4.put("TIME", null); // Deprecated in ID3v2.4
732         id3v2_3ToId3v2_4.put("TORY", null); // Deprecated in ID3v2.4
733         id3v2_3ToId3v2_4.put("TRDA", null); // Deprecated in ID3v2.4
734         id3v2_3ToId3v2_4.put("TSIZ", null); // Deprecated in ID3v2.4
735         id3v2_3ToId3v2_4.put("TYER", null); // Deprecated in ID3v2.4
736         iterator = id3v2_3ToId3v2_4.keySet().iterator();
737         while (iterator.hasNext()) {
738             key = (String) iterator.next();
739             if (key != null) {
740                 value = (String) id3v2_3ToId3v2_4.get(key);
id3v2_4ToId3v2_3.put(value, key)741                 id3v2_4ToId3v2_3.put(value, key);
742             }
743         }
genreIdToString.put(new Long(0), R)744         genreIdToString.put(new Long(0), "Blues");
genreIdToString.put(new Long(1), R)745         genreIdToString.put(new Long(1), "Classic Rock");
genreIdToString.put(new Long(2), R)746         genreIdToString.put(new Long(2), "Country");
genreIdToString.put(new Long(3), R)747         genreIdToString.put(new Long(3), "Dance");
genreIdToString.put(new Long(4), R)748         genreIdToString.put(new Long(4), "Disco");
genreIdToString.put(new Long(5), R)749         genreIdToString.put(new Long(5), "Funk");
genreIdToString.put(new Long(6), R)750         genreIdToString.put(new Long(6), "Grunge");
genreIdToString.put(new Long(7), R)751         genreIdToString.put(new Long(7), "Hip-Hop");
genreIdToString.put(new Long(8), R)752         genreIdToString.put(new Long(8), "Jazz");
genreIdToString.put(new Long(9), R)753         genreIdToString.put(new Long(9), "Metal");
genreIdToString.put(new Long(10), R)754         genreIdToString.put(new Long(10), "New Age");
genreIdToString.put(new Long(11), R)755         genreIdToString.put(new Long(11), "Oldies");
genreIdToString.put(new Long(12), R)756         genreIdToString.put(new Long(12), "Other");
genreIdToString.put(new Long(13), R)757         genreIdToString.put(new Long(13), "Pop");
genreIdToString.put(new Long(14), R)758         genreIdToString.put(new Long(14), "R&B");
genreIdToString.put(new Long(15), R)759         genreIdToString.put(new Long(15), "Rap");
genreIdToString.put(new Long(16), R)760         genreIdToString.put(new Long(16), "Reggae");
genreIdToString.put(new Long(17), R)761         genreIdToString.put(new Long(17), "Rock");
genreIdToString.put(new Long(18), R)762         genreIdToString.put(new Long(18), "Techno");
genreIdToString.put(new Long(19), R)763         genreIdToString.put(new Long(19), "Industrial");
genreIdToString.put(new Long(20), R)764         genreIdToString.put(new Long(20), "Alternative");
genreIdToString.put(new Long(21), R)765         genreIdToString.put(new Long(21), "Ska");
genreIdToString.put(new Long(22), R)766         genreIdToString.put(new Long(22), "Death Metal");
genreIdToString.put(new Long(23), R)767         genreIdToString.put(new Long(23), "Pranks");
genreIdToString.put(new Long(24), R)768         genreIdToString.put(new Long(24), "Soundtrack");
genreIdToString.put(new Long(25), R)769         genreIdToString.put(new Long(25), "Euro-Techno");
genreIdToString.put(new Long(26), R)770         genreIdToString.put(new Long(26), "Ambient");
genreIdToString.put(new Long(27), R)771         genreIdToString.put(new Long(27), "Trip-Hop");
genreIdToString.put(new Long(28), R)772         genreIdToString.put(new Long(28), "Vocal");
genreIdToString.put(new Long(29), R)773         genreIdToString.put(new Long(29), "Jazz+Funk");
genreIdToString.put(new Long(30), R)774         genreIdToString.put(new Long(30), "Fusion");
genreIdToString.put(new Long(31), R)775         genreIdToString.put(new Long(31), "Trance");
genreIdToString.put(new Long(32), R)776         genreIdToString.put(new Long(32), "Classical");
genreIdToString.put(new Long(33), R)777         genreIdToString.put(new Long(33), "Instrumental");
genreIdToString.put(new Long(34), R)778         genreIdToString.put(new Long(34), "Acid");
genreIdToString.put(new Long(35), R)779         genreIdToString.put(new Long(35), "House");
genreIdToString.put(new Long(36), R)780         genreIdToString.put(new Long(36), "Game");
genreIdToString.put(new Long(37), R)781         genreIdToString.put(new Long(37), "Sound Clip");
genreIdToString.put(new Long(38), R)782         genreIdToString.put(new Long(38), "Gospel");
genreIdToString.put(new Long(39), R)783         genreIdToString.put(new Long(39), "Noise");
genreIdToString.put(new Long(40), R)784         genreIdToString.put(new Long(40), "AlternRock");
genreIdToString.put(new Long(41), R)785         genreIdToString.put(new Long(41), "Bass");
genreIdToString.put(new Long(42), R)786         genreIdToString.put(new Long(42), "Soul");
genreIdToString.put(new Long(43), R)787         genreIdToString.put(new Long(43), "Punk");
genreIdToString.put(new Long(44), R)788         genreIdToString.put(new Long(44), "Space");
genreIdToString.put(new Long(45), R)789         genreIdToString.put(new Long(45), "Meditative");
genreIdToString.put(new Long(46), R)790         genreIdToString.put(new Long(46), "Instrumental Pop");
genreIdToString.put(new Long(47), R)791         genreIdToString.put(new Long(47), "Instrumental Rock");
genreIdToString.put(new Long(48), R)792         genreIdToString.put(new Long(48), "Ethnic");
genreIdToString.put(new Long(49), R)793         genreIdToString.put(new Long(49), "Gothic");
genreIdToString.put(new Long(50), R)794         genreIdToString.put(new Long(50), "Darkwave");
genreIdToString.put(new Long(51), R)795         genreIdToString.put(new Long(51), "Techno-Industrial");
genreIdToString.put(new Long(52), R)796         genreIdToString.put(new Long(52), "Electronic");
genreIdToString.put(new Long(53), R)797         genreIdToString.put(new Long(53), "Pop-Folk");
genreIdToString.put(new Long(54), R)798         genreIdToString.put(new Long(54), "Eurodance");
genreIdToString.put(new Long(55), R)799         genreIdToString.put(new Long(55), "Dream");
genreIdToString.put(new Long(56), R)800         genreIdToString.put(new Long(56), "Southern Rock");
genreIdToString.put(new Long(57), R)801         genreIdToString.put(new Long(57), "Comedy");
genreIdToString.put(new Long(58), R)802         genreIdToString.put(new Long(58), "Cult");
genreIdToString.put(new Long(59), R)803         genreIdToString.put(new Long(59), "Gangsta");
genreIdToString.put(new Long(60), R)804         genreIdToString.put(new Long(60), "Top 40");
genreIdToString.put(new Long(61), R)805         genreIdToString.put(new Long(61), "Christian Rap");
genreIdToString.put(new Long(62), R)806         genreIdToString.put(new Long(62), "Pop/Funk");
genreIdToString.put(new Long(63), R)807         genreIdToString.put(new Long(63), "Jungle");
genreIdToString.put(new Long(64), R)808         genreIdToString.put(new Long(64), "Native American");
genreIdToString.put(new Long(65), R)809         genreIdToString.put(new Long(65), "Cabaret");
genreIdToString.put(new Long(66), R)810         genreIdToString.put(new Long(66), "New Wave");
genreIdToString.put(new Long(67), R)811         genreIdToString.put(new Long(67), "Psychadelic");
genreIdToString.put(new Long(68), R)812         genreIdToString.put(new Long(68), "Rave");
genreIdToString.put(new Long(69), R)813         genreIdToString.put(new Long(69), "Showtunes");
genreIdToString.put(new Long(70), R)814         genreIdToString.put(new Long(70), "Trailer");
genreIdToString.put(new Long(71), R)815         genreIdToString.put(new Long(71), "Lo-Fi");
genreIdToString.put(new Long(72), R)816         genreIdToString.put(new Long(72), "Tribal");
genreIdToString.put(new Long(73), R)817         genreIdToString.put(new Long(73), "Acid Punk");
genreIdToString.put(new Long(74), R)818         genreIdToString.put(new Long(74), "Acid Jazz");
genreIdToString.put(new Long(75), R)819         genreIdToString.put(new Long(75), "Polka");
genreIdToString.put(new Long(76), R)820         genreIdToString.put(new Long(76), "Retro");
genreIdToString.put(new Long(77), R)821         genreIdToString.put(new Long(77), "Musical");
genreIdToString.put(new Long(78), R)822         genreIdToString.put(new Long(78), "Rock & Roll");
genreIdToString.put(new Long(79), R)823         genreIdToString.put(new Long(79), "Hard Rock");
genreIdToString.put(new Long(80), R)824         genreIdToString.put(new Long(80), "Folk");
genreIdToString.put(new Long(81), R)825         genreIdToString.put(new Long(81), "Folk-Rock");
genreIdToString.put(new Long(82), R)826         genreIdToString.put(new Long(82), "National Folk");
genreIdToString.put(new Long(83), R)827         genreIdToString.put(new Long(83), "Swing");
genreIdToString.put(new Long(84), R)828         genreIdToString.put(new Long(84), "Fast Fusion");
genreIdToString.put(new Long(85), R)829         genreIdToString.put(new Long(85), "Bebob");
genreIdToString.put(new Long(86), R)830         genreIdToString.put(new Long(86), "Latin");
genreIdToString.put(new Long(87), R)831         genreIdToString.put(new Long(87), "Revival");
genreIdToString.put(new Long(88), R)832         genreIdToString.put(new Long(88), "Celtic");
genreIdToString.put(new Long(89), R)833         genreIdToString.put(new Long(89), "Bluegrass");
genreIdToString.put(new Long(90), R)834         genreIdToString.put(new Long(90), "Avantgarde");
genreIdToString.put(new Long(91), R)835         genreIdToString.put(new Long(91), "Gothic Rock");
genreIdToString.put(new Long(92), R)836         genreIdToString.put(new Long(92), "Progressive Rock");
genreIdToString.put(new Long(93), R)837         genreIdToString.put(new Long(93), "Psychedelic Rock");
genreIdToString.put(new Long(94), R)838         genreIdToString.put(new Long(94), "Symphonic Rock");
genreIdToString.put(new Long(95), R)839         genreIdToString.put(new Long(95), "Slow Rock");
genreIdToString.put(new Long(96), R)840         genreIdToString.put(new Long(96), "Big Band");
genreIdToString.put(new Long(97), R)841         genreIdToString.put(new Long(97), "Chorus");
genreIdToString.put(new Long(98), R)842         genreIdToString.put(new Long(98), "Easy Listening");
genreIdToString.put(new Long(99), R)843         genreIdToString.put(new Long(99), "Acoustic");
genreIdToString.put(new Long(100), R)844         genreIdToString.put(new Long(100), "Humour");
genreIdToString.put(new Long(101), R)845         genreIdToString.put(new Long(101), "Speech");
genreIdToString.put(new Long(102), R)846         genreIdToString.put(new Long(102), "Chanson");
genreIdToString.put(new Long(103), R)847         genreIdToString.put(new Long(103), "Opera");
genreIdToString.put(new Long(104), R)848         genreIdToString.put(new Long(104), "Chamber Music");
genreIdToString.put(new Long(105), R)849         genreIdToString.put(new Long(105), "Sonata");
genreIdToString.put(new Long(106), R)850         genreIdToString.put(new Long(106), "Symphony");
genreIdToString.put(new Long(107), R)851         genreIdToString.put(new Long(107), "Booty Bass");
genreIdToString.put(new Long(108), R)852         genreIdToString.put(new Long(108), "Primus");
genreIdToString.put(new Long(109), R)853         genreIdToString.put(new Long(109), "Porn Groove");
genreIdToString.put(new Long(110), R)854         genreIdToString.put(new Long(110), "Satire");
genreIdToString.put(new Long(111), R)855         genreIdToString.put(new Long(111), "Slow Jam");
genreIdToString.put(new Long(112), R)856         genreIdToString.put(new Long(112), "Club");
genreIdToString.put(new Long(113), R)857         genreIdToString.put(new Long(113), "Tango");
genreIdToString.put(new Long(114), R)858         genreIdToString.put(new Long(114), "Samba");
genreIdToString.put(new Long(115), R)859         genreIdToString.put(new Long(115), "Folklore");
genreIdToString.put(new Long(116), R)860         genreIdToString.put(new Long(116), "Ballad");
genreIdToString.put(new Long(117), R)861         genreIdToString.put(new Long(117), "Power Ballad");
genreIdToString.put(new Long(118), R)862         genreIdToString.put(new Long(118), "Rhythmic Soul");
genreIdToString.put(new Long(119), R)863         genreIdToString.put(new Long(119), "Freestyle");
genreIdToString.put(new Long(120), R)864         genreIdToString.put(new Long(120), "Duet");
genreIdToString.put(new Long(121), R)865         genreIdToString.put(new Long(121), "Punk Rock");
genreIdToString.put(new Long(122), R)866         genreIdToString.put(new Long(122), "Drum Solo");
genreIdToString.put(new Long(123), R)867         genreIdToString.put(new Long(123), "Acapella");
genreIdToString.put(new Long(124), R)868         genreIdToString.put(new Long(124), "Euro-House");
genreIdToString.put(new Long(125), R)869         genreIdToString.put(new Long(125), "Dance Hall");
870 
871         // ID's are typed as Integer because the combo box expects it
872         Long lkey;
873         iterator = genreIdToString.keySet().iterator();
874         while (iterator.hasNext()) {
875             lkey = (Long) iterator.next();
876             value = (String) genreIdToString.get(lkey);
genreStringToId.put(value, lkey)877             genreStringToId.put(value, lkey);
878         }
879 
880         // MPEG-1, Layer I (E)
bitrate.put(new Long(0x1E), new Long(32))881         bitrate.put(new Long(0x1E), new Long(32));
bitrate.put(new Long(0x2E), new Long(64))882         bitrate.put(new Long(0x2E), new Long(64));
bitrate.put(new Long(0x3E), new Long(96))883         bitrate.put(new Long(0x3E), new Long(96));
bitrate.put(new Long(0x4E), new Long(128))884         bitrate.put(new Long(0x4E), new Long(128));
bitrate.put(new Long(0x5E), new Long(160))885         bitrate.put(new Long(0x5E), new Long(160));
bitrate.put(new Long(0x6E), new Long(192))886         bitrate.put(new Long(0x6E), new Long(192));
bitrate.put(new Long(0x7E), new Long(224))887         bitrate.put(new Long(0x7E), new Long(224));
bitrate.put(new Long(0x8E), new Long(256))888         bitrate.put(new Long(0x8E), new Long(256));
bitrate.put(new Long(0x9E), new Long(288))889         bitrate.put(new Long(0x9E), new Long(288));
bitrate.put(new Long(0xAE), new Long(320))890         bitrate.put(new Long(0xAE), new Long(320));
bitrate.put(new Long(0xBE), new Long(352))891         bitrate.put(new Long(0xBE), new Long(352));
bitrate.put(new Long(0xCE), new Long(384))892         bitrate.put(new Long(0xCE), new Long(384));
bitrate.put(new Long(0xDE), new Long(416))893         bitrate.put(new Long(0xDE), new Long(416));
bitrate.put(new Long(0xEE), new Long(448))894         bitrate.put(new Long(0xEE), new Long(448));
895 
896         // MPEG-1, Layer II (C)
bitrate.put(new Long(0x1C), new Long(32))897         bitrate.put(new Long(0x1C), new Long(32));
bitrate.put(new Long(0x2C), new Long(48))898         bitrate.put(new Long(0x2C), new Long(48));
bitrate.put(new Long(0x3C), new Long(56))899         bitrate.put(new Long(0x3C), new Long(56));
bitrate.put(new Long(0x4C), new Long(64))900         bitrate.put(new Long(0x4C), new Long(64));
bitrate.put(new Long(0x5C), new Long(80))901         bitrate.put(new Long(0x5C), new Long(80));
bitrate.put(new Long(0x6C), new Long(96))902         bitrate.put(new Long(0x6C), new Long(96));
bitrate.put(new Long(0x7C), new Long(112))903         bitrate.put(new Long(0x7C), new Long(112));
bitrate.put(new Long(0x8C), new Long(128))904         bitrate.put(new Long(0x8C), new Long(128));
bitrate.put(new Long(0x9C), new Long(160))905         bitrate.put(new Long(0x9C), new Long(160));
bitrate.put(new Long(0xAC), new Long(192))906         bitrate.put(new Long(0xAC), new Long(192));
bitrate.put(new Long(0xBC), new Long(224))907         bitrate.put(new Long(0xBC), new Long(224));
bitrate.put(new Long(0xCC), new Long(256))908         bitrate.put(new Long(0xCC), new Long(256));
bitrate.put(new Long(0xDC), new Long(320))909         bitrate.put(new Long(0xDC), new Long(320));
bitrate.put(new Long(0xEC), new Long(384))910         bitrate.put(new Long(0xEC), new Long(384));
911 
912         // MPEG-1, Layer III (A)
bitrate.put(new Long(0x1A), new Long(32))913         bitrate.put(new Long(0x1A), new Long(32));
bitrate.put(new Long(0x2A), new Long(40))914         bitrate.put(new Long(0x2A), new Long(40));
bitrate.put(new Long(0x3A), new Long(48))915         bitrate.put(new Long(0x3A), new Long(48));
bitrate.put(new Long(0x4A), new Long(56))916         bitrate.put(new Long(0x4A), new Long(56));
bitrate.put(new Long(0x5A), new Long(64))917         bitrate.put(new Long(0x5A), new Long(64));
bitrate.put(new Long(0x6A), new Long(80))918         bitrate.put(new Long(0x6A), new Long(80));
bitrate.put(new Long(0x7A), new Long(96))919         bitrate.put(new Long(0x7A), new Long(96));
bitrate.put(new Long(0x8A), new Long(112))920         bitrate.put(new Long(0x8A), new Long(112));
bitrate.put(new Long(0x9A), new Long(128))921         bitrate.put(new Long(0x9A), new Long(128));
bitrate.put(new Long(0xAA), new Long(160))922         bitrate.put(new Long(0xAA), new Long(160));
bitrate.put(new Long(0xBA), new Long(192))923         bitrate.put(new Long(0xBA), new Long(192));
bitrate.put(new Long(0xCA), new Long(224))924         bitrate.put(new Long(0xCA), new Long(224));
bitrate.put(new Long(0xDA), new Long(256))925         bitrate.put(new Long(0xDA), new Long(256));
bitrate.put(new Long(0xEA), new Long(320))926         bitrate.put(new Long(0xEA), new Long(320));
927 
928         // MPEG-2, Layer I (6)
bitrate.put(new Long(0x16), new Long(32))929         bitrate.put(new Long(0x16), new Long(32));
bitrate.put(new Long(0x26), new Long(48))930         bitrate.put(new Long(0x26), new Long(48));
bitrate.put(new Long(0x36), new Long(56))931         bitrate.put(new Long(0x36), new Long(56));
bitrate.put(new Long(0x46), new Long(64))932         bitrate.put(new Long(0x46), new Long(64));
bitrate.put(new Long(0x56), new Long(80))933         bitrate.put(new Long(0x56), new Long(80));
bitrate.put(new Long(0x66), new Long(96))934         bitrate.put(new Long(0x66), new Long(96));
bitrate.put(new Long(0x76), new Long(112))935         bitrate.put(new Long(0x76), new Long(112));
bitrate.put(new Long(0x86), new Long(128))936         bitrate.put(new Long(0x86), new Long(128));
bitrate.put(new Long(0x96), new Long(144))937         bitrate.put(new Long(0x96), new Long(144));
bitrate.put(new Long(0xA6), new Long(160))938         bitrate.put(new Long(0xA6), new Long(160));
bitrate.put(new Long(0xB6), new Long(176))939         bitrate.put(new Long(0xB6), new Long(176));
bitrate.put(new Long(0xC6), new Long(192))940         bitrate.put(new Long(0xC6), new Long(192));
bitrate.put(new Long(0xD6), new Long(224))941         bitrate.put(new Long(0xD6), new Long(224));
bitrate.put(new Long(0xE6), new Long(256))942         bitrate.put(new Long(0xE6), new Long(256));
943 
944         // MPEG-2, Layer II (4)
bitrate.put(new Long(0x14), new Long(8))945         bitrate.put(new Long(0x14), new Long(8));
bitrate.put(new Long(0x24), new Long(16))946         bitrate.put(new Long(0x24), new Long(16));
bitrate.put(new Long(0x34), new Long(24))947         bitrate.put(new Long(0x34), new Long(24));
bitrate.put(new Long(0x44), new Long(32))948         bitrate.put(new Long(0x44), new Long(32));
bitrate.put(new Long(0x54), new Long(40))949         bitrate.put(new Long(0x54), new Long(40));
bitrate.put(new Long(0x64), new Long(48))950         bitrate.put(new Long(0x64), new Long(48));
bitrate.put(new Long(0x74), new Long(56))951         bitrate.put(new Long(0x74), new Long(56));
bitrate.put(new Long(0x84), new Long(64))952         bitrate.put(new Long(0x84), new Long(64));
bitrate.put(new Long(0x94), new Long(80))953         bitrate.put(new Long(0x94), new Long(80));
bitrate.put(new Long(0xA4), new Long(96))954         bitrate.put(new Long(0xA4), new Long(96));
bitrate.put(new Long(0xB4), new Long(112))955         bitrate.put(new Long(0xB4), new Long(112));
bitrate.put(new Long(0xC4), new Long(128))956         bitrate.put(new Long(0xC4), new Long(128));
bitrate.put(new Long(0xD4), new Long(144))957         bitrate.put(new Long(0xD4), new Long(144));
bitrate.put(new Long(0xE4), new Long(160))958         bitrate.put(new Long(0xE4), new Long(160));
959 
960         // MPEG-2, Layer III (2)
bitrate.put(new Long(0x12), new Long(8))961         bitrate.put(new Long(0x12), new Long(8));
bitrate.put(new Long(0x22), new Long(16))962         bitrate.put(new Long(0x22), new Long(16));
bitrate.put(new Long(0x32), new Long(24))963         bitrate.put(new Long(0x32), new Long(24));
bitrate.put(new Long(0x42), new Long(32))964         bitrate.put(new Long(0x42), new Long(32));
bitrate.put(new Long(0x52), new Long(40))965         bitrate.put(new Long(0x52), new Long(40));
bitrate.put(new Long(0x62), new Long(48))966         bitrate.put(new Long(0x62), new Long(48));
bitrate.put(new Long(0x72), new Long(56))967         bitrate.put(new Long(0x72), new Long(56));
bitrate.put(new Long(0x82), new Long(64))968         bitrate.put(new Long(0x82), new Long(64));
bitrate.put(new Long(0x92), new Long(80))969         bitrate.put(new Long(0x92), new Long(80));
bitrate.put(new Long(0xA2), new Long(96))970         bitrate.put(new Long(0xA2), new Long(96));
bitrate.put(new Long(0xB2), new Long(112))971         bitrate.put(new Long(0xB2), new Long(112));
bitrate.put(new Long(0xC2), new Long(128))972         bitrate.put(new Long(0xC2), new Long(128));
bitrate.put(new Long(0xD2), new Long(144))973         bitrate.put(new Long(0xD2), new Long(144));
bitrate.put(new Long(0xE2), new Long(160))974         bitrate.put(new Long(0xE2), new Long(160));
975         languageIdToString.put("aar", "Afar");
976         languageIdToString.put("abk", "Abkhazian");
977         languageIdToString.put("ace", "Achinese");
978         languageIdToString.put("ach", "Acoli");
979         languageIdToString.put("ada", "Adangme");
980         languageIdToString.put("afa", "Afro-Asiatic (Other)");
981         languageIdToString.put("afh", "Afrihili");
982         languageIdToString.put("afr", "Afrikaans");
983         languageIdToString.put("aka", "Akan");
984         languageIdToString.put("akk", "Akkadian");
985         languageIdToString.put("alb", "Albanian");
986         languageIdToString.put("ale", "Aleut");
987         languageIdToString.put("alg", "Algonquian languages");
988         languageIdToString.put("amh", "Amharic");
989         languageIdToString.put("ang", "English, Old (ca.450-1100)");
990         languageIdToString.put("apa", "Apache languages");
991         languageIdToString.put("ara", "Arabic");
992         languageIdToString.put("arc", "Aramaic");
993         languageIdToString.put("arm", "Armenian");
994         languageIdToString.put("arn", "Araucanian");
995         languageIdToString.put("arp", "Arapaho");
996         languageIdToString.put("art", "Artificial (Other)");
997         languageIdToString.put("arw", "Arawak");
998         languageIdToString.put("asm", "Assamese");
999         languageIdToString.put("ast", "Asturian; Bable");
1000         languageIdToString.put("ath", "Athapascan languages");
1001         languageIdToString.put("aus", "Australian languages");
1002         languageIdToString.put("ava", "Avaric");
1003         languageIdToString.put("ave", "Avestan");
1004         languageIdToString.put("awa", "Awadhi");
1005         languageIdToString.put("aym", "Aymara");
1006         languageIdToString.put("aze", "Azerbaijani");
1007         languageIdToString.put("bad", "Banda");
1008         languageIdToString.put("bai", "Bamileke languages");
1009         languageIdToString.put("bak", "Bashkir");
1010         languageIdToString.put("bal", "Baluchi");
1011         languageIdToString.put("bam", "Bambara");
1012         languageIdToString.put("ban", "Balinese");
1013         languageIdToString.put("baq", "Basque");
1014         languageIdToString.put("bas", "Basa");
1015         languageIdToString.put("bat", "Baltic (Other)");
1016         languageIdToString.put("bej", "Beja");
1017         languageIdToString.put("bel", "Belarusian");
1018         languageIdToString.put("bem", "Bemba");
1019         languageIdToString.put("ben", "Bengali");
1020         languageIdToString.put("ber", "Berber (Other)");
1021         languageIdToString.put("bho", "Bhojpuri");
1022         languageIdToString.put("bih", "Bihari");
1023         languageIdToString.put("bik", "Bikol");
1024         languageIdToString.put("bin", "Bini");
1025         languageIdToString.put("bis", "Bislama");
1026         languageIdToString.put("bla", "Siksika");
1027         languageIdToString.put("bnt", "Bantu (Other)");
1028         languageIdToString.put("bod", "Tibetan");
1029         languageIdToString.put("bos", "Bosnian");
1030         languageIdToString.put("bra", "Braj");
1031         languageIdToString.put("bre", "Breton");
1032         languageIdToString.put("btk", "Batak (Indonesia)");
1033         languageIdToString.put("bua", "Buriat");
1034         languageIdToString.put("bug", "Buginese");
1035         languageIdToString.put("bul", "Bulgarian");
1036         languageIdToString.put("bur", "Burmese");
1037         languageIdToString.put("cad", "Caddo");
1038         languageIdToString.put("cai", "Central American Indian (Other)");
1039         languageIdToString.put("car", "Carib");
1040         languageIdToString.put("cat", "Catalan");
1041         languageIdToString.put("cau", "Caucasian (Other)");
1042         languageIdToString.put("ceb", "Cebuano");
1043         languageIdToString.put("cel", "Celtic (Other)");
1044         languageIdToString.put("ces", "Czech");
1045         languageIdToString.put("cha", "Chamorro");
1046         languageIdToString.put("chb", "Chibcha");
1047         languageIdToString.put("che", "Chechen");
1048         languageIdToString.put("chg", "Chagatai");
1049         languageIdToString.put("chi", "Chinese");
1050         languageIdToString.put("chk", "Chuukese");
1051         languageIdToString.put("chm", "Mari");
1052         languageIdToString.put("chn", "Chinook jargon");
1053         languageIdToString.put("cho", "Choctaw");
1054         languageIdToString.put("chp", "Chipewyan");
1055         languageIdToString.put("chr", "Cherokee");
1056         languageIdToString.put("chu",
1057                                "Church Slavic; Old Slavonic; Old Church Slavonic; Church Slavonic; Old Bulgarian");
1058         languageIdToString.put("chv", "Chuvash");
1059         languageIdToString.put("chy", "Cheyenne");
1060         languageIdToString.put("cmc", "Chamic languages");
1061         languageIdToString.put("cop", "Coptic");
1062         languageIdToString.put("cor", "Cornish");
1063         languageIdToString.put("cos", "Corsican");
1064         languageIdToString.put("cpe", "Creoles and pidgins, English based (Other)");
1065         languageIdToString.put("cpf", "Creoles and pidgins, French-based (Other)");
1066         languageIdToString.put("cpp", "Creoles and pidgins,");
1067         languageIdToString.put("cre", "Cree");
1068         languageIdToString.put("crp", "Creoles and pidgins (Other)");
1069         languageIdToString.put("cus", "Cushitic (Other)");
1070         languageIdToString.put("cym", "Welsh");
1071         languageIdToString.put("cze", "Czech");
1072         languageIdToString.put("dak", "Dakota");
1073         languageIdToString.put("dan", "Danish");
1074         languageIdToString.put("day", "Dayak");
1075         languageIdToString.put("del", "Delaware");
1076         languageIdToString.put("den", "Slave (Athapascan)");
1077         languageIdToString.put("deu", "German");
1078         languageIdToString.put("dgr", "Dogrib");
1079         languageIdToString.put("din", "Dinka");
1080         languageIdToString.put("div", "Divehi");
1081         languageIdToString.put("doi", "Dogri");
1082         languageIdToString.put("dra", "Dravidian (Other)");
1083         languageIdToString.put("dua", "Duala");
1084         languageIdToString.put("dum", "Dutch, Middle (ca.1050-1350)");
1085         languageIdToString.put("dut", "Dutch");
1086         languageIdToString.put("dyu", "Dyula");
1087         languageIdToString.put("dzo", "Dzongkha");
1088         languageIdToString.put("efi", "Efik");
1089         languageIdToString.put("egy", "Egyptian (Ancient)");
1090         languageIdToString.put("eka", "Ekajuk");
1091         languageIdToString.put("ell", "Greek, Modern (1453-)");
1092         languageIdToString.put("elx", "Elamite");
1093         languageIdToString.put("eng", "English");
1094         languageIdToString.put("enm", "English, Middle (1100-1500)");
1095         languageIdToString.put("epo", "Esperanto");
1096         languageIdToString.put("est", "Estonian");
1097         languageIdToString.put("eus", "Basque");
1098         languageIdToString.put("ewe", "Ewe");
1099         languageIdToString.put("ewo", "Ewondo");
1100         languageIdToString.put("fan", "Fang");
1101         languageIdToString.put("fao", "Faroese");
1102         languageIdToString.put("fas", "Persian");
1103         languageIdToString.put("fat", "Fanti");
1104         languageIdToString.put("fij", "Fijian");
1105         languageIdToString.put("fin", "Finnish");
1106         languageIdToString.put("fiu", "Finno-Ugrian (Other)");
1107         languageIdToString.put("fon", "Fon");
1108         languageIdToString.put("fra", "French");
1109         languageIdToString.put("frm", "French, Middle (ca.1400-1800)");
1110         languageIdToString.put("fro", "French, Old (842-ca.1400)");
1111         languageIdToString.put("fry", "Frisian");
1112         languageIdToString.put("ful", "Fulah");
1113         languageIdToString.put("fur", "Friulian");
1114         languageIdToString.put("gaa", "Ga");
1115         languageIdToString.put("gay", "Gayo");
1116         languageIdToString.put("gba", "Gbaya");
1117         languageIdToString.put("gem", "Germanic (Other)");
1118         languageIdToString.put("geo", "Georgian");
1119         languageIdToString.put("ger", "German");
1120         languageIdToString.put("gez", "Geez");
1121         languageIdToString.put("gil", "Gilbertese");
1122         languageIdToString.put("gla", "Gaelic; Scottish Gaelic");
1123         languageIdToString.put("gle", "Irish");
1124         languageIdToString.put("glg", "Gallegan");
1125         languageIdToString.put("glv", "Manx");
1126         languageIdToString.put("gmh", "German, Middle High (ca.1050-1500)");
1127         languageIdToString.put("goh", "German, Old High (ca.750-1050)");
1128         languageIdToString.put("gon", "Gondi");
1129         languageIdToString.put("gor", "Gorontalo");
1130         languageIdToString.put("got", "Gothic");
1131         languageIdToString.put("grb", "Grebo");
1132         languageIdToString.put("grc", "Greek, Ancient (to 1453)");
1133         languageIdToString.put("gre", "Greek, Modern (1453-)");
1134         languageIdToString.put("grn", "Guarani");
1135         languageIdToString.put("guj", "Gujarati");
1136         languageIdToString.put("gwi", "Gwich�in");
1137         languageIdToString.put("hai", "Haida");
1138         languageIdToString.put("hau", "Hausa");
1139         languageIdToString.put("haw", "Hawaiian");
1140         languageIdToString.put("heb", "Hebrew");
1141         languageIdToString.put("her", "Herero");
1142         languageIdToString.put("hil", "Hiligaynon");
1143         languageIdToString.put("him", "Himachali");
1144         languageIdToString.put("hin", "Hindi");
1145         languageIdToString.put("hit", "Hittite");
1146         languageIdToString.put("hmn", "Hmong");
1147         languageIdToString.put("hmo", "Hiri Motu");
1148         languageIdToString.put("hrv", "Croatian");
1149         languageIdToString.put("hun", "Hungarian");
1150         languageIdToString.put("hup", "Hupa");
1151         languageIdToString.put("hye", "Armenian");
1152         languageIdToString.put("iba", "Iban");
1153         languageIdToString.put("ibo", "Igbo");
1154         languageIdToString.put("ice", "Icelandic");
1155         languageIdToString.put("ido", "Ido");
1156         languageIdToString.put("ijo", "Ijo");
1157         languageIdToString.put("iku", "Inuktitut");
1158         languageIdToString.put("ile", "Interlingue");
1159         languageIdToString.put("ilo", "Iloko");
1160         languageIdToString.put("ina", "Interlingua (International Auxiliary)");
1161         languageIdToString.put("inc", "Indic (Other)");
1162         languageIdToString.put("ind", "Indonesian");
1163         languageIdToString.put("ine", "Indo-European (Other)");
1164         languageIdToString.put("ipk", "Inupiaq");
1165         languageIdToString.put("ira", "Iranian (Other)");
1166         languageIdToString.put("iro", "Iroquoian languages");
1167         languageIdToString.put("isl", "Icelandic");
1168         languageIdToString.put("ita", "Italian");
1169         languageIdToString.put("jav", "Javanese");
1170         languageIdToString.put("jpn", "Japanese");
1171         languageIdToString.put("jpr", "Judeo-Persian");
1172         languageIdToString.put("jrb", "Judeo-Arabic");
1173         languageIdToString.put("kaa", "Kara-Kalpak");
1174         languageIdToString.put("kab", "Kabyle");
1175         languageIdToString.put("kac", "Kachin");
1176         languageIdToString.put("kal", "Kalaallisut");
1177         languageIdToString.put("kam", "Kamba");
1178         languageIdToString.put("kan", "Kannada");
1179         languageIdToString.put("kar", "Karen");
1180         languageIdToString.put("kas", "Kashmiri");
1181         languageIdToString.put("kat", "Georgian");
1182         languageIdToString.put("kau", "Kanuri");
1183         languageIdToString.put("kaw", "Kawi");
1184         languageIdToString.put("kaz", "Kazakh");
1185         languageIdToString.put("kha", "Khasi");
1186         languageIdToString.put("khi", "Khoisan (Other)");
1187         languageIdToString.put("khm", "Khmer");
1188         languageIdToString.put("kho", "Khotanese");
1189         languageIdToString.put("kik", "Kikuyu; Gikuyu");
1190         languageIdToString.put("kin", "Kinyarwanda");
1191         languageIdToString.put("kir", "Kirghiz");
1192         languageIdToString.put("kmb", "Kimbundu");
1193         languageIdToString.put("kok", "Konkani");
1194         languageIdToString.put("kom", "Komi");
1195         languageIdToString.put("kon", "Kongo");
1196         languageIdToString.put("kor", "Korean");
1197         languageIdToString.put("kos", "Kosraean");
1198         languageIdToString.put("kpe", "Kpelle");
1199         languageIdToString.put("kro", "Kru");
1200         languageIdToString.put("kru", "Kurukh");
1201         languageIdToString.put("kua", "Kuanyama; Kwanyama");
1202         languageIdToString.put("kum", "Kumyk");
1203         languageIdToString.put("kur", "Kurdish");
1204         languageIdToString.put("kut", "Kutenai");
1205         languageIdToString.put("lad", "Ladino");
1206         languageIdToString.put("lah", "Lahnda");
1207         languageIdToString.put("lam", "Lamba");
1208         languageIdToString.put("lao", "Lao");
1209         languageIdToString.put("lat", "Latin");
1210         languageIdToString.put("lav", "Latvian");
1211         languageIdToString.put("lez", "Lezghian");
1212         languageIdToString.put("lin", "Lingala");
1213         languageIdToString.put("lit", "Lithuanian");
1214         languageIdToString.put("lol", "Mongo");
1215         languageIdToString.put("loz", "Lozi");
1216         languageIdToString.put("ltz", "Luxembourgish; Letzeburgesch");
1217         languageIdToString.put("lua", "Luba-Lulua");
1218         languageIdToString.put("lub", "Luba-Katanga");
1219         languageIdToString.put("lug", "Ganda");
1220         languageIdToString.put("lui", "Luiseno");
1221         languageIdToString.put("lun", "Lunda");
1222         languageIdToString.put("luo", "Luo (Kenya and Tanzania)");
1223         languageIdToString.put("lus", "lushai");
1224         languageIdToString.put("mac", "Macedonian");
1225         languageIdToString.put("mad", "Madurese");
1226         languageIdToString.put("mag", "Magahi");
1227         languageIdToString.put("mah", "Marshallese");
1228         languageIdToString.put("mai", "Maithili");
1229         languageIdToString.put("mak", "Makasar");
1230         languageIdToString.put("mal", "Malayalam");
1231         languageIdToString.put("man", "Mandingo");
1232         languageIdToString.put("mao", "Maori");
1233         languageIdToString.put("map", "Austronesian (Other)");
1234         languageIdToString.put("mar", "Marathi");
1235         languageIdToString.put("mas", "Masai");
1236         languageIdToString.put("may", "Malay");
1237         languageIdToString.put("mdr", "Mandar");
1238         languageIdToString.put("men", "Mende");
1239         languageIdToString.put("mga", "Irish, Middle (900-1200)");
1240         languageIdToString.put("mic", "Micmac");
1241         languageIdToString.put("min", "Minangkabau");
1242         languageIdToString.put("mis", "Miscellaneous languages");
1243         languageIdToString.put("mkd", "Macedonian");
1244         languageIdToString.put("mkh", "Mon-Khmer (Other)");
1245         languageIdToString.put("mlg", "Malagasy");
1246         languageIdToString.put("mlt", "Maltese");
1247         languageIdToString.put("mnc", "Manchu");
1248         languageIdToString.put("mni", "Manipuri");
1249         languageIdToString.put("mno", "Manobo languages");
1250         languageIdToString.put("moh", "Mohawk");
1251         languageIdToString.put("mol", "Moldavian");
1252         languageIdToString.put("mon", "Mongolian");
1253         languageIdToString.put("mos", "Mossi");
1254         languageIdToString.put("mri", "Maori");
1255         languageIdToString.put("msa", "Malay");
1256         languageIdToString.put("mul", "Multiple languages");
1257         languageIdToString.put("mun", "Munda languages");
1258         languageIdToString.put("mus", "Creek");
1259         languageIdToString.put("mwr", "Marwari");
1260         languageIdToString.put("mya", "Burmese");
1261         languageIdToString.put("myn", "Mayan languages");
1262         languageIdToString.put("nah", "Nahuatl");
1263         languageIdToString.put("nai", "North American Indian");
1264         languageIdToString.put("nau", "Nauru");
1265         languageIdToString.put("nav", "Navajo; Navaho");
1266         languageIdToString.put("nbl", "South Ndebele");
1267         languageIdToString.put("nde", "North Ndebele");
1268         languageIdToString.put("ndo", "Ndonga");
1269         languageIdToString.put("nds", "Low German; Low Saxon; German, Low; Saxon, Low");
1270         languageIdToString.put("nep", "Nepali");
1271         languageIdToString.put("new", "Newari");
1272         languageIdToString.put("nia", "Nias");
1273         languageIdToString.put("nic", "Niger-Kordofanian (Other)");
1274         languageIdToString.put("niu", "Niuean");
1275         languageIdToString.put("nld", "Dutch");
1276         languageIdToString.put("nno", "Norwegian Nynorsk");
1277         languageIdToString.put("nob", "Norwegian Bokm�l");
1278         languageIdToString.put("non", "Norse, Old");
1279         languageIdToString.put("nor", "Norwegian");
1280         languageIdToString.put("nso", "Sotho, Northern");
1281         languageIdToString.put("nub", "Nubian languages");
1282         languageIdToString.put("nya", "Chichewa; Chewa; Nyanja");
1283         languageIdToString.put("nym", "Nyamwezi");
1284         languageIdToString.put("nyn", "Nyankole");
1285         languageIdToString.put("nyo", "Nyoro");
1286         languageIdToString.put("nzi", "Nzima");
1287         languageIdToString.put("oci", "Occitan (post 1500); Proven�al");
1288         languageIdToString.put("oji", "Ojibwa");
1289         languageIdToString.put("ori", "Oriya");
1290         languageIdToString.put("orm", "Oromo");
1291         languageIdToString.put("osa", "Osage");
1292         languageIdToString.put("oss", "Ossetian; Ossetic");
1293         languageIdToString.put("ota", "Turkish, Ottoman (1500-1928)");
1294         languageIdToString.put("oto", "Otomian languages");
1295         languageIdToString.put("paa", "Papuan (Other)");
1296         languageIdToString.put("pag", "Pangasinan");
1297         languageIdToString.put("pal", "Pahlavi");
1298         languageIdToString.put("pam", "Pampanga");
1299         languageIdToString.put("pan", "Panjabi");
1300         languageIdToString.put("pap", "Papiamento");
1301         languageIdToString.put("pau", "Palauan");
1302         languageIdToString.put("peo", "Persian, Old (ca.600-400 B.C.)");
1303         languageIdToString.put("per", "Persian");
1304         languageIdToString.put("per", "Persian");
1305         languageIdToString.put("phi", "Philippine (Other)");
1306         languageIdToString.put("phn", "Phoenician");
1307         languageIdToString.put("pli", "Pali");
1308         languageIdToString.put("pol", "Polish");
1309         languageIdToString.put("pon", "Pohnpeian");
1310         languageIdToString.put("por", "Portuguese");
1311         languageIdToString.put("pra", "Prakrit languages");
1312         languageIdToString.put("pro", "Proven�al, Old (to 1500)");
1313         languageIdToString.put("pus", "Pushto");
1314         languageIdToString.put("que", "Quechua");
1315         languageIdToString.put("raj", "Rajasthani");
1316         languageIdToString.put("rap", "Rapanui");
1317         languageIdToString.put("rar", "Rarotongan");
1318         languageIdToString.put("roa", "Romance (Other)");
1319         languageIdToString.put("roh", "Raeto-Romance");
1320         languageIdToString.put("rom", "Romany");
1321         languageIdToString.put("ron", "Romanian");
1322         languageIdToString.put("rum", "Romanian");
1323         languageIdToString.put("run", "Rundi");
1324         languageIdToString.put("rus", "Russian");
1325         languageIdToString.put("sad", "Sandawe");
1326         languageIdToString.put("sag", "Sango");
1327         languageIdToString.put("sah", "Yakut");
1328         languageIdToString.put("sai", "South American Indian (Other)");
1329         languageIdToString.put("sal", "Salishan languages");
1330         languageIdToString.put("sam", "Samaritan Aramaic");
1331         languageIdToString.put("san", "Sanskrit");
1332         languageIdToString.put("sas", "Sasak");
1333         languageIdToString.put("sat", "Santali");
1334         languageIdToString.put("scc", "Serbian");
1335         languageIdToString.put("sco", "Scots");
1336         languageIdToString.put("scr", "Croatian");
1337         languageIdToString.put("sel", "Selkup");
1338         languageIdToString.put("sem", "Semitic (Other)");
1339         languageIdToString.put("sga", "Irish, Old (to 900)");
1340         languageIdToString.put("sgn", "Sign languages");
1341         languageIdToString.put("shn", "Shan");
1342         languageIdToString.put("sid", "Sidamo");
1343         languageIdToString.put("sin", "Sinhales");
1344         languageIdToString.put("sio", "Siouan languages");
1345         languageIdToString.put("sit", "Sino-Tibetan (Other)");
1346         languageIdToString.put("sla", "Slavic (Other)");
1347         languageIdToString.put("slk", "Slovak");
1348         languageIdToString.put("slo", "Slovak");
1349         languageIdToString.put("slv", "Slovenian");
1350         languageIdToString.put("sma", "Southern Sami");
1351         languageIdToString.put("sme", "Northern Sami");
1352         languageIdToString.put("smi", "Sami languages (Other)");
1353         languageIdToString.put("smj", "Lule Sami");
1354         languageIdToString.put("smn", "Inari Sami");
1355         languageIdToString.put("smo", "Samoan");
1356         languageIdToString.put("sms", "Skolt Sami");
1357         languageIdToString.put("sna", "Shona");
1358         languageIdToString.put("snd", "Sindhi");
1359         languageIdToString.put("snk", "Soninke");
1360         languageIdToString.put("sog", "Sogdian");
1361         languageIdToString.put("som", "Somali");
1362         languageIdToString.put("son", "Songhai");
1363         languageIdToString.put("sot", "Sotho, Southern");
1364         languageIdToString.put("spa", "Spanish; Castilia");
1365         languageIdToString.put("sqi", "Albanian");
1366         languageIdToString.put("srd", "Sardinian");
1367         languageIdToString.put("srp", "Serbian");
1368         languageIdToString.put("srr", "Serer");
1369         languageIdToString.put("ssa", "Nilo-Saharan (Other)");
1370         languageIdToString.put("sus", "Susu");
1371         languageIdToString.put("sux", "Sumerian");
1372         languageIdToString.put("swa", "Swahili");
1373         languageIdToString.put("swe", "Swedish");
1374         languageIdToString.put("syr", "Syriac");
1375         languageIdToString.put("tah", "Tahitian");
1376         languageIdToString.put("tai", "Tai (Other)");
1377         languageIdToString.put("tam", "Tamil");
1378         languageIdToString.put("tat", "Tatar");
1379         languageIdToString.put("tel", "Telugu");
1380         languageIdToString.put("tem", "Timne");
1381         languageIdToString.put("ter", "Tereno");
1382         languageIdToString.put("tet", "Tetum");
1383         languageIdToString.put("tgk", "Tajik");
1384         languageIdToString.put("tgl", "Tagalog");
1385         languageIdToString.put("tha", "Thai");
1386         languageIdToString.put("tib", "Tibetan");
1387         languageIdToString.put("tig", "Tigre");
1388         languageIdToString.put("tir", "Tigrinya");
1389         languageIdToString.put("tiv", "Tiv");
1390         languageIdToString.put("tkl", "Tokelau");
1391         languageIdToString.put("tli", "Tlingit");
1392         languageIdToString.put("tmh", "Tamashek");
1393         languageIdToString.put("tog", "Tonga (Nyasa)");
1394         languageIdToString.put("ton", "Tonga (Tonga Islands)");
1395         languageIdToString.put("tpi", "Tok Pisin");
1396         languageIdToString.put("tsi", "Tsimshian");
1397         languageIdToString.put("tsn", "Tswana");
1398         languageIdToString.put("tso", "Tsonga");
1399         languageIdToString.put("tuk", "Turkmen");
1400         languageIdToString.put("tum", "Tumbuka");
1401         languageIdToString.put("tup", "Tupi languages");
1402         languageIdToString.put("tur", "Turkish");
1403         languageIdToString.put("tut", "Altaic (Other)");
1404         languageIdToString.put("tvl", "Tuvalu");
1405         languageIdToString.put("twi", "Twi");
1406         languageIdToString.put("tyv", "Tuvinian");
1407         languageIdToString.put("uga", "Ugaritic");
1408         languageIdToString.put("uig", "Uighur");
1409         languageIdToString.put("ukr", "Ukrainian");
1410         languageIdToString.put("umb", "Umbundu");
1411         languageIdToString.put("und", "Undetermined");
1412         languageIdToString.put("urd", "Urdu");
1413         languageIdToString.put("uzb", "Uzbek");
1414         languageIdToString.put("vai", "Vai");
1415         languageIdToString.put("ven", "Venda");
1416         languageIdToString.put("vie", "Vietnamese");
1417         languageIdToString.put("vol", "Volap�k");
1418         languageIdToString.put("vot", "Votic");
1419         languageIdToString.put("wak", "Wakashan languages");
1420         languageIdToString.put("wal", "Walamo");
1421         languageIdToString.put("war", "Waray");
1422         languageIdToString.put("was", "Washo");
1423         languageIdToString.put("wel", "Welsh");
1424         languageIdToString.put("wen", "Sorbian languages");
1425         languageIdToString.put("wln", "Walloon");
1426         languageIdToString.put("wol", "Wolof");
1427         languageIdToString.put("xho", "Xhosa");
1428         languageIdToString.put("yao", "Yao");
1429         languageIdToString.put("yap", "Yapese");
1430         languageIdToString.put("yid", "Yiddish");
1431         languageIdToString.put("yor", "Yoruba");
1432         languageIdToString.put("ypk", "Yupik languages");
1433         languageIdToString.put("zap", "Zapotec");
1434         languageIdToString.put("zen", "Zenaga");
1435         languageIdToString.put("zha", "Zhuang; Chuang");
1436         languageIdToString.put("zho", "Chinese");
1437         languageIdToString.put("znd", "Zande");
1438         languageIdToString.put("zul", "Zulu");
1439         languageIdToString.put("zun", "Zuni");
1440         iterator = languageIdToString.keySet().iterator();
1441         while (iterator.hasNext()) {
1442             key = (String) iterator.next();
1443             value = (String) languageIdToString.get(key);
languageStringToId.put(value, key)1444             languageStringToId.put(value, key);
1445         }
textEncodingIdToString.put(new Long(0), R)1446         textEncodingIdToString.put(new Long(0), "ISO-8859-1");
textEncodingIdToString.put(new Long(1), R)1447         textEncodingIdToString.put(new Long(1), "UTF-16");
textEncodingIdToString.put(new Long(2), R)1448         textEncodingIdToString.put(new Long(2), "UTF-16BE");
textEncodingIdToString.put(new Long(3), R)1449         textEncodingIdToString.put(new Long(3), "UTF-8");
1450         iterator = textEncodingIdToString.keySet().iterator();
1451         while (iterator.hasNext()) {
1452             lkey = (Long) iterator.next();
1453             value = (String) textEncodingIdToString.get(lkey);
textEncodingStringToId.put(value, lkey)1454             textEncodingStringToId.put(value, lkey);
1455         }
interpolationMethodIdToString.put(new Long(0), R)1456         interpolationMethodIdToString.put(new Long(0), "Band");
interpolationMethodIdToString.put(new Long(1), R)1457         interpolationMethodIdToString.put(new Long(1), "Linear");
1458         iterator = interpolationMethodIdToString.keySet().iterator();
1459         while (iterator.hasNext()) {
1460             lkey = (Long) iterator.next();
1461             value = (String) interpolationMethodIdToString.get(lkey);
interpolationMethodStringToId.put(value, lkey)1462             interpolationMethodStringToId.put(value, lkey);
1463         }
pictureTypeIdToString.put(new Long(0), R)1464         pictureTypeIdToString.put(new Long(0), "Other");
pictureTypeIdToString.put(new Long(1), R)1465         pictureTypeIdToString.put(new Long(1), "32x32 pixels 'file icon' (PNG only)");
pictureTypeIdToString.put(new Long(2), R)1466         pictureTypeIdToString.put(new Long(2), "Other file icon");
pictureTypeIdToString.put(new Long(3), R)1467         pictureTypeIdToString.put(new Long(3), "Cover (front)");
pictureTypeIdToString.put(new Long(4), R)1468         pictureTypeIdToString.put(new Long(4), "Cover (back)");
pictureTypeIdToString.put(new Long(5), R)1469         pictureTypeIdToString.put(new Long(5), "Leaflet page");
pictureTypeIdToString.put(new Long(6), R)1470         pictureTypeIdToString.put(new Long(6), "Media (e.g. label side of CD)");
pictureTypeIdToString.put(new Long(7), R)1471         pictureTypeIdToString.put(new Long(7), "Lead artist/lead performer/soloist");
pictureTypeIdToString.put(new Long(8), R)1472         pictureTypeIdToString.put(new Long(8), "Artist/performer");
pictureTypeIdToString.put(new Long(9), R)1473         pictureTypeIdToString.put(new Long(9), "Conductor");
pictureTypeIdToString.put(new Long(10), R)1474         pictureTypeIdToString.put(new Long(10), "Band/Orchestra");
pictureTypeIdToString.put(new Long(11), R)1475         pictureTypeIdToString.put(new Long(11), "Composer");
pictureTypeIdToString.put(new Long(12), R)1476         pictureTypeIdToString.put(new Long(12), "Lyricist/text writer");
pictureTypeIdToString.put(new Long(13), R)1477         pictureTypeIdToString.put(new Long(13), "Recording Location");
pictureTypeIdToString.put(new Long(14), R)1478         pictureTypeIdToString.put(new Long(14), "During recording");
pictureTypeIdToString.put(new Long(15), R)1479         pictureTypeIdToString.put(new Long(15), "During performance");
pictureTypeIdToString.put(new Long(16), R)1480         pictureTypeIdToString.put(new Long(16), "Movie/video screen capture");
pictureTypeIdToString.put(new Long(17), R)1481         pictureTypeIdToString.put(new Long(17), "A bright coloured fish");
pictureTypeIdToString.put(new Long(18), R)1482         pictureTypeIdToString.put(new Long(18), "Illustration");
pictureTypeIdToString.put(new Long(19), R)1483         pictureTypeIdToString.put(new Long(19), "Band/artist logotype");
pictureTypeIdToString.put(new Long(20), R)1484         pictureTypeIdToString.put(new Long(20), "Publisher/Studio logotype");
1485         iterator = pictureTypeIdToString.keySet().iterator();
1486         while (iterator.hasNext()) {
1487             lkey = (Long) iterator.next();
1488             value = (String) pictureTypeIdToString.get(lkey);
pictureTypeStringToId.put(value, lkey)1489             pictureTypeStringToId.put(value, lkey);
1490         }
timeStampFormatIdToString.put(new Long(1), R)1491         timeStampFormatIdToString.put(new Long(1), "Absolute time using MPEG [MPEG] frames as unit");
timeStampFormatIdToString.put(new Long(2), R)1492         timeStampFormatIdToString.put(new Long(2), "Absolute time using milliseconds as unit");
1493         iterator = timeStampFormatIdToString.keySet().iterator();
1494         while (iterator.hasNext()) {
1495             lkey = (Long) iterator.next();
1496             value = (String) timeStampFormatIdToString.get(lkey);
timeStampFormatStringToId.put(value, lkey)1497             timeStampFormatStringToId.put(value, lkey);
1498         }
typeOfEventIdToString.put(new Long(0x00), R)1499         typeOfEventIdToString.put(new Long(0x00), "Padding (has no meaning)");
typeOfEventIdToString.put(new Long(0x01), R)1500         typeOfEventIdToString.put(new Long(0x01), "End of initial silence");
typeOfEventIdToString.put(new Long(0x02), R)1501         typeOfEventIdToString.put(new Long(0x02), "Intro start");
typeOfEventIdToString.put(new Long(0x03), R)1502         typeOfEventIdToString.put(new Long(0x03), "Main part start");
typeOfEventIdToString.put(new Long(0x04), R)1503         typeOfEventIdToString.put(new Long(0x04), "Outro start");
typeOfEventIdToString.put(new Long(0x05), R)1504         typeOfEventIdToString.put(new Long(0x05), "Outro end");
typeOfEventIdToString.put(new Long(0x06), R)1505         typeOfEventIdToString.put(new Long(0x06), "Verse start");
typeOfEventIdToString.put(new Long(0x07), R)1506         typeOfEventIdToString.put(new Long(0x07), "Refrain start");
typeOfEventIdToString.put(new Long(0x08), R)1507         typeOfEventIdToString.put(new Long(0x08), "Interlude start");
typeOfEventIdToString.put(new Long(0x09), R)1508         typeOfEventIdToString.put(new Long(0x09), "Theme start");
typeOfEventIdToString.put(new Long(0x0A), R)1509         typeOfEventIdToString.put(new Long(0x0A), "Variation start");
typeOfEventIdToString.put(new Long(0x0B), R)1510         typeOfEventIdToString.put(new Long(0x0B), "Key change");
typeOfEventIdToString.put(new Long(0x0C), R)1511         typeOfEventIdToString.put(new Long(0x0C), "Time change");
typeOfEventIdToString.put(new Long(0x0D), R)1512         typeOfEventIdToString.put(new Long(0x0D), "Momentary unwanted noise (Snap, Crackle & Pop)");
typeOfEventIdToString.put(new Long(0x0E), R)1513         typeOfEventIdToString.put(new Long(0x0E), "Sustained noise");
typeOfEventIdToString.put(new Long(0x0F), R)1514         typeOfEventIdToString.put(new Long(0x0F), "Sustained noise end");
typeOfEventIdToString.put(new Long(0x10), R)1515         typeOfEventIdToString.put(new Long(0x10), "Intro end");
typeOfEventIdToString.put(new Long(0x11), R)1516         typeOfEventIdToString.put(new Long(0x11), "Main part end");
typeOfEventIdToString.put(new Long(0x12), R)1517         typeOfEventIdToString.put(new Long(0x12), "Verse end");
typeOfEventIdToString.put(new Long(0x13), R)1518         typeOfEventIdToString.put(new Long(0x13), "Refrain end");
typeOfEventIdToString.put(new Long(0x14), R)1519         typeOfEventIdToString.put(new Long(0x14), "Theme end");
typeOfEventIdToString.put(new Long(0x15), R)1520         typeOfEventIdToString.put(new Long(0x15), "Profanity");
typeOfEventIdToString.put(new Long(0x16), R)1521         typeOfEventIdToString.put(new Long(0x16), "Profanity end");
typeOfEventIdToString.put(new Long(0xFD), R)1522         typeOfEventIdToString.put(new Long(0xFD), "Audio end (start of silence)");
typeOfEventIdToString.put(new Long(0xFE), R)1523         typeOfEventIdToString.put(new Long(0xFE), "Audio file ends");
1524         iterator = typeOfEventIdToString.keySet().iterator();
1525         while (iterator.hasNext()) {
1526             lkey = (Long) iterator.next();
1527             value = (String) typeOfEventIdToString.get(lkey);
typeOfEventStringToId.put(value, lkey)1528             typeOfEventStringToId.put(value, lkey);
1529         }
typeOfChannelIdToString.put(new Long(0x00), R)1530         typeOfChannelIdToString.put(new Long(0x00), "Other");
typeOfChannelIdToString.put(new Long(0x01), R)1531         typeOfChannelIdToString.put(new Long(0x01), "Master volume");
typeOfChannelIdToString.put(new Long(0x02), R)1532         typeOfChannelIdToString.put(new Long(0x02), "Front right");
typeOfChannelIdToString.put(new Long(0x03), R)1533         typeOfChannelIdToString.put(new Long(0x03), "Front left");
typeOfChannelIdToString.put(new Long(0x04), R)1534         typeOfChannelIdToString.put(new Long(0x04), "Back right");
typeOfChannelIdToString.put(new Long(0x05), R)1535         typeOfChannelIdToString.put(new Long(0x05), "Back left");
typeOfChannelIdToString.put(new Long(0x06), R)1536         typeOfChannelIdToString.put(new Long(0x06), "Front centre");
typeOfChannelIdToString.put(new Long(0x07), R)1537         typeOfChannelIdToString.put(new Long(0x07), "Back centre");
typeOfChannelIdToString.put(new Long(0x08), R)1538         typeOfChannelIdToString.put(new Long(0x08), "Subwoofer");
1539         iterator = typeOfChannelIdToString.keySet().iterator();
1540         while (iterator.hasNext()) {
1541             lkey = (Long) iterator.next();
1542             value = (String) typeOfChannelIdToString.get(lkey);
typeOfChannelStringToId.put(value, lkey)1543             typeOfChannelStringToId.put(value, lkey);
1544         }
recievedAsIdToString.put(new Long(0x00), R)1545         recievedAsIdToString.put(new Long(0x00), "Other");
recievedAsIdToString.put(new Long(0x01), R)1546         recievedAsIdToString.put(new Long(0x01), "Standard CD album with other songs");
recievedAsIdToString.put(new Long(0x02), R)1547         recievedAsIdToString.put(new Long(0x02), "Compressed audio on CD");
recievedAsIdToString.put(new Long(0x03), R)1548         recievedAsIdToString.put(new Long(0x03), "File over the Internet");
recievedAsIdToString.put(new Long(0x04), R)1549         recievedAsIdToString.put(new Long(0x04), "Stream over the Internet");
recievedAsIdToString.put(new Long(0x05), R)1550         recievedAsIdToString.put(new Long(0x05), "As note sheets");
recievedAsIdToString.put(new Long(0x06), R)1551         recievedAsIdToString.put(new Long(0x06), "As note sheets in a book with other sheets");
recievedAsIdToString.put(new Long(0x07), R)1552         recievedAsIdToString.put(new Long(0x07), "Music on other media");
recievedAsIdToString.put(new Long(0x08), R)1553         recievedAsIdToString.put(new Long(0x08), "Non-musical merchandise");
1554         iterator = recievedAsIdToString.keySet().iterator();
1555         while (iterator.hasNext()) {
1556             lkey = (Long) iterator.next();
1557             value = (String) recievedAsIdToString.get(lkey);
recievedAsStringToId.put(value, lkey)1558             recievedAsStringToId.put(value, lkey);
1559         }
1560     }
1561 
1562     /**
1563      * Creates a new TagConstant object.
1564      */
TagConstant()1565     private TagConstant() {
1566         // keep people from instantiating this
1567     }
1568 }