1/////////////////////////////////////////////////////////////////
2/// getID3() by James Heinrich <info@getid3.org>               //
3//  available at http://getid3.sourceforge.net                 //
4//            or https://www.getid3.org                        //
5//          also https://github.com/JamesHeinrich/getID3       //
6/////////////////////////////////////////////////////////////////
7//                                                             //
8// changelog.txt - part of getID3()                            //
9// See readme.txt for more details                             //
10//                                                            ///
11/////////////////////////////////////////////////////////////////
12
13What does the returned data structure look like?
14================================================
15
16Hint: If you take a look at the nicely-formatted output of
17/demos/demo.browse.php you can generally see where the data you want
18is returned.
19
20Note that what is described below is only a rough guide to what data
21is actually returned by getID3(), since the actual data returned
22depends entirely on what data is in your file, what type of file it
23is, what kind of data is in the tags, etc. In addition, some formats
24(Quicktime for example) use a freeform recursive structure that is
25impossible to document completely.
26
27In the vast majority of cases, all the data you'll need is located
28in the root of the array or the special arrays described below in
29Section 1 (['audio'], ['video'], ['tags_html'], ['replay_gain']).
30
31It is suggested that for most applications you should use tag data
32from the root ['tags_html'] array, as this is the only location
33where data is stored in a consistant format: HTML-compatible
34character entities (ie &#1234;) for characters outside the 0x20-0x7F
35range (printable ISO-8859-1 characters). This data can be used as-is
36for output in HTML, and can be converted to whatever character set
37you wish to use if the output is not HTML.
38
39If you want to merge all available tags (for example, ID3v2 + ID3v1)
40into one array, you can call
41getid3_lib::CopyTagsToComments($ThisFileInfo)
42and you'll then have ['comments'] and ['comments_html'] which are
43identical to ['tags'] and ['tags_html'] except the array is one
44dimension shorter (no tag type array keys). For example, artist is:
45['tags_html']['id3v1']['artist'][0] or ['comments_html']['artist'][0]
46
47
48Some commonly-used information is found in these locations:
49
50File type:        ['fileformat']                  // ex 'mp3'
51Song length:      ['playtime_string']             // ex '3:45'    (minutes:seconds)
52                  ['playtime_seconds']            // ex 225.13    (seconds)
53Overall bitrate:  ['bitrate']                     // ex 113485.71 (bits-per-second - divide by 1000 for kbps)
54Audio frequency:  ['audio']['sample_rate']        // ex 44100     (Hertz)
55Artist name:      ['comments_html']['artist'][0]  // ex 'Elvis'   (if CopyTagsToComments() is used - see above)
56                                                  //   more than one artist may be present, you may want to use implode:
57                                                  //   implode(' & ', ['comments_html']['artist'])
58
59
60/////////////////////////////////////////////////////////////////
61
62array() {
63                                         // SECTION 1: Values that are present for most or all file types
64
65    ['getID3version']=>string()          // version of getID3() that scanned this file (ex: '1.6.2')
66    ['error']=>array()                   // if present, contains one or more fatal error messages
67    ['warning']=>array()                 // if present, contains one or more non-fatal warning messages
68    ['exist']=>boolean()                 // does this file actually exist?
69    ['fileformat']=>string()             // one of the standard filetype abbreviations ('mp3', 'riff', 'quicktime', etc)
70    ['filename']=>string()               // filename only, no path
71    ['filenamepath']=>string()           // full filename with path
72    ['filepath']=>string()               // path to file, not including filename
73    ['filesize']=>integer()              // filesize in bytes
74    ['md5_file']=>string()               // md5 hash of entire file
75    ['md5_data']=>string()               // md5 hash of portion of file excluding prepended and appeneded metainformation tags (ID3, APE, etc) - may be identical to ['md5_file']
76    ['md5_data_source']=>string()        // md5 hash of original source file before compression (currently used by FLAC, OptimFROG, WavPack v4+)
77    ['sha1_file']=>string()              // sha1 hash of entire file
78    ['sha1_data']=>string()              // sha1 hash of portion of file excluding prepended and appeneded metainformation tags (ID3, APE, etc) - may be identical to ['md5_file']
79    ['avdataoffset']=>integer()          // offset in bytes where audio/video data starts and prepended tags end
80    ['avdataend']=>integer()             // offset in bytes where audio/video data ends and appended tags start
81    ['bitrate']=>double()                // average bitrate for entire file (all audio/video streams), in bits per second
82    ['mime_type']=>string()              // if present, MIME type of scanned file
83    ['playtime_seconds']=>double()       // playing time of file, in seconds
84    ['playtime_string']=>string()        // playing time of file, formatted as <minutes>:<seconds>
85    ['tags']=>array()                    // array of all metainformation tags present in file ('id3v1', 'id3v2', 'ape', 'riff', 'asf', etc)
86    ['audio']=>array() {
87        ['bitrate']=>double()            // average bitrate for audio portion of file (all audio streams), in bits per second
88        ['bitrate_mode']=>string()       // 'cbr' (Constant Bit Rate) or 'vbr' (Variable Bit Rate)
89        ['bits_per_sample']=>integer()   //
90        ['channelmode']=>string()        // 'mono' or 'stereo'
91        ['channels']=>integer()          // number of audio channels
92        ['codec']=>string()              // name of audio compression codec
93        ['compression_ratio']=>double()  // ratio of compressed byte size of audio to uncompressed size
94        ['dataformat']=>string()         // one of the standard filetype abbreviations ('mp3', 'wma', etc)
95        ['encoder']=>string()            // name and version of encoder used to create file, if known
96        ['lossless']=>boolean()          // true = lossless compression; false = lossy compression
97        ['sample_rate']=>integer()
98    }
99    ['video']=>array() {
100        ['bitrate']=>integer()           // average bitrate for video portion of file (all video streams), in bits per second
101        ['bitrate_mode']=>string()       // 'cbr' (Constant Bit Rate) or 'vbr' (Variable Bit Rate)
102        ['bits_per_sample']=>integer()   //
103        ['codec']=>string()              // name of video compression codec
104        ['compression_ratio']=>double()  // ratio of compressed byte size of video to uncompressed size
105        ['dataformat']=>string()         // one of the standard filetype abbreviations ('avi', 'mpeg', etc)
106        ['encoder']=>string()            // name and version of encoder used to create file, if known
107        ['frame_rate']=>double()         // frames per second
108        ['lossless']=>boolean()          // true = lossless compression; false = lossy compression
109        ['resolution_x']=>integer()      // horizontal dimension of video/image in pixels
110        ['resolution_y']=>integer()      // vertical dimension of video/image in pixels
111        ['pixel_aspect_ratio']=>double() // pixel display aspect ratio
112    }
113    ['tags']=>array() {                  // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
114        [<key name>]=>array()            // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
115    }
116    ['tags_html']=>array() {             // identical to ['tags'], but with all entries converted to HTML entities as appropriate from various source encodings
117        [<key name>]=>array()            //
118    }
119    ['replay_gain']=>array() {           // replay gain information combined from any source that contains this information (LAME, ID3v2, Vorbis, APE, etc)
120        ['audiophile']=>array() {
121            ['adjustment']=>double()
122            ['originator']=>string()
123            ['peak']=>double()
124        }
125        ['radio']=>array() {
126            ['adjustment']=>double()
127            ['originator']=>string()
128            ['peak']=>double()
129        }
130    }
131
132
133                                         // SECTION 2: Values that are present for specific file types only
134
135    ['aac']=>array() {                            // AAC - Advanced Audio Coding / MPEG-4
136        ['bitrate_distribution']=>array()         //
137        ['header']=>array() {                     //
138            ['channel_configuration']=>integer()  //
139            ['crc_present']=>boolean()            //
140            ['home']=>boolean()                   //
141            ['layer']=>integer()                  //
142            ['mpeg_version']=>integer()           //
143            ['original']=>boolean()               //
144            ['private']=>boolean()                //
145            ['profile_id']=>integer()             //
146            ['profile_text']=>string()            //
147            ['sample_frequency']=>integer()       //
148            ['sample_frequency_index']=>integer() //
149            ['synch']=>integer()                  //
150        }                                         //
151        ['header_type']=>string()                 //
152    }                                             //
153                                                  //
154    ['ape']=>array()                      //
155    {                                     //
156        ['comments']=>array() {           // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
157            [<key name>]=>array()         // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
158        }                                 //
159        ['footer']=>array()               //
160        {                                 //
161            ['flags']=>array()            //
162            ['raw']=>array()              //
163            ['tag_version']=>integer()    //
164        }                                 //
165        ['header']=>array()               //
166        {                                 //
167            ['flags']=>array()            //
168            ['raw']=>array()              //
169            ['tag_version']=>integer()    //
170        }                                 //
171        ['items']=>array() {              // array of array of strings containing metainformation
172            [<key name>]=>array() {       // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
173                ['data']=>array() {       // array of one or more Unicode values
174                ['data_ascii']=>array() { // array of values converted approximately from Unicode to ASCII
175                ['flags']=>array()        //
176            }                             //
177        }                                 //
178        ['tag_offset_end']=>integer()     //
179        ['tag_offset_start']=>integer()   //
180    }                                     //
181
182
183    ['asf']=>array() {                               // ASF - Advanced Streaming Format (ASF, Windows Media Audio (WMA), Windows Media Video (WMV))
184        ['audio_media']=>array() {                   //
185            [<x>]=>array() {                         //
186                ['bitrate']=>integer()               //
187                ['bits_per_sample']=>integer()       //
188                ['channels']=>integer()              //
189                ['codec']=>string()                  //
190                ['codec_data']=>string()             //
191                ['codec_data_size']=>integer()       //
192                ['raw']=>array() {                   //
193                    ['nAvgBytesPerSec']=>integer()   //
194                    ['wBitsPerSample']=>integer()    //
195                    ['nBlockAlign']=>integer()       //
196                    ['nChannels']=>integer()         //
197                    ['nSamplesPerSec']=>integer()    //
198                    ['wFormatTag']=>integer()        //
199                }                                    //
200                ['sample_rate']=>integer()           //
201            }                                        //
202        }                                            //
203        ['codec_list']=>array() {                    //
204            ['codec_entries']=>array() {             //
205                [<x>]=>array() {                     //
206                    ['description']=>string()        //
207                    ['description_ascii']=>string()  //
208                    ['information']=>string()        //
209                    ['name']=>string()               //
210                    ['name_ascii']=>string()         //
211                    ['type']=>string()               //
212                    ['type_raw']=>integer()          //
213                }                                    //
214            }                                        //
215            ['codec_entries_count']=>integer()       //
216            ['objectid']=>string()                   //
217            ['objectid_guid']=>string()              //
218            ['objectsize']=>integer()                //
219            ['reserved']=>string()                   //
220            ['reserved_guid']=>string()              //
221        }                                            //
222        ['comments']=>array() {                      // array of comment values, derived from ['content_description']
223            ['album']=>string()                      //
224            ['artist']=>string()                     //
225            ['comment']=>string()                    //
226            ['copyright']=>string()                  //
227            ['genre']=>string()                      //
228            ['title']=>string()                      //
229            ['track']=>string()                      //
230            ['year']=>string()                       //
231        }                                            //
232        ['content_description']=>array() {           // raw values - should use values from ['comments'] instead
233            ['author']=>string()                     //
234            ['author_ascii']=>string()               //
235            ['author_length']=>integer()             //
236            ['copyright']=>string()                  //
237            ['copyright_ascii']=>string()            //
238            ['copyright_length']=>integer()          //
239            ['description']=>string()                //
240            ['description_ascii']=>string()          //
241            ['description_length']=>integer()        //
242            ['objectid']=>string()                   //
243            ['objectid_guid']=>string()              //
244            ['objectsize']=>integer()                //
245            ['rating']=>string()                     //
246            ['rating_ascii']=>string()               //
247            ['rating_length']=>integer()             //
248            ['title']=>string()                      //
249            ['title_ascii']=>string()                //
250            ['title_length']=>integer()              //
251        }                                            //
252        ['data_object']=>array() {                   //
253            ['fileid']=>string()                     //
254            ['fileid_guid']=>string()                //
255            ['objectid']=>string()                   //
256            ['objectid_guid']=>string()              //
257            ['objectsize']=>integer()                //
258            ['reserved']=>integer()                  //
259            ['total_data_packets']=>integer()        //
260        }                                            //
261        ['extended_content_description']=>array() {  //
262            ['content_descriptors']=>array() {       //
263                [<x>]=>array() {                     //
264                    ['name']=>string()               //
265                    ['name_ascii']=>string()         //
266                    ['name_length']=>integer()       //
267                    ['value']=>string()              //
268                    ['value_ascii']=>string()        //
269                    ['value_length']=>integer()      //
270                    ['value_type']=>integer()        //
271                }                                    //
272            }                                        //
273            ['content_descriptors_count']=>integer() //
274            ['objectid']=>string()                   //
275            ['objectid_guid']=>string()              //
276            ['objectsize']=>integer()                //
277        }                                            //
278        ['file_properties_object']=>array() {        //
279            ['creation_date']=>double()              //
280            ['creation_date_unix']=>double()         //
281            ['data_packets']=>integer()              //
282            ['fileid']=>string()                     //
283            ['fileid_guid']=>string()                //
284            ['filesize']=>integer()                  //
285            ['flags']=>array() {                     //
286                ['broadcast']=>boolean()             //
287                ['seekable']=>boolean()              //
288            }                                        //
289            ['flags_raw']=>integer()                 //
290            ['max_bitrate']=>integer()               //
291            ['max_packet_size']=>integer()           //
292            ['min_packet_size']=>integer()           //
293            ['objectid']=>string()                   //
294            ['objectid_guid']=>string()              //
295            ['objectsize']=>integer()                //
296            ['play_duration']=>double()              //
297            ['preroll']=>integer()                   //
298            ['send_duration']=>double()              //
299        }                                            //
300        ['header_extension_object']=>array() {       //
301            ['extension_data']=>integer()            //
302            ['extension_data_size']=>integer()       //
303            ['objectid']=>string()                   //
304            ['objectid_guid']=>string()              //
305            ['objectsize']=>integer()                //
306            ['reserved_1']=>string()                 //
307            ['reserved_1_guid']=>string()            //
308            ['reserved_2']=>integer()                //
309        }                                            //
310        ['header_object']=>array() {                 //
311            ['headerobjects']=>integer()             //
312            ['objectid']=>string()                   //
313            ['objectid_guid']=>string()              //
314            ['objectsize']=>integer()                //
315            ['reserved1']=>integer()                 //
316            ['reserved2']=>integer()                 //
317        }                                            //
318        ['marker_object']=>array() {                 //
319            ['markers_count']=>integer()             //
320            ['objectid']=>string()                   //
321            ['objectid_guid']=>string()              //
322            ['objectsize']=>integer()                //
323            ['reserved']=>string()                   //
324            ['reserved_2']=>integer()                //
325            ['reserved_guid']=>string()              //
326        }                                            //
327        ['stream_bitrate_properties']=>array() {     //
328            ['bitrate_records']=>array() {           //
329                [<x>]=>array() {                     //
330                    ['bitrate']=>integer()           //
331                    ['flags_raw']=>integer()         //
332                    ['flags']=>array() {             //
333                        ['stream_number']=>integer() //
334                    }                                //
335                }                                    //
336            }                                        //
337            ['bitrate_records_count']=>integer()     //
338            ['objectid']=>string()                   //
339            ['objectid_guid']=>string()              //
340            ['objectsize']=>integer()                //
341        }                                            //
342        ['stream_properties_object']=>array() {      //
343            [<x>]=>array() {                         //
344                ['error_correct_data']=>string()     //
345                ['error_correct_guid']=>string()     //
346                ['error_correct_type']=>string()     //
347                ['error_data_length']=>integer()     //
348                ['flags_raw']=>integer()             //
349                ['flags']=>array() {                 //
350                    ['encrypted']=>boolean()         //
351                }                                    //
352                ['objectid']=>string()               //
353                ['objectid_guid']=>string()          //
354                ['objectsize']=>integer()            //
355                ['stream_type']=>string()            //
356                ['stream_type_guid']=>string()       //
357                ['time_offset']=>integer()           //
358                ['type_data_length']=>integer()      //
359                ['type_specific_data']=>string()     //
360            }                                        //
361        }                                            //
362        ['video_media']=>array() {                   //
363            [<x>]=>array() {                         //
364                ['flags']=>integer()                 //
365                ['format_data']=>array() {           //
366                    ['bits_per_pixel']=>integer()    //
367                    ['codec']=>string()              //
368                    ['codec_data']=>boolean()        //
369                    ['codec_fourcc']=>string()       //
370                    ['colors_important']=>integer()  //
371                    ['colors_used']=>integer()       //
372                    ['format_data_size']=>integer()  //
373                    ['horizontal_pels']=>integer()   //
374                    ['image_height']=>integer()      //
375                    ['image_size']=>integer()        //
376                    ['image_width']=>integer()       //
377                    ['reserved']=>integer()          //
378                    ['vertical_pels']=>integer()     //
379                }                                    //
380                ['format_data_size']=>integer()      //
381                ['image_height']=>integer()          //
382                ['image_width']=>integer()           //
383            }                                        //
384        }                                            //
385    }                                                //
386
387
388    ['au']=>array() {                       // AU - Next/Sun AUdio format
389        ['bits_per_sample']=>integer()      //
390        ['channels']=>integer()             //
391        ['comment']=>string()               //
392        ['data_format']=>string()           //
393        ['data_format_id']=>integer()       //
394        ['data_size']=>integer()            //
395        ['header_length']=>integer()        //
396        ['sample_rate']=>integer()          //
397        ['used_bits_per_sample']=>integer() //
398    }                                       //
399
400
401    ['bmp']=>array() {                          // BMP - OS/2 or Windows BitMaP
402        ['header']=>array() {                   //
403            ['compression']=>string()           //
404            ['raw']=>array() {                  //
405                ['bits_per_pixel']=>integer()   //
406                ['bmp_data_size']=>integer()    //
407                ['colors_important']=>integer() //
408                ['colors_used']=>integer()      //
409                ['compression']=>integer()      //
410                ['data_offset']=>integer()      //
411                ['filesize']=>integer()         //
412                ['header_size']=>integer()      //
413                ['height']=>integer()           //
414                ['identifier']=>string()        //
415                ['planes']=>integer()           //
416                ['resolution_h']=>integer()     //
417                ['resolution_v']=>integer()     //
418                ['width']=>integer()            //
419            }                                   //
420        }                                       //
421        ['type_os']=>string()                   //
422        ['type_version']=>integer()             //
423    }                                           //
424
425
426    ['bonk']=>array() {                       // BONK - lossy/lossless audio compression (www.bonkenc.org)
427        ['BONK']=>array() {                   //
428            ['channels']=>integer()           //
429            ['downsampling_ratio']=>integer() //
430            ['joint_stereo']=>boolean()       //
431            ['lossless']=>boolean()           //
432            ['number_samples']=>integer()     //
433            ['number_taps']=>integer()        //
434            ['offset']=>integer()             //
435            ['sample_rate']=>integer()        //
436            ['samples_per_packet']=>integer() //
437            ['size']=>integer()               //
438            ['version']=>integer()            //
439        }                                     //
440        ['INFO']=>array() {                   //
441            ['size']=>integer()               //
442            ['offset']=>integer()             //
443            ['version']=>integer()            //
444            [<x>]=>array() {                  //
445                ['nextbit']=>integer()        //
446                ['offset']=>integer()         //
447            }                                 //
448        }                                     //
449        ['dataend']=>integer()                //
450        ['dataoffset']=>integer()             //
451    }                                         //
452
453
454    ['flac']=>array() {                         // FLAC - Free Lossless Audio Compressor
455        ['SEEKTABLE']=>array() {                //
456            [<x>]=>array() {                    //
457                ['offset']=>integer()           //
458                ['samples']=>integer()          //
459            }                                   //
460            ['placeholders']=>integer()         //
461            ['raw']=>array() {                  //
462                ['block_data']=>string()        //
463                ['block_length']=>integer()     //
464                ['block_type']=>integer()       //
465                ['block_type_text']=>string()   //
466                ['last_meta_block']=>boolean()  //
467                ['offset']=>integer()           //
468            }                                   //
469        }                                       //
470        ['STREAMINFO']=>array() {               //
471            ['audio_signature']=>string()       //
472            ['bits_per_sample']=>integer()      //
473            ['channels']=>integer()             //
474            ['max_block_size']=>integer()       //
475            ['max_frame_size']=>integer()       //
476            ['min_block_size']=>integer()       //
477            ['min_frame_size']=>integer()       //
478            ['raw']=>array() {                  //
479                ['block_data']=>string()        //
480                ['block_length']=>integer()     //
481                ['block_type']=>integer()       //
482                ['block_type_text']=>string()   //
483                ['last_meta_block']=>boolean()  //
484                ['offset']=>integer()           //
485            }                                   //
486            ['sample_rate']=>integer()          //
487            ['samples_stream']=>integer()       //
488        }                                       //
489        ['VORBIS_COMMENT']=>array() {           //
490            ['raw']=>array() {                  //
491                ['block_data']=>string()        //
492                ['block_length']=>integer()     //
493                ['block_type']=>integer()       //
494                ['block_type_text']=>string()   //
495                ['last_meta_block']=>boolean()  //
496                ['offset']=>integer()           //
497            }                                   //
498        }                                       //
499        ['compressed_audio_bytes']=>integer()   //
500        ['compression_ratio']=>double()         //
501        ['uncompressed_audio_bytes']=>integer() //
502    }                                           //
503
504
505    ['gif']=>array() {                             // GIF - Graphics Interchange Format
506        ['global_color_table']=>array() {          //
507            [<x>]=>integer()                       //
508        }                                          //
509        ['header']=>array() {                      //
510            ['bits_per_pixel']=>integer()          //
511            ['flags']=>array() {                   //
512                ['global_color_sorted']=>boolean() //
513                ['global_color_table']=>boolean()  //
514            }                                      //
515            ['global_color_size']=>integer()       //
516            ['raw']=>array() {                     //
517                ['aspect_ratio']=>integer()        //
518                ['bg_color_index']=>integer()      //
519                ['flags']=>integer()               //
520                ['height']=>integer()              //
521                ['identifier']=>string()           //
522                ['version']=>string()              //
523                ['width']=>integer()               //
524            }                                      //
525        }                                          //
526        ['version']=>string()                      //
527    }                                              //
528
529
530    ['id3v1']=>array() {                // ID3v1
531        ['album']=>string()             //
532        ['artist']=>string()            //
533        ['comment']=>string()           //
534        ['genre']=>string()             //
535        ['genreid']=>integer()          //
536        ['title']=>string()             //
537        ['track']=>integer()            //
538        ['year']=>string()              //
539        ['padding_valid']=>boolean()    //
540        ['comments']=>array()           //
541        ['tag_offset_start']=>integer() //
542        ['tag_offset_end']=>integer()   //
543    }                                   //
544
545
546    ['id3v2']=>array() {                                 // ID3v2 - www.id3.org
547        [<frame name>]=>array() {                        // <frame name> can be any of the 4-character (3-character in ID3v2.2) frame names allowed in the ID3v2 spec. Exact contents of returned array data varies with frame type.
548            [<x>]=>array() {                             // some frames types allow multiple values ('COMM' for example), others do not and do not have this array level
549                ['asciidata']=>boolean()                 //
550                ['asciidescription']=>string()           //
551                ['data']=>boolean()                      //
552                ['datalength']=>integer()                //
553                ['dataoffset']=>integer()                //
554                ['description']=>string()                //
555                ['encoding']=>string()                   //
556                ['encodingid']=>integer()                //
557                ['flags']=>array() {                     //
558                    ['Encryption']=>boolean()            //
559                    ['FileAlterPreservation']=>boolean() //
560                    ['GroupingIdentity']=>boolean()      //
561                    ['ReadOnly']=>boolean()              //
562                    ['TagAlterPreservation']=>boolean()  //
563                    ['compression']=>boolean()           //
564                }                                        //
565                ['framenamelong']=>string()              //
566                ['language']=>string()                   //
567                ['languagename']=>string()               //
568            }                                            //
569        }                                                //
570        ['comments']=>array() {                          // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
571            [<key name>]=>array()                        // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
572        }                                                //
573        ['flags']=>array() {                             //
574            ['experim']=>string()                        //
575            ['exthead']=>string()                        //
576            ['unsynch']=>string()                        //
577        }                                                //
578        ['header']=>boolean()                            //
579        ['headerlength']=>integer()                      //
580        ['majorversion']=>integer()                      //
581        ['minorversion']=>integer()                      //
582        ['padding']=>array() {                           //
583            ['length']=>integer()                        //
584            ['start']=>integer()                         //
585            ['valid']=>boolean()                         //
586        }                                                //
587        ['tag_offset_end']=>integer()                    //
588        ['tag_offset_start']=>integer()                  //
589    }                                                    //
590
591
592    ['iso']=>array() {                                           // ISO-9660 - CD-ROM Image
593        ['directories']=>array() {                               //
594            [<x>]=>array() {                                     //
595                [<x>]=>array() {                                 //
596                    ['file_flags']=>array() {                    //
597                        ['associated']=>boolean()                //
598                        ['directory']=>boolean()                 //
599                        ['extended']=>boolean()                  //
600                        ['hidden']=>boolean()                    //
601                        ['multiple']=>boolean()                  //
602                        ['permissions']=>boolean()               //
603                    }                                            //
604                    ['file_identifier_ascii']=>string()          //
605                    ['filename']=>string()                       //
606                    ['filesize']=>integer()                      //
607                    ['offset_bytes']=>integer()                  //
608                    ['raw']=>array() {                           //
609                        ['extended_attribute_length']=>integer() //
610                        ['file_flags']=>integer()                //
611                        ['file_identifier']=>string()            //
612                        ['file_identifier_length']=>integer()    //
613                        ['file_unit_size']=>integer()            //
614                        ['filesize']=>integer()                  //
615                        ['interleave_gap_size']=>integer()       //
616                        ['length']=>integer()                    //
617                        ['offset_logical']=>integer()            //
618                        ['recording_date_time']=>string()        //
619                        ['volume_sequence_number']=>integer()    //
620                    }                                            //
621                    ['recording_timestamp']=>integer()           //
622                }                                                //
623            }                                                    //
624        }                                                        //
625        ['files']=>array() {                                     // multidimensional tree-structure array listing of all files and directories in image
626            [<directory name>]=>array()                          // entries of type array are directories (key is directory name), may contain files and/or other subdirectories
627            [<file name>]=>integer()                             // entries of type integer are files (key is file name, value is file size in bytes)
628        }                                                        //
629        ['path_table']=>array() {                                //
630            ['directories']=>array() {                           //
631                [<x>]=>array() {                                 //
632                    ['extended_length']=>integer()               //
633                    ['full_path']=>string()                      //
634                    ['length']=>integer()                        //
635                    ['location_bytes']=>integer()                //
636                    ['location_logical']=>integer()              //
637                    ['name']=>string()                           //
638                    ['name_ascii']=>string()                     //
639                    ['parent_directory']=>integer()              //
640                }                                                //
641            }                                                    //
642            ['offset']=>integer()                                //
643            ['raw']=>string()                                    //
644        }                                                        //
645        ['primary_volume_descriptor']=>array() {                 //
646            ['abstract_file_identifier']=>string()               //
647            ['application_identifier']=>string()                 //
648            ['bibliographic_file_identifier']=>string()          //
649            ['copyright_file_identifier']=>string()              //
650            ['data_preparer_identifier']=>string()               //
651            ['offset']=>integer()                                //
652            ['publisher_identifier']=>string()                   //
653            ['raw']=>array() {                                   //
654                ['abstract_file_identifier']=>string()           //
655                ['application_data']=>string()                   //
656                ['application_identifier']=>string()             //
657                ['bibliographic_file_identifier']=>string()      //
658                ['copyright_file_identifier']=>string()          //
659                ['data_preparer_identifier']=>string()           //
660                ['file_structure_version']=>integer()            //
661                ['logical_block_size']=>integer()                //
662                ['path_table_l_location']=>integer()             //
663                ['path_table_l_opt_location']=>integer()         //
664                ['path_table_m_location']=>integer()             //
665                ['path_table_m_opt_location']=>integer()         //
666                ['path_table_size']=>integer()                   //
667                ['publisher_identifier']=>string()               //
668                ['root_directory_record']=>string()              //
669                ['standard_identifier']=>string()                //
670                ['system_identifier']=>string()                  //
671                ['unused_1']=>string()                           //
672                ['unused_2']=>string()                           //
673                ['unused_3']=>string()                           //
674                ['unused_4']=>integer()                          //
675                ['volume_creation_date_time']=>string()          //
676                ['volume_descriptor_type']=>integer()            //
677                ['volume_descriptor_version']=>integer()         //
678                ['volume_effective_date_time']=>string()         //
679                ['volume_expiration_date_time']=>string()        //
680                ['volume_identifier']=>string()                  //
681                ['volume_modification_date_time']=>string()      //
682                ['volume_sequence_number']=>integer()            //
683                ['volume_set_identifier']=>string()              //
684                ['volume_set_size']=>integer()                   //
685                ['volume_space_size']=>integer()                 //
686            }                                                    //
687            ['system_identifier']=>string()                      //
688            ['volume_creation_date_time']=>integer()             //
689            ['volume_effective_date_time']=>boolean()            //
690            ['volume_expiration_date_time']=>boolean()           //
691            ['volume_identifier']=>string()                      //
692            ['volume_modification_date_time']=>integer()         //
693            ['volume_set_identifier']=>string()                  //
694        }                                                        //
695        ['supplementary_volume_descriptor']=>array() {           //
696            ['abstract_file_identifier']=>string()               //
697            ['application_identifier']=>string()                 //
698            ['bibliographic_file_identifier']=>string()          //
699            ['copyright_file_identifier']=>string()              //
700            ['data_preparer_identifier']=>string()               //
701            ['offset']=>integer()                                //
702            ['publisher_identifier']=>string()                   //
703            ['raw']=>array() {                                   //
704                ['abstract_file_identifier']=>string()           //
705                ['application_data']=>string()                   //
706                ['application_identifier']=>string()             //
707                ['bibliographic_file_identifier']=>string()      //
708                ['copyright_file_identifier']=>string()          //
709                ['data_preparer_identifier']=>string()           //
710                ['file_structure_version']=>integer()            //
711                ['logical_block_size']=>integer()                //
712                ['path_table_l_location']=>integer()             //
713                ['path_table_l_opt_location']=>integer()         //
714                ['path_table_m_location']=>integer()             //
715                ['path_table_m_opt_location']=>integer()         //
716                ['path_table_size']=>integer()                   //
717                ['publisher_identifier']=>string()               //
718                ['root_directory_record']=>string()              //
719                ['standard_identifier']=>string()                //
720                ['system_identifier']=>string()                  //
721                ['unused_1']=>string()                           //
722                ['unused_2']=>string()                           //
723                ['unused_3']=>string()                           //
724                ['unused_4']=>integer()                          //
725                ['volume_creation_date_time']=>string()          //
726                ['volume_descriptor_type']=>integer()            //
727                ['volume_descriptor_version']=>integer()         //
728                ['volume_effective_date_time']=>string()         //
729                ['volume_expiration_date_time']=>string()        //
730                ['volume_identifier']=>string()                  //
731                ['volume_modification_date_time']=>string()      //
732                ['volume_sequence_number']=>integer()            //
733                ['volume_set_identifier']=>string()              //
734                ['volume_set_size']=>integer()                   //
735                ['volume_space_size']=>integer()                 //
736            }                                                    //
737            ['system_identifier']=>string()                      //
738            ['volume_creation_date_time']=>integer()             //
739            ['volume_effective_date_time']=>boolean()            //
740            ['volume_expiration_date_time']=>boolean()           //
741            ['volume_identifier']=>string()                      //
742            ['volume_modification_date_time']=>integer()         //
743            ['volume_set_identifier']=>string()                  //
744        }                                                        //
745    }                                                            //
746
747
748    ['jpg']=>array() {    // JPEG - still image
749        ['exif']=>array() // data returned from PHP's exif_read_data() function
750    }                     //
751
752
753    ['la']=>array() {                        // LA - Lossless Audio (www.lossless-audio.com)
754        ['raw']=>array() {
755            ['format']=>integer()            //
756            ['flags']=>integer()             //
757        }                                    //
758        ['flags']=>array() {                 //
759            ['seekable']=>boolean()          //
760            ['high_compression']=>boolean()  //
761        }                                    //
762        ['bits_per_sample']=>integer()       //
763        ['bytes_per_sample']=>integer()      //
764        ['bytes_per_second']=>integer()      //
765        ['channels']=>integer()              //
766        ['compression_ratio']=>double()      //
767        ['format_size']=>integer()           //
768        ['header_size']=>integer()           //
769        ['original_crc']=>double()           //
770        ['sample_rate']=>integer()           //
771        ['samples']=>integer()               //
772        ['uncompressed_size']=>integer()     //
773        ['version']=>double()                //
774        ['version_major']=>integer()         //
775        ['version_minor']=>integer()         //
776        ['footerstart']=>double()            //
777    }
778
779
780    ['lpac']=>array() {                               // LPAC - Lossless Predictive Audio Compressor
781        ['block_length']=>integer()                   //
782        ['file_version']=>integer()                   //
783        ['flags']=>array() {                          //
784            ['16_bit']=>boolean()                     //
785            ['24_bit']=>boolean()                     //
786            ['adaptive_prediction_order']=>boolean()  //
787            ['adaptive_quantization']=>boolean()      //
788            ['fast_compress']=>boolean()              //
789            ['is_wave']=>boolean()                    //
790            ['joint_stereo']=>boolean()               //
791            ['max_prediction_order']=>integer()       //
792            ['quantization']=>integer()               //
793            ['random_access']=>boolean()              //
794            ['stereo']=>boolean()                     //
795        }                                             //
796        ['raw']=>array() {                            //
797            ['audio_type']=>integer()                 //
798            ['parameters']=>double()                  //
799        }                                             //
800        ['total_samples']=>integer()                  //
801    }                                                 //
802
803
804    ['lyrics3']=>array() {                // Lyrics3 - metainformation tags
805        ['comments']=>array() {           //
806            ['album']=>string()           //
807            ['artist']=>string()          //
808            ['author']=>string()          //
809            ['comment']=>string()         //
810            ['title']=>string()           //
811        }                                 //
812        ['flags']=>array() {              //
813            ['lyrics']=>boolean()         //
814            ['timestamps']=>boolean()     //
815        }                                 //
816        ['images']=>array() {             //
817            [<x>]=>array() {              //
818                ['description']=>string() //
819                ['filename']=>string()    //
820                ['timestamp']=>integer()  //
821            }                             //
822        }                                 //
823        ['raw']=>array() {                //
824            ['offset_start']=>integer()   //
825            ['offset_end']=>integer()     //
826            ['AUT']=>string()             //
827            ['EAL']=>string()             //
828            ['EAR']=>string()             //
829            ['ETT']=>string()             //
830            ['IMG']=>string()             //
831            ['IND']=>string()             //
832            ['INF']=>string()             //
833            ['LYR']=>string()             //
834            ['lyrics3tagsize']=>integer() //
835            ['lyrics3version']=>integer() //
836            ['unparsed']=>string()        //
837        }                                 //
838        ['synchedlyrics']=>array() {      //
839            [<x>]=>string()               //
840        }                                 //
841        ['unsynchedlyrics']=>string()     //
842    }                                     //
843
844
845    ['midi']=>array() {                         // MIDI (Musical Instrument Digital Interface) - sequenced music
846        ['comments']=>array() {                 //
847            ['comment']=>string()               //
848            ['copyright']=>string()             //
849        }                                       //
850        ['keysignature']=>array() {             //
851            [<x>]=>string()                     //
852        }                                       //
853        ['raw']=>array() {                      //
854            ['events']=>array() {               //
855                [<x>]=>array() {                //
856                    [<x>]=>array() {            //
857                        ['us_qnote']=>integer() //
858                    }                           //
859                }                               //
860            }                                   //
861            ['fileformat']=>integer()           //
862            ['headersize']=>integer()           //
863            ['ticksperqnote']=>integer()        //
864            ['track']=>array() {                //
865                [<x>]=>array() {                //
866                    ['instrument']=>string()    //
867                    ['instrumentid']=>integer() //
868                    ['name']=>string()          //
869                }                               //
870            }                                   //
871            ['tracks']=>integer()               //
872        }                                       //
873        ['timesignature']=>array() {            //
874            [<x>]=>string()                     //
875        }                                       //
876        ['totalticks']=>integer()               //
877    }                                           //
878
879
880    ['monkeys_audio']=>array() {                // Monkey's Audio - lossless audio compression
881        ['bitrate']=>double()                   //
882        ['bits_per_sample']=>integer()          //
883        ['channels']=>integer()                 //
884        ['compressed_size']=>integer()          //
885        ['compression']=>string()               //
886        ['compression_ratio']=>double()         //
887        ['flags']=>array() {                    //
888            ['24-bit']=>boolean()               //
889            ['8-bit']=>boolean()                //
890            ['crc-32']=>boolean()               //
891            ['no_wav_header']=>boolean()        //
892            ['peak_level']=>boolean()           //
893            ['seek_elements']=>boolean()        //
894        }                                       //
895        ['frames']=>integer()                   //
896        ['peak_level']=>integer()               //
897        ['peak_ratio']=>double()                //
898        ['playtime']=>double()                  //
899        ['raw']=>array() {                      //
900            ['header_tag']=>string()            //
901            ['nChannels']=>integer()            //
902            ['nCompressionLevel']=>integer()    //
903            ['nFinalFrameSamples']=>integer()   //
904            ['nFormatFlags']=>integer()         //
905            ['nPeakLevel']=>integer()           //
906            ['nSampleRate']=>integer()          //
907            ['nSeekElements']=>integer()        //
908            ['nTotalFrames']=>integer()         //
909            ['nVersion']=>integer()             //
910            ['nWAVHeaderBytes']=>integer()      //
911            ['nWAVTerminatingBytes']=>integer() //
912        }                                       //
913        ['sample_rate']=>integer()              //
914        ['samples']=>integer()                  //
915        ['samples_per_frame']=>integer()        //
916        ['uncompressed_size']=>integer()        //
917        ['version']=>double()                   //
918    }                                           //
919
920
921    ['mpc']=>array() {                          // MPC (Musepack) - lossy audio compression
922        ['header']=>array() {                   //
923            ['album_gain_db']=>integer()        //
924            ['album_peak']=>integer()           //
925            ['album_peak_db']=>boolean()        //
926            ['title_gain_db']=>integer()        //
927            ['title_peak']=>integer()           //
928            ['title_peak_db']=>boolean()        //
929            ['begin_loud']=>boolean()           //
930            ['end_loud']=>boolean()             //
931            ['encoder_version']=>string()       //
932            ['frame_count']=>integer()          //
933            ['intensity_stereo']=>boolean()     //
934            ['last_frame_length']=>integer()    //
935            ['max_level']=>integer()            //
936            ['max_subband']=>integer()          //
937            ['mid_side_stereo']=>boolean()      //
938            ['profile']=>string()               //
939            ['sample_rate']=>integer()          //
940            ['samples']=>integer()              //
941            ['size']=>integer()                 //
942            ['stream_major_version']=>integer() //
943            ['stream_minor_version']=>integer() //
944            ['true_gapless']=>boolean()         //
945            ['raw']=>array() {                  //
946                ['album_gain']=>integer()       //
947                ['album_peak']=>integer()       //
948                ['encoder_version']=>integer()  //
949                ['preamble']=>string()          //
950                ['profile']=>integer()          //
951                ['sample_rate']=>integer()      //
952                ['title_gain']=>integer()       //
953                ['title_peak']=>integer()       //
954            }                                   //
955        }                                       //
956    }                                           //
957
958
959    ['mpeg']=>array() {                                // MPEG (Motion Picture Experts Group) - MPEG video and/or MPEG audio (MP3/MP2/MP1)
960        ['audio']=>array() {                           //
961            ['LAME']=>array() {                        //
962                ['RGAD']=>array() {                    //
963                    ['peak_amplitude']=>double()       //
964                }                                      //
965                ['ath_type']=>integer()                //
966                ['audio_bytes']=>integer()             //
967                ['bitrate_min']=>integer()             //
968                ['encoder_delay']=>integer()           //
969                ['encoding_flags']=>array() {          //
970                    ['nogap_next']=>boolean()          //
971                    ['nogap_prev']=>boolean()          //
972                    ['nspsytune']=>boolean()           //
973                    ['nssafejoint']=>boolean()         //
974                }                                      //
975                ['end_padding']=>integer()             //
976                ['lame_tag_crc']=>integer()            //
977                ['lowpass_frequency']=>integer()       //
978                ['mp3_gain_db']=>double()              //
979                ['mp3_gain_factor']=>double()          //
980                ['mp3_gain_raw']=>integer()            //
981                ['music_crc']=>integer()               //
982                ['noise_shaping']=>integer()           //
983                ['noise_shaping_raw']=>integer()       //
984                ['not_optimal_quality']=>boolean()     //
985                ['not_optimal_quality_raw']=>integer() //
986                ['preset_used_id']=>integer()          //
987                ['short_version']=>string()            // ex: "LAME 3.93"
988                ['long_version']=>string()             // (pre-v3.90 only) ex: "LAME 3.88 (alpha)"
989                ['source_sample_freq']=>string()       //
990                ['source_sample_freq_raw']=>integer()  //
991                ['stereo_mode']=>string()              //
992                ['stereo_mode_raw']=>integer()         //
993                ['surround_info']=>string()            //
994                ['surround_info_id']=>integer()        //
995                ['tag_revision']=>integer()            //
996                ['vbr_method']=>string()               //
997                ['vbr_method_raw']=>integer()          //
998            }                                          //
999            ['VBR_bitrate']=>double()                  //
1000            ['VBR_bytes']=>integer()                   //
1001            ['VBR_frames']=>integer()                  //
1002            ['VBR_method']=>string()                   //
1003            ['VBR_scale']=>integer()                   //
1004            ['bitrate']=>integer()                     //
1005            ['bitrate_distribution']=>array() {        //
1006                ['free']=>integer()                    //
1007                ['8']=>integer()                       //
1008                ['16']=>integer()                      //
1009                ['24']=>integer()                      //
1010                ['32']=>integer()                      //
1011                ['40']=>integer()                      //
1012                ['48']=>integer()                      //
1013                ['56']=>integer()                      //
1014                ['64']=>integer()                      //
1015                ['80']=>integer()                      //
1016                ['96']=>integer()                      //
1017                ['112']=>integer()                     //
1018                ['128']=>integer()                     //
1019                ['144']=>integer()                     //
1020                ['160']=>integer()                     //
1021            }                                          //
1022            ['bitrate_mode']=>string()                 //
1023            ['channelmode']=>string()                  //
1024            ['channels']=>integer()                    //
1025            ['copyright']=>boolean()                   //
1026            ['crc']=>integer()                         //
1027            ['emphasis']=>string()                     //
1028            ['frame_count']=>integer()                 //
1029            ['framelength']=>integer()                 //
1030            ['layer']=>integer()                       //
1031            ['modeextension']=>string()                //
1032            ['original']=>boolean()                    //
1033            ['padding']=>boolean()                     //
1034            ['private']=>boolean()                     //
1035            ['protection']=>boolean()                  //
1036            ['raw']=>array() {                         //
1037                ['bitrate']=>integer()                 //
1038                ['channelmode']=>integer()             //
1039                ['copyright']=>integer()               //
1040                ['emphasis']=>integer()                //
1041                ['layer']=>integer()                   //
1042                ['modeextension']=>integer()           //
1043                ['original']=>integer()                //
1044                ['padding']=>integer()                 //
1045                ['private']=>integer()                 //
1046                ['protection']=>integer()              //
1047                ['sample_rate']=>integer()             //
1048                ['synch']=>integer()                   //
1049                ['version']=>integer()                 //
1050            }                                          //
1051            ['sample_rate']=>integer()                 //
1052            ['stereo_distribution']=>array() {         //
1053                ['dual channel']=>integer()            //
1054                ['joint stereo']=>integer()            //
1055                ['mono']=>integer()                    //
1056                ['stereo']=>integer()                  //
1057            }                                          //
1058            ['toc']=>array() {                         //
1059                [<x>]=>integer()                       //
1060            }                                          //
1061            ['version']=>string()                      //
1062            ['version_distribution']=>array() {        //
1063                [<x>]=>integer()                       //
1064                [<x>]=>integer()                       //
1065                ['2.5']=>integer()                     //
1066            }                                          //
1067            ['xing_flags']=>array() {                  //
1068                ['bytes']=>boolean()                   //
1069                ['frames']=>boolean()                  //
1070                ['toc']=>boolean()                     //
1071                ['vbr_scale']=>boolean()               //
1072            }                                          //
1073            ['xing_flags_raw']=>string()               //
1074        }                                              //
1075        ['video']=>array() {                           //
1076            ['bitrate']=>integer()                     //
1077            ['bitrate_mode']=>string()                 //
1078            ['frame_rate']=>double()                   //
1079            ['framesize_horizontal']=>integer()        //
1080            ['framesize_vertical']=>integer()          //
1081            ['pixel_aspect_ratio']=>double()           //
1082            ['pixel_aspect_ratio_text']=>string()      //
1083            ['raw']=>array() {                         //
1084                ['bitrate']=>integer()                 //
1085                ['constrained_param_flag']=>integer()  //
1086                ['frame_rate']=>integer()              //
1087                ['framesize_horizontal']=>integer()    //
1088                ['framesize_vertical']=>integer()      //
1089                ['intra_quant_flag']=>integer()        //
1090                ['marker_bit']=>integer()              //
1091                ['pixel_aspect_ratio']=>integer()      //
1092                ['vbv_buffer_size']=>integer()         //
1093            }                                          //
1094        }                                              //
1095    }                                                  //
1096
1097
1098    ['nsv']=>array() {                     // NSV - Nullsoft Streaming Video
1099        ['NSVf']=>array() {                //
1100            ['TOC_entries_1']=>integer()   //
1101            ['TOC_entries_2']=>integer()   //
1102            ['file_size']=>integer()       //
1103            ['header_length']=>integer()   //
1104            ['identifier']=>string()       //
1105            ['meta_size']=>integer()       //
1106            ['metadata']=>string()         //
1107            ['playtime_ms']=>integer()     //
1108        }                                  //
1109        ['NSVs']=>array() {                //
1110            ['audio_codec']=>string()      //
1111            ['frame_rate']=>double()       //
1112            ['framerate_index']=>integer() //
1113            ['identifier']=>string()       //
1114            ['offset']=>integer()          //
1115            ['resolution_x']=>integer()    //
1116            ['resolution_y']=>integer()    //
1117            ['unknown1b']=>integer()       //
1118            ['unknown1c']=>integer()       //
1119            ['unknown1d']=>integer()       //
1120            ['unknown2a']=>integer()       //
1121            ['unknown2b']=>integer()       //
1122            ['unknown2c']=>integer()       //
1123            ['unknown2d']=>integer()       //
1124            ['unknown3a']=>integer()       //
1125            ['unknown3b']=>integer()       //
1126            ['unknown3c']=>integer()       //
1127            ['unknown3d']=>integer()       //
1128            ['video_codec']=>string()      //
1129        }                                  //
1130        ['comments']=>array() {            //
1131            ['aspect']=>string()           //
1132            ['title']=>string()            //
1133        }                                  //
1134    }                                      //
1135
1136
1137    ['ofr']=>array() {                                   // OFR (OptimFROG) - lossless audio compression
1138        ['COMP']=>array() {                              //
1139            [<x>]=>array() {                             //
1140                ['channel_configuration']=>string()      //
1141                ['crc_32']=>boolean()                    //
1142                ['encoder']=>string()                    //
1143                ['offset']=>integer()                    //
1144                ['raw']=>array() {                       //
1145                    ['algorithm_id']=>integer()          //
1146                    ['channel_configuration']=>integer() //
1147                    ['encoder_id']=>integer()            //
1148                    ['sample_type']=>integer()           //
1149                }                                        //
1150                ['sample_count']=>integer()              //
1151                ['sample_type']=>string()                //
1152                ['size']=>integer()                      //
1153            }                                            //
1154        }                                                //
1155        ['HEAD']=>array() {                              //
1156            ['offset']=>integer()                        //
1157            ['size']=>integer()                          //
1158        }                                                //
1159        ['OFR ']=>array() {                              //
1160            ['channel_config']=>integer()                //
1161            ['channels']=>integer()                      //
1162            ['compression']=>string()                    //
1163            ['encoder']=>string()                        //
1164            ['offset']=>integer()                        //
1165            ['raw']=>array() {                           //
1166                ['compression']=>integer()               //
1167                ['encoder_id']=>integer()                //
1168                ['sample_type']=>integer()               //
1169            }                                            //
1170            ['sample_rate']=>integer()                   //
1171            ['sample_type']=>string()                    //
1172            ['size']=>integer()                          //
1173            ['total_samples']=>integer()                 //
1174        }                                                //
1175        ['TAIL']=>array() {                              //
1176            ['offset']=>integer()                        //
1177            ['size']=>integer()                          //
1178        }                                                //
1179    }                                                    //
1180
1181
1182    ['ogg']=>array() {                           // OGG - container format for Ogg Vorbis, OggFLAC, Speex, etc
1183        ['bitrate_average']=>double()            //
1184        ['bitrate_max']=>integer()               //
1185        ['bitrate_min']=>integer()               //
1186        ['bitrate_nominal']=>integer()           //
1187        ['bitstreamversion']=>integer()          //
1188        ['blocksize_large']=>integer()           //
1189        ['blocksize_small']=>integer()           //
1190        ['comments']=>array() {                  // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
1191            [<key name>]=>array()                // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
1192        }                                        //
1193        ['comments_raw']=>array() {              //
1194            [<x>]=>array() {                     //
1195                ['dataoffset']=>integer()        //
1196                ['key']=>string()                //
1197                ['size']=>integer()              //
1198                ['value']=>string()              //
1199            }                                    //
1200        }                                        //
1201        ['numberofchannels']=>integer()          //
1202        ['pageheader']=>array() {                //
1203            [<x>]=>array() {                     //
1204                ['flags']=>array() {             //
1205                    ['bos']=>boolean()           //
1206                    ['eos']=>boolean()           //
1207                    ['fresh']=>boolean()         //
1208                }                                //
1209                ['flags_raw']=>integer()         //
1210                ['header_end_offset']=>integer() //
1211                ['packet_type']=>integer()       //
1212                ['page_checksum']=>double()      //
1213                ['page_end_offset']=>integer()   //
1214                ['page_length']=>integer()       //
1215                ['page_segments']=>integer()     //
1216                ['page_seqno']=>integer()        //
1217                ['page_start_offset']=>integer() //
1218                ['pcm_abs_position']=>integer()  //
1219                ['segment_table']=>array() {     //
1220                    [<x>]=>integer()             //
1221                }                                //
1222                ['stream_serialno']=>integer()   //
1223                ['stream_structver']=>integer()  //
1224                ['stream_type']=>string()        //
1225            }                                    //
1226            ['eos']=>array() {                   //
1227                ['flags']=>array() {             //
1228                    ['bos']=>boolean()           //
1229                    ['eos']=>boolean()           //
1230                    ['fresh']=>boolean()         //
1231                }                                //
1232                ['flags_raw']=>integer()         //
1233                ['header_end_offset']=>integer() //
1234                ['page_checksum']=>double()      //
1235                ['page_end_offset']=>integer()   //
1236                ['page_length']=>integer()       //
1237                ['page_segments']=>integer()     //
1238                ['page_seqno']=>integer()        //
1239                ['page_start_offset']=>integer() //
1240                ['pcm_abs_position']=>integer()  //
1241                ['segment_table']=>array() {     //
1242                    [<x>]=>integer()             //
1243                }                                //
1244                ['stream_serialno']=>integer()   //
1245                ['stream_structver']=>integer()  //
1246            }                                    //
1247        }                                        //
1248        ['samplerate']=>integer()                //
1249        ['samples']=>integer()                   //
1250        ['stop_bit']=>integer()                  //
1251        ['vendor']=>string()                     //
1252    }                                            //
1253
1254
1255    ['png']=>array() {                                // PNG (Portable Network Graphics) - still image
1256        ['IDAT']=>array() {                           //
1257            [<x>]=>array() {                          //
1258                ['header']=>array() {                 //
1259                    ['crc']=>integer()                //
1260                    ['data_length']=>integer()        //
1261                    ['flags']=>array() {              //
1262                        ['ancilliary']=>boolean()     //
1263                        ['private']=>boolean()        //
1264                        ['reserved']=>boolean()       //
1265                        ['safe_to_copy']=>boolean()   //
1266                    }                                 //
1267                    ['type_raw']=>double()            //
1268                    ['type_text']=>string()           //
1269                }                                     //
1270            }                                         //
1271        }                                             //
1272        ['IEND']=>array() {                           //
1273            ['header']=>array() {                     //
1274                ['crc']=>double()                     //
1275                ['data']=>string()                    //
1276                ['data_length']=>integer()            //
1277                ['flags']=>array() {                  //
1278                    ['ancilliary']=>boolean()         //
1279                    ['private']=>boolean()            //
1280                    ['reserved']=>boolean()           //
1281                    ['safe_to_copy']=>boolean()       //
1282                }                                     //
1283                ['type_raw']=>double()                //
1284                ['type_text']=>string()               //
1285            }                                         //
1286        }                                             //
1287        ['IHDR']=>array() {                           //
1288            ['color_type']=>array() {                 //
1289                ['alpha']=>boolean()                  //
1290                ['palette']=>boolean()                //
1291                ['true_color']=>boolean()             //
1292            }                                         //
1293            ['compression_method_text']=>string()     //
1294            ['header']=>array() {                     //
1295                ['crc']=>double()                     //
1296                ['data']=>string()                    //
1297                ['data_length']=>integer()            //
1298                ['flags']=>array() {                  //
1299                    ['ancilliary']=>boolean()         //
1300                    ['private']=>boolean()            //
1301                    ['reserved']=>boolean()           //
1302                    ['safe_to_copy']=>boolean()       //
1303                }                                     //
1304                ['type_raw']=>double()                //
1305                ['type_text']=>string()               //
1306            }                                         //
1307            ['height']=>integer()                     //
1308            ['raw']=>array() {                        //
1309                ['bit_depth']=>integer()              //
1310                ['color_type']=>integer()             //
1311                ['compression_method']=>integer()     //
1312                ['filter_method']=>integer()          //
1313                ['interlace_method']=>integer()       //
1314            }                                         //
1315            ['width']=>integer()                      //
1316        }                                             //
1317        ['PLTE']=>array() {                           //
1318            ['header']=>array() {                     //
1319                ['crc']=>double()                     //
1320                ['data']=>string()                    //
1321                ['data_length']=>integer()            //
1322                ['flags']=>array() {                  //
1323                    ['ancilliary']=>boolean()         //
1324                    ['private']=>boolean()            //
1325                    ['reserved']=>boolean()           //
1326                    ['safe_to_copy']=>boolean()       //
1327                }                                     //
1328                ['type_raw']=>double()                //
1329                ['type_text']=>string()               //
1330            }                                         //
1331            [<x>]=>integer()                          //
1332        }                                             //
1333        ['comments']=>array() {                       // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
1334            [<key name>]=>array()                     // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
1335        }                                             //
1336        ['gAMA']=>array() {                           //
1337            ['gamma']=>double()                       //
1338            ['header']=>array() {                     //
1339                ['crc']=>integer()                    //
1340                ['data']=>string()                    //
1341                ['data_length']=>integer()            //
1342                ['flags']=>array() {                  //
1343                    ['ancilliary']=>boolean()         //
1344                    ['private']=>boolean()            //
1345                    ['reserved']=>boolean()           //
1346                    ['safe_to_copy']=>boolean()       //
1347                }                                     //
1348                ['type_raw']=>double()                //
1349                ['type_text']=>string()               //
1350            }                                         //
1351        }                                             //
1352        ['oFFs']=>array() {                           //
1353            ['header']=>array() {                     //
1354                ['crc']=>double()                     //
1355                ['data']=>string()                    //
1356                ['data_length']=>integer()            //
1357                ['flags']=>array() {                  //
1358                    ['ancilliary']=>boolean()         //
1359                    ['private']=>boolean()            //
1360                    ['reserved']=>boolean()           //
1361                    ['safe_to_copy']=>boolean()       //
1362                }                                     //
1363                ['type_raw']=>double()                //
1364                ['type_text']=>string()               //
1365            }                                         //
1366            ['position_x']=>integer()                 //
1367            ['position_y']=>integer()                 //
1368            ['unit']=>string()                        //
1369            ['unit_specifier']=>integer()             //
1370        }                                             //
1371        ['pHYs']=>array() {                           //
1372            ['header']=>array() {                     //
1373                ['crc']=>integer()                    //
1374                ['data']=>string()                    //
1375                ['data_length']=>integer()            //
1376                ['flags']=>array() {                  //
1377                    ['ancilliary']=>boolean()         //
1378                    ['private']=>boolean()            //
1379                    ['reserved']=>boolean()           //
1380                    ['safe_to_copy']=>boolean()       //
1381                }                                     //
1382                ['type_raw']=>double()                //
1383                ['type_text']=>string()               //
1384            }                                         //
1385            ['pixels_per_unit_x']=>integer()          //
1386            ['pixels_per_unit_y']=>integer()          //
1387            ['unit']=>string()                        //
1388            ['unit_specifier']=>integer()             //
1389        }                                             //
1390        ['pcLb']=>array() {                           //
1391            ['header']=>array() {                     //
1392                ['crc']=>double()                     //
1393                ['data']=>string()                    //
1394                ['data_length']=>integer()            //
1395                ['flags']=>array() {                  //
1396                    ['ancilliary']=>boolean()         //
1397                    ['private']=>boolean()            //
1398                    ['reserved']=>boolean()           //
1399                    ['safe_to_copy']=>boolean()       //
1400                }                                     //
1401                ['type_raw']=>double()                //
1402                ['type_text']=>string()               //
1403            }                                         //
1404        }                                             //
1405        ['tEXt']=>array() {                           //
1406            ['header']=>array() {                     //
1407                ['crc']=>integer()                    //
1408                ['data']=>string()                    //
1409                ['data_length']=>integer()            //
1410                ['flags']=>array() {                  //
1411                    ['ancilliary']=>boolean()         //
1412                    ['private']=>boolean()            //
1413                    ['reserved']=>boolean()           //
1414                    ['safe_to_copy']=>boolean()       //
1415                }                                     //
1416                ['type_raw']=>double()                //
1417                ['type_text']=>string()               //
1418            }                                         //
1419            ['keyword']=>string()                     //
1420            ['text']=>string()                        //
1421        }                                             //
1422        ['tIME']=>array() {                           //
1423            ['day']=>integer()                        //
1424            ['header']=>array() {                     //
1425                ['crc']=>integer()                    //
1426                ['data']=>string()                    //
1427                ['data_length']=>integer()            //
1428                ['flags']=>array() {                  //
1429                    ['ancilliary']=>boolean()         //
1430                    ['private']=>boolean()            //
1431                    ['reserved']=>boolean()           //
1432                    ['safe_to_copy']=>boolean()       //
1433                }                                     //
1434                ['type_raw']=>double()                //
1435                ['type_text']=>string()               //
1436            }                                         //
1437            ['hour']=>integer()                       //
1438            ['minute']=>integer()                     //
1439            ['month']=>integer()                      //
1440            ['second']=>integer()                     //
1441            ['unix']=>integer()                       //
1442            ['year']=>integer()                       //
1443        }                                             //
1444        ['tRNS']=>array() {                           //
1445            ['header']=>array() {                     //
1446                ['crc']=>double()                     //
1447                ['data']=>string()                    //
1448                ['data_length']=>integer()            //
1449                ['flags']=>array() {                  //
1450                    ['ancilliary']=>boolean()         //
1451                    ['private']=>boolean()            //
1452                    ['reserved']=>boolean()           //
1453                    ['safe_to_copy']=>boolean()       //
1454                }                                     //
1455                ['type_raw']=>double()                //
1456                ['type_text']=>string()               //
1457            }                                         //
1458            ['transparent_color_blue']=>integer()     //
1459            ['transparent_color_green']=>integer()    //
1460            ['transparent_color_red']=>integer()      //
1461        }                                             //
1462        ['zTXt']=>array() {                           //
1463            ['compressed_text']=>string()             //
1464            ['compression_method']=>integer()         //
1465            ['compression_method_text']=>string()     //
1466            ['header']=>array() {                     //
1467                ['crc']=>double()                     //
1468                ['data']=>string()                    //
1469                ['data_length']=>integer()            //
1470                ['flags']=>array() {                  //
1471                    ['ancilliary']=>boolean()         //
1472                    ['private']=>boolean()            //
1473                    ['reserved']=>boolean()           //
1474                    ['safe_to_copy']=>boolean()       //
1475                }                                     //
1476                ['type_raw']=>double()                //
1477                ['type_text']=>string()               //
1478            }                                         //
1479            ['keyword']=>string()                     //
1480            ['text']=>string()                        //
1481        }                                             //
1482    }                                                 //
1483
1484
1485    ['quicktime']=>array() {               // Quicktime - video/audio
1486        ['']=>array() {                    //
1487            ['name']=>boolean()            //
1488            ['offset']=>integer()          //
1489            ['size']=>integer()            //
1490        }                                  //
1491        ['audio']=>array() {               //
1492            ['bit_depth']=>integer()       //
1493            ['channels']=>integer()        //
1494            ['codec']=>string()            //
1495            ['sample_rate']=>double()      //
1496        }                                  //
1497        ['free']=>array() {                //
1498            ['name']=>string()             //
1499            ['offset']=>integer()          //
1500            ['size']=>integer()            //
1501        }                                  //
1502        ['mdat']=>array() {                //
1503            ['name']=>string()             //
1504            ['offset']=>integer()          //
1505            ['size']=>integer()            //
1506        }                                  //
1507        ['moov']=>array() {                //
1508            ['hierarchy']=>string()        //
1509            ['name']=>string()             //
1510            ['offset']=>integer()          //
1511            ['size']=>integer()            //
1512            ['subatoms']=>array()          // This is an undocumentably-complex recursive array, typically containing a huge amount of seemingly disorganized data. Avoid this like the plague.
1513        }                                  //
1514        ['time_scale']=>integer()          //
1515        ['display_scale']=>integer()       // 1 = normal; 0.5 = half; 2 = double
1516        ['video']=>array() {               //
1517            ['codec']=>string()            //
1518            ['color_depth']=>integer()     //
1519            ['color_depth_name']=>string() //
1520            ['resolution_x']=>double()     //
1521            ['resolution_y']=>double()     //
1522        }                                  //
1523        ['wide']=>array() {                //
1524            ['name']=>string()             //
1525            ['offset']=>integer()          //
1526            ['size']=>integer()            //
1527        }                                  //
1528    }                                      //
1529
1530
1531    ['real']=>array() {                           // Real (RealAudio / RealVideo) - audio/video
1532        ['chunks']=>array() {                     //
1533            [<x>]=>array() {                      //
1534                ['file_version']=>integer()       //
1535                ['headers_count']=>integer()      //
1536                ['length']=>integer()             //
1537                ['name']=>string()                //
1538                ['object_version']=>integer()     //
1539                ['offset']=>integer()             //
1540            }                                     //
1541            [<x>]=>array() {                      //
1542                ['avg_bit_rate']=>integer()       //
1543                ['avg_packet_size']=>integer()    //
1544                ['data_offset']=>integer()        //
1545                ['duration']=>integer()           //
1546                ['flags']=>array() {              //
1547                    ['live_broadcast']=>boolean() //
1548                    ['perfect_play']=>boolean()   //
1549                    ['save_enabled']=>boolean()   //
1550                }                                 //
1551                ['flags_raw']=>integer()          //
1552                ['index_offset']=>integer()       //
1553                ['length']=>integer()             //
1554                ['max_bit_rate']=>integer()       //
1555                ['max_packet_size']=>integer()    //
1556                ['name']=>string()                //
1557                ['num_packets']=>integer()        //
1558                ['num_streams']=>integer()        //
1559                ['object_version']=>integer()     //
1560                ['offset']=>integer()             //
1561                ['preroll']=>integer()            //
1562            }                                     //
1563        }                                         //
1564        ['comments']=>array() {                   //
1565            ['artist']=>string()                  //
1566            ['comment']=>string()                 //
1567            ['title']=>string()                   //
1568        }                                         //
1569    }                                             //
1570
1571
1572    ['riff']=>array() {                                     // RIFF (Resource Interchange File Format) - audio/video container format (AVI, WAV, CDDA, etc)
1573        ['AIFC']=>array() {                                 //
1574            ['COMM']=>array() {                             //
1575                [<x>]=>array() {                            //
1576                    ['data']=>string()                      //
1577                    ['offset']=>integer()                   //
1578                    ['size']=>integer()                     //
1579                }                                           //
1580            }                                               //
1581            ['FVER']=>array() {                             //
1582                [<x>]=>array() {                            //
1583                    ['data']=>string()                      //
1584                    ['offset']=>integer()                   //
1585                    ['size']=>integer()                     //
1586                }                                           //
1587            }                                               //
1588            ['INST']=>array() {                             //
1589                [<x>]=>array() {                            //
1590                    ['data']=>string()                      //
1591                    ['offset']=>integer()                   //
1592                    ['size']=>integer()                     //
1593                }                                           //
1594            }                                               //
1595            ['MARK']=>array() {                             //
1596                [<x>]=>array() {                            //
1597                    ['data']=>string()                      //
1598                    ['offset']=>integer()                   //
1599                    ['size']=>integer()                     //
1600                }                                           //
1601            }                                               //
1602            ['SSND']=>array() {                             //
1603                [<x>]=>array() {                            //
1604                    ['offset']=>integer()                   //
1605                    ['size']=>integer()                     //
1606                }                                           //
1607            }                                               //
1608        }                                                   //
1609        ['AIFF']=>array() {                                 //
1610            ['(c) ']=>array() {                             //
1611                [<x>]=>array() {                            //
1612                    ['data']=>string()                      //
1613                    ['offset']=>integer()                   //
1614                    ['size']=>integer()                     //
1615                }                                           //
1616            }                                               //
1617            ['COMM']=>array() {                             //
1618                [<x>]=>array() {                            //
1619                    ['data']=>string()                      //
1620                    ['offset']=>integer()                   //
1621                    ['size']=>integer()                     //
1622                }                                           //
1623            }                                               //
1624            ['SSND']=>array() {                             //
1625                [<x>]=>array() {                            //
1626                    ['offset']=>integer()                   //
1627                    ['size']=>integer()                     //
1628                }                                           //
1629            }                                               //
1630        }                                                   //
1631        ['AVI ']=>array() {                                 //
1632            ['JUNK']=>array() {                             //
1633                [<x>]=>array() {                            //
1634                    ['data']=>string()                      //
1635                    ['offset']=>integer()                   //
1636                    ['size']=>integer()                     //
1637                }                                           //
1638            }                                               //
1639            ['hdrl']=>array() {                             //
1640                ['avih']=>array() {                         //
1641                    [<x>]=>array() {                        //
1642                        ['data']=>string()                  //
1643                        ['offset']=>integer()               //
1644                        ['size']=>integer()                 //
1645                    }                                       //
1646                }                                           //
1647                ['odml']=>array() {                         //
1648                    ['dmlh']=>array() {                     //
1649                        [<x>]=>array() {                    //
1650                            ['data']=>string()              //
1651                            ['offset']=>integer()           //
1652                            ['size']=>integer()             //
1653                        }                                   //
1654                    }                                       //
1655                }                                           //
1656                ['strl']=>array() {                         //
1657                    ['JUNK']=>array() {                     //
1658                        [<x>]=>array() {                    //
1659                            ['offset']=>integer()           //
1660                            ['size']=>integer()             //
1661                        }                                   //
1662                    }                                       //
1663                    ['strf']=>array() {                     //
1664                        [<x>]=>array() {                    //
1665                            ['data']=>string()              //
1666                            ['offset']=>integer()           //
1667                            ['size']=>integer()             //
1668                        }                                   //
1669                    }                                       //
1670                    ['strh']=>array() {                     //
1671                        [<x>]=>array() {                    //
1672                            ['data']=>string()              //
1673                            ['offset']=>integer()           //
1674                            ['size']=>integer()             //
1675                        }                                   //
1676                    }                                       //
1677                    ['strn']=>array() {                     //
1678                        [<x>]=>array() {                    //
1679                            ['data']=>string()              //
1680                            ['offset']=>integer()           //
1681                            ['size']=>integer()             //
1682                        }                                   //
1683                    }                                       //
1684                }                                           //
1685            }                                               //
1686            ['idx1']=>array() {                             //
1687                [<x>]=>array() {                            //
1688                    ['data']=>string()                      //
1689                    ['offset']=>integer()                   //
1690                    ['size']=>integer()                     //
1691                }                                           //
1692            }                                               //
1693            ['movi']=>array() {                             //
1694                ['offset']=>integer()                       //
1695                ['size']=>integer()                         //
1696            }                                               //
1697        }                                                   //
1698        ['CDDA']=>array() {                                 //
1699            ['fmt ']=>array() {                             //
1700                [<x>]=>array() {                            //
1701                    ['data']=>string()                      //
1702                    ['disc_id']=>integer()                  //
1703                    ['offset']=>integer()                   //
1704                    ['playtime_frames']=>integer()          //
1705                    ['playtime_seconds']=>double()          //
1706                    ['size']=>integer()                     //
1707                    ['start_offset_frame']=>integer()       //
1708                    ['start_offset_seconds']=>double()      //
1709                    ['track_num']=>integer()                //
1710                    ['unknown1']=>integer()                 //
1711                    ['unknown6']=>integer()                 //
1712                    ['unknown7']=>integer()                 //
1713                }                                           //
1714            }                                               //
1715        }                                                   //
1716        ['WAVE']=>array() {                                 //
1717            ['DISP']=>array() {                             //
1718                [<x>]=>array() {                            //
1719                    ['data']=>string()                      //
1720                    ['offset']=>integer()                   //
1721                    ['size']=>integer()                     //
1722                }                                           //
1723            }                                               //
1724            ['INFO']=>array() {                             //
1725                ['IART']=>array() {                         //
1726                    [<x>]=>array() {                        //
1727                        ['data']=>string()                  //
1728                        ['offset']=>integer()               //
1729                        ['size']=>integer()                 //
1730                    }                                       //
1731                }                                           //
1732                ['ICMT']=>array() {                         //
1733                    [<x>]=>array() {                        //
1734                        ['data']=>string()                  //
1735                        ['offset']=>integer()               //
1736                        ['size']=>integer()                 //
1737                    }                                       //
1738                }                                           //
1739                ['ICOP']=>array() {                         //
1740                    [<x>]=>array() {                        //
1741                        ['data']=>string()                  //
1742                        ['offset']=>integer()               //
1743                        ['size']=>integer()                 //
1744                    }                                       //
1745                }                                           //
1746                ['IENG']=>array() {                         //
1747                    [<x>]=>array() {                        //
1748                        ['data']=>string()                  //
1749                        ['offset']=>integer()               //
1750                        ['size']=>integer()                 //
1751                    }                                       //
1752                }                                           //
1753                ['IGNR']=>array() {                         //
1754                    [<x>]=>array() {                        //
1755                        ['data']=>string()                  //
1756                        ['offset']=>integer()               //
1757                        ['size']=>integer()                 //
1758                    }                                       //
1759                }                                           //
1760                ['IKEY']=>array() {                         //
1761                    [<x>]=>array() {                        //
1762                        ['data']=>string()                  //
1763                        ['offset']=>integer()               //
1764                        ['size']=>integer()                 //
1765                    }                                       //
1766                }                                           //
1767                ['IMED']=>array() {                         //
1768                    [<x>]=>array() {                        //
1769                        ['data']=>string()                  //
1770                        ['offset']=>integer()               //
1771                        ['size']=>integer()                 //
1772                    }                                       //
1773                }                                           //
1774                ['INAM']=>array() {                         //
1775                    [<x>]=>array() {                        //
1776                        ['data']=>string()                  //
1777                        ['offset']=>integer()               //
1778                        ['size']=>integer()                 //
1779                    }                                       //
1780                }                                           //
1781                ['ISBJ']=>array() {                         //
1782                    [<x>]=>array() {                        //
1783                        ['data']=>string()                  //
1784                        ['offset']=>integer()               //
1785                        ['size']=>integer()                 //
1786                    }                                       //
1787                }                                           //
1788                ['ISFT']=>array() {                         //
1789                    [<x>]=>array() {                        //
1790                        ['data']=>string()                  //
1791                        ['offset']=>integer()               //
1792                        ['size']=>integer()                 //
1793                    }                                       //
1794                }                                           //
1795                ['ISRC']=>array() {                         //
1796                    [<x>]=>array() {                        //
1797                        ['data']=>string()                  //
1798                        ['offset']=>integer()               //
1799                        ['size']=>integer()                 //
1800                    }                                       //
1801                }                                           //
1802                ['ISRF']=>array() {                         //
1803                    [<x>]=>array() {                        //
1804                        ['data']=>string()                  //
1805                        ['offset']=>integer()               //
1806                        ['size']=>integer()                 //
1807                    }                                       //
1808                }                                           //
1809                ['ITCH']=>array() {                         //
1810                    [<x>]=>array() {                        //
1811                        ['data']=>string()                  //
1812                        ['offset']=>integer()               //
1813                        ['size']=>integer()                 //
1814                    }                                       //
1815                }                                           //
1816            }                                               //
1817            ['MEXT']=>array() {                             //
1818                [<x>]=>array() {                            //
1819                    ['anciliary_data_length']=>integer()    //
1820                    ['data']=>string()                      //
1821                    ['flags']=>array() {                    //
1822                        ['anciliary_data_free']=>boolean()  //
1823                        ['anciliary_data_left']=>boolean()  //
1824                        ['anciliary_data_right']=>boolean() //
1825                        ['homogenous']=>boolean()           //
1826                    }                                       //
1827                    ['offset']=>integer()                   //
1828                    ['raw']=>array() {                      //
1829                        ['anciliary_data_def']=>integer()   //
1830                        ['sound_information']=>integer()    //
1831                    }                                       //
1832                    ['size']=>integer()                     //
1833                }                                           //
1834            }                                               //
1835            ['bext']=>array() {                             //
1836                [<x>]=>array() {                            //
1837                    ['author']=>string()                    //
1838                    ['bwf_version']=>integer()              //
1839                    ['coding_history']=>array() {           //
1840                        [<x>]=>string()                     //
1841                    }                                       //
1842                    ['data']=>string()                      //
1843                    ['offset']=>integer()                   //
1844                    ['origin_date']=>string()               //
1845                    ['origin_date_unix']=>integer()         //
1846                    ['origin_time']=>string()               //
1847                    ['reference']=>string()                 //
1848                    ['reserved']=>integer()                 //
1849                    ['size']=>integer()                     //
1850                    ['time_reference']=>integer()           //
1851                    ['title']=>string()                     //
1852                }                                           //
1853            }                                               //
1854            ['cart']=>array() {                             //
1855                [<x>]=>array() {                            //
1856                    ['artist']=>string()                    //
1857                    ['category']=>string()                  //
1858                    ['classification']=>string()            //
1859                    ['client_id']=>string()                 //
1860                    ['cut_id']=>string()                    //
1861                    ['data']=>string()                      //
1862                    ['end_date']=>string()                  //
1863                    ['end_time']=>string()                  //
1864                    ['offset']=>integer()                   //
1865                    ['out_cue']=>string()                   //
1866                    ['post_time']=>array() {                //
1867                        [<x>]=>array() {                    //
1868                            ['timer_value']=>integer()      //
1869                            ['usage_fourcc']=>string()      //
1870                        }                                   //
1871                    }                                       //
1872                    ['producer_app_id']=>string()           //
1873                    ['producer_app_version']=>string()      //
1874                    ['size']=>integer()                     //
1875                    ['start_date']=>string()                //
1876                    ['start_time']=>string()                //
1877                    ['tag_text']=>array() {                 //
1878                        [<x>]=>string()                     //
1879                    }                                       //
1880                    ['title']=>string()                     //
1881                    ['url']=>string()                       //
1882                    ['user_defined_text']=>string()         //
1883                    ['version']=>string()                   //
1884                    ['zero_db_reference']=>integer()        //
1885                }                                           //
1886            }                                               //
1887            ['data']=>array() {                             //
1888                [<x>]=>array() {                            //
1889                    ['offset']=>integer()                   //
1890                    ['size']=>integer()                     //
1891                }                                           //
1892            }                                               //
1893            ['fact']=>array() {                             //
1894                [<x>]=>array() {                            //
1895                    ['data']=>string()                      //
1896                    ['offset']=>integer()                   //
1897                    ['size']=>integer()                     //
1898                }                                           //
1899            }                                               //
1900            ['fmt ']=>array() {                             //
1901                [<x>]=>array() {                            //
1902                    ['data']=>string()                      //
1903                    ['offset']=>integer()                   //
1904                    ['size']=>integer()                     //
1905                }                                           //
1906            }                                               //
1907            ['rgad']=>array() {                             //
1908                [<x>]=>array() {                            //
1909                    ['data']=>string()                      //
1910                    ['offset']=>integer()                   //
1911                    ['size']=>integer()                     //
1912                }                                           //
1913            }                                               //
1914        }                                                   //
1915        ['audio']=>array() {                                //
1916            [<x>]=>array() {                                //
1917                ['bitrate']=>integer()                      //
1918                ['bits_per_sample']=>integer()              //
1919                ['channels']=>integer()                     //
1920                ['codec']=>string()                         //
1921                ['sample_rate']=>integer()                  //
1922            }                                               //
1923            ['bits_per_sample']=>integer()                  //
1924            ['channels']=>integer()                         //
1925            ['codec_fourcc']=>string()                      //
1926            ['codec_name']=>string()                        //
1927            ['sample_rate']=>integer()                      //
1928            ['total_samples']=>integer()                    //
1929        }                                                   //
1930        ['comments']=>array() {                             // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
1931            [<key name>]=>array()                           // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
1932        }                                                   //
1933        ['header_size']=>integer()                          //
1934        ['raw']=>array() {                                  //
1935            ['avih']=>array() {                             //
1936                ['dwFlags']=>integer()                      //
1937                ['dwHeight']=>integer()                     //
1938                ['dwInitialFrames']=>integer()              //
1939                ['dwLength']=>integer()                     //
1940                ['dwMaxBytesPerSec']=>integer()             //
1941                ['dwMicroSecPerFrame']=>integer()           //
1942                ['dwPaddingGranularity']=>integer()         //
1943                ['dwRate']=>integer()                       //
1944                ['dwScale']=>integer()                      //
1945                ['dwStart']=>integer()                      //
1946                ['dwStreams']=>integer()                    //
1947                ['dwSuggestedBufferSize']=>integer()        //
1948                ['dwTotalFrames']=>integer()                //
1949                ['dwWidth']=>integer()                      //
1950                ['flags']=>array() {                        //
1951                    ['capturedfile']=>boolean()             //
1952                    ['copyrighted']=>boolean()              //
1953                    ['hasindex']=>boolean()                 //
1954                    ['interleaved']=>boolean()              //
1955                    ['mustuseindex']=>boolean()             //
1956                    ['trustcktype']=>boolean()              //
1957                }                                           //
1958            }                                               //
1959            ['fact']=>array() {                             //
1960                ['NumberOfSamples']=>integer()              //
1961            }                                               //
1962            ['fmt ']=>array() {                             //
1963                ['nAvgBytesPerSec']=>integer()              //
1964                ['wBitsPerSample']=>integer()               //
1965                ['nBlockAlign']=>integer()                  //
1966                ['nChannels']=>integer()                    //
1967                ['nSamplesPerSec']=>integer()               //
1968                ['wFormatTag']=>integer()                   //
1969            }                                               //
1970            ['rgad']=>array() {                             //
1971                ['audiophile']=>array() {                   //
1972                    ['adjustment']=>integer()               //
1973                    ['name']=>integer()                     //
1974                    ['originator']=>integer()               //
1975                    ['signbit']=>integer()                  //
1976                }                                           //
1977                ['fPeakAmplitude']=>double()                //
1978                ['nAudiophileRgAdjust']=>integer()          //
1979                ['nRadioRgAdjust']=>integer()               //
1980                ['radio']=>array() {                        //
1981                    ['adjustment']=>integer()               //
1982                    ['name']=>integer()                     //
1983                    ['originator']=>integer()               //
1984                    ['signbit']=>integer()                  //
1985                }                                           //
1986            }                                               //
1987            ['strf']=>array() {                             //
1988                ['auds']=>array() {                         //
1989                    [<x>]=>array() {                        //
1990                        ['nAvgBytesPerSec']=>integer()      //
1991                        ['wBitsPerSample']=>integer()       //
1992                        ['nBlockAlign']=>integer()          //
1993                        ['nChannels']=>integer()            //
1994                        ['nSamplesPerSec']=>integer()       //
1995                        ['wFormatTag']=>integer()           //
1996                    }                                       //
1997                }                                           //
1998                ['vids']=>array() {                         //
1999                    [<x>]=>array() {                        //
2000                        ['biBitCount']=>integer()           //
2001                        ['biClrImportant']=>integer()       //
2002                        ['biClrUsed']=>integer()            //
2003                        ['biHeight']=>integer()             //
2004                        ['biPlanes']=>integer()             //
2005                        ['biSize']=>integer()               //
2006                        ['biSizeImage']=>integer()          //
2007                        ['biWidth']=>integer()              //
2008                        ['biXPelsPerMeter']=>integer()      //
2009                        ['biYPelsPerMeter']=>integer()      //
2010                        ['fourcc']=>string()                //
2011                    }                                       //
2012                }                                           //
2013            }                                               //
2014            ['strh']=>array() {                             //
2015                [<x>]=>array() {                            //
2016                    ['dwFlags']=>integer()                  //
2017                    ['dwInitialFrames']=>integer()          //
2018                    ['dwLength']=>integer()                 //
2019                    ['dwQuality']=>integer()                //
2020                    ['dwRate']=>integer()                   //
2021                    ['dwSampleSize']=>integer()             //
2022                    ['dwScale']=>integer()                  //
2023                    ['dwStart']=>integer()                  //
2024                    ['dwSuggestedBufferSize']=>integer()    //
2025                    ['fccHandler']=>string()                //
2026                    ['fccType']=>string()                   //
2027                    ['rcFrame']=>integer()                  //
2028                    ['wLanguage']=>integer()                //
2029                    ['wPriority']=>integer()                //
2030                }                                           //
2031            }                                               //
2032        }                                                   //
2033        ['rgad']=>array() {                                 //
2034            ['audiophile']=>array() {                       //
2035                ['adjustment']=>double()                    //
2036                ['name']=>string()                          //
2037                ['originator']=>string()                    //
2038            }                                               //
2039            ['peakamplitude']=>double()                     //
2040            ['radio']=>array() {                            //
2041                ['adjustment']=>double()                    //
2042                ['name']=>string()                          //
2043                ['originator']=>string()                    //
2044            }                                               //
2045        }                                                   //
2046        ['video']=>array() {                                //
2047            [<x>]=>array() {                                //
2048                ['codec']=>string()                         //
2049                ['frame_height']=>integer()                 //
2050                ['frame_rate']=>double()                    //
2051                ['frame_width']=>integer()                  //
2052            }                                               //
2053        }                                                   //
2054        ['litewave']=>array() {                             // http://www.clearjump.com
2055            ['raw']=>array() {                              //
2056                ['compression_method']=>integer()           // 1=lossy; 2=lossless
2057                ['compression_flags']=>integer()            //
2058                ['m_dwScale']=>integer()                    // scalefactor for lossy compression - related to m_wQuality as: $m_wQuality = round((2000 - $m_dwScale) / 20)
2059                ['m_dwBlockSize']=>integer()                // number of samples in encoded blocks
2060                ['m_wQuality']=>integer()                   // quality factor (0=most compressed lossy; 99=best quality lossy; 100=lossless)
2061                ['m_wMarkDistance']=>integer()              // distance between marks in bytes
2062                ['m_wReserved']=>integer()                  //
2063                ['m_dwOrgSize']=>integer()                  // original file size in bytes
2064                ['m_bFactExists']=>integer()                // indicates if 'fact' chunk exists in the original file
2065                ['m_dwRiffChunkSize']=>integer()            // riff chunk size in the original file
2066            }                                               //
2067            ['quality_factor']=>integer()                   // alias of ['raw']['m_wQuality']
2068        }                                                   //
2069    }                                                       //
2070
2071
2072    ['shn']=>array() {             // Shorten - lossless audio compression
2073        ['seektable']=>array() {   //
2074            ['length']=>integer()  //
2075            ['offset']=>integer()  //
2076            ['present']=>boolean() //
2077        }                          //
2078        ['version']=>integer()     //
2079    }                              //
2080
2081
2082    ['swf']=>array() {                  // SWF - ShockWave Flash (www.openswf.org)
2083        ['header']=>array() {           //
2084            ['frame_count']=>integer()  //
2085            ['frame_height']=>integer() //
2086            ['frame_width']=>integer()  //
2087            ['length']=>integer()       //
2088            ['signature']=>string()     //
2089            ['version']=>integer()      //
2090        }                               //
2091        ['bgcolor']=>string()           //
2092        ['tags']=>array()               //
2093    }                                   //
2094
2095['tak_audio']=>array() {                    // TAK - Tom's lossless Audio Kompressor format
2096        ['raw']=>array() {                      //
2097            ['magic']=>string()                 //
2098            ['STREAMINFO']=>string()            //
2099            ['MD5Data']=>string()               //
2100            ['header_data']=>string()           // Original wave header data to enable perfect reconstruction
2101            ['footer_data']=>string()           // --||--
2102        }                                       //
2103        ['channels']=>integer()                 //
2104        ['bits_per_sample']=>integer()          //
2105        ['sample_rate']=>integer()              //
2106        ['samples']=>integer()                  //
2107        ['framesize']=>string()                 //
2108        ['codectype']=>string()                 //
2109        ['version']=>string()                   //
2110        ['profile']=>string()                   //
2111        ['lastframe_pos']=>integer()            //
2112        ['last_frame_size']=>integer()          //
2113        ['playtime']=>integer()                 //
2114        ['compressed_size']=>integer()          //
2115        ['uncompressed_size']=>integer()        //
2116        ['compression_ratio']=>integer()        //
2117    }                                           //
2118
2119
2120    ['voc']=>array() {                            // VOC - SoundBlaster VOC audio format
2121        ['blocks']=>array() {                     //
2122            [<x>]=>array() {                      //
2123                ['bits_per_sample']=>integer()    //
2124                ['block_offset']=>integer()       //
2125                ['block_size']=>integer()         //
2126                ['block_type_id']=>integer()      //
2127                ['channels']=>integer()           //
2128                ['compression_name']=>string()    //
2129                ['compression_type']=>integer()   //
2130                ['pack_method']=>integer()        //
2131                ['sample_rate']=>integer()        //
2132                ['sample_rate_id']=>integer()     //
2133                ['stereo']=>boolean()             //
2134                ['time_constant']=>integer()      //
2135                ['wFormat']=>integer()            //
2136            }                                     //
2137        }                                         //
2138        ['compressed_bits_per_sample']=>integer() //
2139        ['header']=>array() {                     //
2140            ['datablock_offset']=>integer()       //
2141            ['major_version']=>integer()          //
2142            ['minor_version']=>integer()          //
2143        }                                         //
2144    }                                             //
2145
2146
2147    ['vqf']=>array() {                    // VQF - transform-domain weighted interleave Vector Quantization Format (lossy audio)
2148        ['COMM']=>array() {               //
2149            ['bitrate']=>integer()        //
2150            ['channel_mode']=>integer()   //
2151            ['sample_rate']=>integer()    //
2152            ['security_level']=>integer() //
2153        }                                 //
2154        ['DSIZ']=>integer()               //
2155        ['comments']=>array() {           // array of array of strings containing best data from any available metainformation tag (APE, ID3v2, ID3v1, Lyrics3, Vorbis, ASF, RIFF, Real, etc.)
2156            [<key name>]=>array()         // <key name> can be anything, usually 'artist', 'title', etc. Contains array of one or more values (eg: multiple artists are possible)
2157        }                                 //
2158        ['raw']=>array() {                //
2159            ['header_tag']=>string()      //
2160            ['size']=>integer()           //
2161            ['version']=>string()         //
2162        }                                 //
2163    }                                     //
2164
2165
2166    ['wavpack']=>array() {           // WavPack - lossless audio compression
2167        ['bits']=>integer()          //
2168        ['crc1']=>double()           //
2169        ['crc2']=>integer()          //
2170        ['extension']=>string()      //
2171        ['extra_bc']=>string()       //
2172        ['extras']=>string()         //
2173        ['flags_raw']=>integer()     //
2174        ['offset']=>integer()        //
2175        ['shift']=>integer()         //
2176        ['size']=>integer()          //
2177        ['total_samples']=>integer() //
2178        ['version']=>integer()       //
2179    }                                //
2180
2181
2182    ['zip']=>array() {                                           // ZIP - lossless data compression
2183        ['central_directory']=>array() {                         //
2184            [<x>]=>array() {                                     //
2185                ['compressed_size']=>integer()                   //
2186                ['compression_method']=>string()                 //
2187                ['create_version']=>string()                     //
2188                ['entry_offset']=>integer()                      //
2189                ['extract_version']=>string()                    //
2190                ['filename']=>string()                           //
2191                ['flags']=>array() {                             //
2192                    ['compression_speed']=>string()              //
2193                    ['data_descriptor_used']=>boolean()          //
2194                    ['encrypted']=>boolean()                     //
2195                }                                                //
2196                ['host_os']=>string()                            //
2197                ['last_modified_timestamp']=>integer()           //
2198                ['offset']=>integer()                            //
2199                ['raw']=>array() {                               //
2200                    ['compressed_size']=>integer()               //
2201                    ['compression_method']=>integer()            //
2202                    ['crc_32']=>double()                         //
2203                    ['create_version']=>integer()                //
2204                    ['disk_number_start']=>integer()             //
2205                    ['external_file_attrib']=>double()           //
2206                    ['extra_field_length']=>integer()            //
2207                    ['extract_version']=>integer()               //
2208                    ['file_comment_length']=>integer()           //
2209                    ['filename_length']=>integer()               //
2210                    ['general_flags']=>integer()                 //
2211                    ['internal_file_attrib']=>integer()          //
2212                    ['last_mod_file_date']=>integer()            //
2213                    ['last_mod_file_time']=>integer()            //
2214                    ['local_header_offset']=>integer()           //
2215                    ['signature']=>integer()                     //
2216                    ['uncompressed_size']=>integer()             //
2217                }                                                //
2218                ['uncompressed_size']=>integer()                 //
2219            }                                                    //
2220        }                                                        //
2221        ['comments']=>array() {                                  //
2222            ['comment']=>string()                                //
2223        }                                                        //
2224        ['compressed_size']=>integer()                           //
2225        ['compression_method']=>string()                         //
2226        ['compression_speed']=>string()                          //
2227        ['end_central_directory']=>array() {                     //
2228            ['comment']=>string()                                //
2229            ['comment_length']=>integer()                        //
2230            ['directory_entries_this_disk']=>integer()           //
2231            ['directory_entries_total']=>integer()               //
2232            ['directory_offset']=>integer()                      //
2233            ['directory_size']=>integer()                        //
2234            ['disk_number_current']=>integer()                   //
2235            ['disk_number_start_directory']=>integer()           //
2236            ['offset']=>integer()                                //
2237            ['signature']=>integer()                             //
2238        }                                                        //
2239        ['entries']=>array() {                                   //
2240            [<x>]=>array() {                                     //
2241                ['compressed_size']=>integer()                   //
2242                ['compression_method']=>string()                 //
2243                ['extract_version']=>string()                    //
2244                ['filename']=>string()                           //
2245                ['flags']=>array() {                             //
2246                    ['compression_speed']=>string()              //
2247                    ['data_descriptor_used']=>boolean()          //
2248                    ['encrypted']=>boolean()                     //
2249                }                                                //
2250                ['host_os']=>string()                            //
2251                ['last_modified_timestamp']=>integer()           //
2252                ['offset']=>integer()                            //
2253                ['raw']=>array() {                               //
2254                    ['compressed_size']=>integer()               //
2255                    ['compression_method']=>integer()            //
2256                    ['crc_32']=>integer()                        //
2257                    ['extra_field_length']=>integer()            //
2258                    ['extract_version']=>integer()               //
2259                    ['filename_length']=>integer()               //
2260                    ['general_flags']=>integer()                 //
2261                    ['last_mod_file_date']=>integer()            //
2262                    ['last_mod_file_time']=>integer()            //
2263                    ['signature']=>integer()                     //
2264                    ['uncompressed_size']=>integer()             //
2265                }                                                //
2266                ['uncompressed_size']=>integer()                 //
2267            }                                                    //
2268        }                                                        //
2269        ['entries_count']=>integer()                             //
2270        ['files']=>array() {                                     // multidimensional tree-structure array listing of all files and directories in image
2271            [<directory name>]=>array()                          // entries of type array are directories (key is directory name), may contain files and/or other subdirectories
2272            [<file name>]=>integer()                             // entries of type integer are files (key is file name, value is file size in bytes)
2273        }                                                        //
2274        ['uncompressed_size']=>integer()                         //
2275    }                                                            //
2276}                                                                //
2277