Diff: STRATO-apps/wordpress_03/app/wp-includes/ID3/readme.txt

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
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 + *****************************************************************
9 + *****************************************************************
10 +
11 + getID3() is released under multiple licenses. You may choose
12 + from the following licenses, and use getID3 according to the
13 + terms of the license most suitable to your project.
14 +
15 + GNU GPL: https://gnu.org/licenses/gpl.html (v3)
16 + https://gnu.org/licenses/old-licenses/gpl-2.0.html (v2)
17 + https://gnu.org/licenses/old-licenses/gpl-1.0.html (v1)
18 +
19 + GNU LGPL: https://gnu.org/licenses/lgpl.html (v3)
20 +
21 + Mozilla MPL: https://www.mozilla.org/MPL/2.0/ (v2)
22 +
23 + getID3 Commercial License: https://www.getid3.org/#gCL
24 + (no longer available, existing licenses remain valid)
25 +
26 + *****************************************************************
27 + *****************************************************************
28 + Copies of each of the above licenses are included in the 'licenses'
29 + directory of the getID3 distribution.
30 +
31 +
32 + +----------------------------------------------+
33 + | If you want to donate, there is a link on |
34 + | https://www.getid3.org for PayPal donations. |
35 + +----------------------------------------------+
36 +
37 +
38 + Quick Start
39 + ===========================================================================
40 +
41 + Q: How can I check that getID3() works on my server/files?
42 + A: Unzip getID3() to a directory, then access /demos/demo.browse.php
43 +
44 +
45 +
46 + Support
47 + ===========================================================================
48 +
49 + Q: I have a question, or I found a bug. What do I do?
50 + A: The preferred method of support requests and/or bug reports is the
51 + forum at http://support.getid3.org/
52 +
53 +
54 +
55 + Sourceforge Notification
56 + ===========================================================================
57 +
58 + It's highly recommended that you sign up for notification from
59 + Sourceforge for when new versions are released. Please visit:
60 + http://sourceforge.net/project/showfiles.php?group_id=55859
61 + and click the little "monitor package" icon/link. If you're
62 + previously signed up for the mailing list, be aware that it has
63 + been discontinued, only the automated Sourceforge notification
64 + will be used from now on.
65 +
66 +
67 +
68 + What does getID3() do?
69 + ===========================================================================
70 +
71 + Reads & parses (to varying degrees):
72 + ¤ tags:
73 + * APE (v1 and v2)
74 + * ID3v1 (& ID3v1.1)
75 + * ID3v2 (v2.4, v2.3, v2.2)
76 + * Lyrics3 (v1 & v2)
77 +
78 + ¤ audio-lossy:
79 + * MP3/MP2/MP1
80 + * MPC / Musepack
81 + * Ogg (Vorbis, OggFLAC, Speex, Opus)
82 + * AAC / MP4
83 + * AC3
84 + * DTS
85 + * RealAudio
86 + * Speex
87 + * DSS
88 + * VQF
89 +
90 + ¤ audio-lossless:
91 + * AIFF
92 + * AU
93 + * Bonk
94 + * CD-audio (*.cda)
95 + * FLAC
96 + * LA (Lossless Audio)
97 + * LiteWave
98 + * LPAC
99 + * MIDI
100 + * Monkey's Audio
101 + * OptimFROG
102 + * RKAU
103 + * Shorten
104 + * TTA
105 + * VOC
106 + * WAV (RIFF)
107 + * WavPack
108 +
109 + ¤ audio-video:
110 + * ASF: ASF, Windows Media Audio (WMA), Windows Media Video (WMV)
111 + * AVI (RIFF)
112 + * Flash
113 + * Matroska (MKV)
114 + * MPEG-1 / MPEG-2
115 + * NSV (Nullsoft Streaming Video)
116 + * Quicktime (including MP4)
117 + * RealVideo
118 +
119 + ¤ still image:
120 + * BMP
121 + * GIF
122 + * JPEG
123 + * PNG
124 + * TIFF
125 + * SWF (Flash)
126 + * PhotoCD
127 +
128 + ¤ data:
129 + * ISO-9660 CD-ROM image (directory structure)
130 + * SZIP (limited support)
131 + * ZIP (directory structure)
132 + * TAR
133 + * CUE
134 +
135 +
136 + Writes:
137 + * ID3v1 (& ID3v1.1)
138 + * ID3v2 (v2.3 & v2.4)
139 + * VorbisComment on OggVorbis
140 + * VorbisComment on FLAC (not OggFLAC)
141 + * APE v2
142 + * Lyrics3 (delete only)
143 +
144 +
145 +
146 + Requirements
147 + ===========================================================================
148 +
149 + * PHP 4.2.0 up to 5.2.x for getID3() 1.7.x (and earlier)
150 + * PHP 5.0.5 (or higher) for getID3() 1.8.x (and up)
151 + * PHP 5.3.0 (or higher) for getID3() 1.9.17 (and up)
152 + * PHP 5.3.0 (or higher) for getID3() 2.0.x (and up)
153 + * at least 4MB memory for PHP. 8MB or more is highly recommended.
154 + 12MB is required with all modules loaded.
155 +
156 +
157 +
158 + Usage
159 + ===========================================================================
160 +
161 + See /demos/demo.basic.php for a very basic use of getID3() with no
162 + fancy output, just scanning one file.
163 +
164 + See structure.txt for the returned data structure.
165 +
166 + *> For an example of a complete directory-browsing, <*
167 + *> file-scanning implementation of getID3(), please run <*
168 + *> /demos/demo.browse.php <*
169 +
170 + See /demos/demo.mysql.php for a sample recursive scanning code that
171 + scans every file in a given directory, and all sub-directories, stores
172 + the results in a database and allows various analysis / maintenance
173 + operations
174 +
175 + To analyze remote files over HTTP or FTP you need to copy the file
176 + locally first before running getID3(). Your code would look something
177 + like this:
178 +
179 + // Copy remote file locally to scan with getID3()
180 + $remotefilename = 'http://www.example.com/filename.mp3';
181 + if ($fp_remote = fopen($remotefilename, 'rb')) {
182 + $localtempfilename = tempnam('/tmp', 'getID3');
183 + if ($fp_local = fopen($localtempfilename, 'wb')) {
184 + while ($buffer = fread($fp_remote, 32768)) {
185 + fwrite($fp_local, $buffer);
186 + }
187 + fclose($fp_local);
188 +
189 + $remote_headers = array_change_key_case(get_headers($remotefilename, 1), CASE_LOWER);
190 + $remote_filesize = (isset($remote_headers['content-length']) ? (is_array($remote_headers['content-length']) ? $remote_headers['content-length'][count($remote_headers['content-length']) - 1] : $remote_headers['content-length']) : null);
191 +
192 + // Initialize getID3 engine
193 + $getID3 = new getID3;
194 +
195 + $ThisFileInfo = $getID3->analyze($localtempfilename, $remote_filesize, basename($remotefilename));
196 +
197 + // Delete temporary file
198 + unlink($localtempfilename);
199 + }
200 + fclose($fp_remote);
201 + }
202 +
203 + Note: since v1.9.9-20150212 it is possible a second and third parameter
204 + to $getID3->analyze(), for original filesize and original filename
205 + respectively. This permits you to download only a portion of a large remote
206 + file but get accurate playtime estimates, assuming the format only requires
207 + the beginning of the file for correct format analysis.
208 +
209 + See /demos/demo.write.php for how to write tags.
210 +
211 +
212 +
213 + What does the returned data structure look like?
214 + ===========================================================================
215 +
216 + See structure.txt
217 +
218 + It is recommended that you look at the output of
219 + /demos/demo.browse.php scanning the file(s) you're interested in to
220 + confirm what data is actually returned for any particular filetype in
221 + general, and your files in particular, as the actual data returned
222 + may vary considerably depending on what information is available in
223 + the file itself.
224 +
225 +
226 +
227 + Notes
228 + ===========================================================================
229 +
230 + getID3() 1.x:
231 + If the format parser encounters a critical problem, it will return
232 + something in $fileinfo['error'], describing the encountered error. If
233 + a less critical error or notice is generated it will appear in
234 + $fileinfo['warning']. Both keys may contain more than one warning or
235 + error. If something is returned in ['error'] then the file was not
236 + correctly parsed and returned data may or may not be correct and/or
237 + complete. If something is returned in ['warning'] (and not ['error'])
238 + then the data that is returned is OK - usually getID3() is reporting
239 + errors in the file that have been worked around due to known bugs in
240 + other programs. Some warnings may indicate that the data that is
241 + returned is OK but that some data could not be extracted due to
242 + errors in the file.
243 +
244 + getID3() 2.x:
245 + See above except errors are thrown (so you will only get one error).
246 +
247 +
248 +
249 + Disclaimer
250 + ===========================================================================
251 +
252 + getID3() has been tested on many systems, on many types of files,
253 + under many operating systems, and is generally believe to be stable
254 + and safe. That being said, there is still the chance there is an
255 + undiscovered and/or unfixed bug that may potentially corrupt your
256 + file, especially within the writing functions. By using getID3() you
257 + agree that it's not my fault if any of your files are corrupted.
258 + In fact, I'm not liable for anything :)
259 +
260 +
261 +
262 + License
263 + ===========================================================================
264 +
265 + GNU General Public License - see license.txt
266 +
267 + This program is free software; you can redistribute it and/or
268 + modify it under the terms of the GNU General Public License
269 + as published by the Free Software Foundation; either version 2
270 + of the License, or (at your option) any later version.
271 +
272 + This program is distributed in the hope that it will be useful,
273 + but WITHOUT ANY WARRANTY; without even the implied warranty of
274 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
275 + GNU General Public License for more details.
276 +
277 + You should have received a copy of the GNU General Public License
278 + along with this program; if not, write to:
279 + Free Software Foundation, Inc.
280 + 59 Temple Place - Suite 330
281 + Boston, MA 02111-1307, USA.
282 +
283 + FAQ:
284 + Q: Can I use getID3() in my program? Do I need a commercial license?
285 + A: You're generally free to use getID3 however you see fit. The only
286 + case in which you would require a commercial license is if you're
287 + selling your closed-source program that integrates getID3. If you
288 + sell your program including a copy of getID3, that's fine as long
289 + as you include a copy of the sourcecode when you sell it. Or you
290 + can distribute your code without getID3 and say "download it from
291 + getid3.sourceforge.net"
292 +
293 +
294 +
295 + Why is it called "getID3()" if it does so much more than just that?
296 + ===========================================================================
297 +
298 + v0.1 did in fact just do that. I don't have a copy of code that old, but I
299 + could essentially write it today with a one-line function:
300 + function getID3($filename) { return unpack('a3TAG/a30title/a30artist/a30album/a4year/a28comment/c1track/c1genreid', substr(file_get_contents($filename), -128)); }
301 +
302 +
303 + Future Plans
304 + ===========================================================================
305 + https://www.getid3.org/phpBB3/viewforum.php?f=7
306 +
307 + * Better support for MP4 container format
308 + * Scan for appended ID3v2 tag at end of file per ID3v2.4 specs (Section 5.0)
309 + * Support for JPEG-2000 (http://www.morgan-multimedia.com/jpeg2000_overview.htm)
310 + * Support for MOD (mod/stm/s3m/it/xm/mtm/ult/669)
311 + * Support for ACE (thanks Vince)
312 + * Support for Ogg other than Vorbis, Speex and OggFlac (ie. Ogg+Xvid)
313 + * Ability to create Xing/LAME VBR header for VBR MP3s that are missing VBR header
314 + * Ability to "clean" ID3v2 padding (replace invalid padding with valid padding)
315 + * Warn if MP3s change version mid-stream (in full-scan mode)
316 + * check for corrupt/broken mid-file MP3 streams in histogram scan
317 + * Support for lossless-compression formats
318 + (http://www.firstpr.com.au/audiocomp/lossless/#Links)
319 + (http://compression.ca/act-sound.html)
320 + (http://web.inter.nl.net/users/hvdh/lossless/lossless.htm)
321 + * Support for RIFF-INFO chunks
322 + * http://lotto.st-andrews.ac.uk/~njh/tag_interchange.html
323 + (thanks Nick Humfrey <njhØsurgeradio*co*uk>)
324 + * http://abcavi.narod.ru/sof/abcavi/infotags.htm
325 + (thanks Kibi)
326 + * Better support for Bink video
327 + * http://www.hr/josip/DSP/AudioFile2.html
328 + * http://www.pcisys.net/~melanson/codecs/
329 + * Detect mp3PRO
330 + * Support for PSD
331 + * Support for JPC
332 + * Support for JP2
333 + * Support for JPX
334 + * Support for JB2
335 + * Support for IFF
336 + * Support for ICO
337 + * Support for ANI
338 + * Support for EXE (comments, author, etc) (thanks p*quaedackersØplanet*nl)
339 + * Support for DVD-IFO (region, subtitles, aspect ratio, etc)
340 + (thanks p*quaedackersØplanet*nl)
341 + * More complete support for SWF - parsing encapsulated MP3 and/or JPEG content
342 + (thanks n8n8Øyahoo*com)
343 + * Support for a2b
344 + * Optional scan-through-frames for AVI verification
345 + (thanks rockcohenØmassive-interactive*nl)
346 + * Support for TTF (thanks infoØbutterflyx*com)
347 + * Support for DSS (https://www.getid3.org/phpBB3/viewtopic.php?t=171)
348 + * Support for SMAF (http://smaf-yamaha.com/what/demo.html)
349 + https://www.getid3.org/phpBB3/viewtopic.php?t=182
350 + * Support for AMR (https://www.getid3.org/phpBB3/viewtopic.php?t=195)
351 + * Support for 3gpp (https://www.getid3.org/phpBB3/viewtopic.php?t=195)
352 + * Support for ID4 (http://www.wackysoft.cjb.net grizlyY2KØhotmail*com)
353 + * Parse XML data returned in Ogg comments
354 + * Parse XML data from Quicktime SMIL metafiles (klausrathØmac*com)
355 + * ID3v2 genre string creator function
356 + * More complete parsing of JPG
357 + * Support for all old-style ASF packets
358 + * ASF/WMA/WMV tag writing
359 + * Parse declared T??? ID3v2 text information frames, where appropriate
360 + (thanks Christian Fritz for the idea)
361 + * Recognize encoder:
362 + http://www.guerillasoft.com/EncSpot2/index.html
363 + http://ff123.net/identify.html
364 + http://www.hydrogenaudio.org/?act=ST&f=16&t=9414
365 + http://www.hydrogenaudio.org/?showtopic=11785
366 + * Support for other OS/2 bitmap structures: Bitmap Array('BA'),
367 + Color Icon('CI'), Color Pointer('CP'), Icon('IC'), Pointer ('PT')
368 + http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm
369 + * Support for WavPack RAW mode
370 + * ASF/WMA/WMV data packet parsing
371 + * ID3v2FrameFlagsLookupTagAlter()
372 + * ID3v2FrameFlagsLookupFileAlter()
373 + * obey ID3v2 tag alter/preserve/discard rules
374 + * http://www.geocities.com/SiliconValley/Sector/9654/Softdoc/Illyrium/Aolyr.htm
375 + * proper checking for LINK/LNK frame validity in ID3v2 writing
376 + * proper checking for ASPI-TLEN frame validity in ID3v2 writing
377 + * proper checking for COMR frame validity in ID3v2 writing
378 + * http://www.geocities.co.jp/SiliconValley-Oakland/3664/index.html
379 + * decode GEOB ID3v2 structure as encoded by RealJukebox,
380 + decode NCON ID3v2 structure as encoded by MusicMatch
381 + (probably won't happen - the formats are proprietary)
382 +
383 +
384 +
385 + Known Bugs/Issues in getID3() that may be fixed eventually
386 + ===========================================================================
387 + https://www.getid3.org/phpBB3/viewtopic.php?t=25
388 +
389 + * Cannot determine bitrate for MPEG video with VBR video data
390 + (need documentation)
391 + * Interlace/progressive cannot be determined for MPEG video
392 + (need documentation)
393 + * MIDI playtime is sometimes inaccurate
394 + * AAC-RAW mode files cannot be identified
395 + * WavPack-RAW mode files cannot be identified
396 + * mp4 files report lots of "Unknown QuickTime atom type"
397 + (need documentation)
398 + * Encrypted ASF/WMA/WMV files warn about "unhandled GUID
399 + ASF_Content_Encryption_Object"
400 + * Bitrate split between audio and video cannot be calculated for
401 + NSV, only the total bitrate. (need documentation)
402 + * All Ogg formats (Vorbis, OggFLAC, Speex) are affected by the
403 + problem of large VorbisComments spanning multiple Ogg pages, but
404 + but only OggVorbis files can be processed with vorbiscomment.
405 + * The version of "head" supplied with Mac OS 10.2.8 (maybe other
406 + versions too) does only understands a single option (-n) and
407 + therefore fails. getID3 ignores this and returns wrong md5_data.
408 +
409 +
410 +
411 + Known Bugs/Issues in getID3() that cannot be fixed
412 + --------------------------------------------------
413 + https://www.getid3.org/phpBB3/viewtopic.php?t=25
414 +
415 + * 32-bit PHP installations only:
416 + Files larger than 2GB cannot always be parsed fully by getID3()
417 + due to limitations in the 32-bit PHP filesystem functions.
418 + NOTE: Since v1.7.8b3 there is partial support for larger-than-
419 + 2GB files, most of which will parse OK, as long as no critical
420 + data is located beyond the 2GB offset.
421 + Known will-work:
422 + * all file formats on 64-bit PHP
423 + * ZIP (format doesn't support files >2GB)
424 + * FLAC (current encoders don't support files >2GB)
425 + Known will-not-work:
426 + * ID3v1 tags (always located at end-of-file)
427 + * Lyrics3 tags (always located at end-of-file)
428 + * APE tags (always located at end-of-file)
429 + Maybe-will-work:
430 + * Quicktime (will work if needed metadata is before 2GB offset,
431 + that is if the file has been hinted/optimized for streaming)
432 + * RIFF.WAV (should work fine, but gives warnings about not being
433 + able to parse all chunks)
434 + * RIFF.AVI (playtime will probably be wrong, is only based on
435 + "movi" chunk that fits in the first 2GB, should issue error
436 + to show that playtime is incorrect. Other data should be mostly
437 + correct, assuming that data is constant throughout the file)
438 + * PHP <= v5 on Windows cannot read UTF-8 filenames
439 +
440 +
441 + Known Bugs/Issues in other programs
442 + -----------------------------------
443 + https://www.getid3.org/phpBB3/viewtopic.php?t=25
444 +
445 + * MusicBrainz Picard (at least up to v1.3.2) writes multiple
446 + ID3v2.3 genres in non-standard forward-slash separated text
447 + rather than parenthesis-numeric+refinement style per the ID3v2.3
448 + specs. Tags written in ID3v2.4 mode are written correctly.
449 + (detected and worked around by getID3())
450 + * PZ TagEditor v4.53.408 has been known to insert ID3v2.3 frames
451 + into an existing ID3v2.2 tag which, of course, breaks things
452 + * Windows Media Player (up to v11) and iTunes (up to v10+) do
453 + not correctly handle ID3v2.3 tags with UTF-16BE+BOM
454 + encoding (they assume the data is UTF-16LE+BOM and either
455 + crash (WMP) or output Asian character set (iTunes)
456 + * Winamp (up to v2.80 at least) does not support ID3v2.4 tags,
457 + only ID3v2.3
458 + see: http://forums.winamp.com/showthread.php?postid=387524
459 + * Some versions of Helium2 (www.helium2.com) do not write
460 + ID3v2.4-compliant Frame Sizes, even though the tag is marked
461 + as ID3v2.4) (detected by getID3())
462 + * MP3ext V3.3.17 places a non-compliant padding string at the end
463 + of the ID3v2 header. This is supposedly fixed in v3.4b21 but
464 + only if you manually add a registry key. This fix is not yet
465 + confirmed. (detected by getID3())
466 + * CDex v1.40 (fixed by v1.50b7) writes non-compliant Ogg comment
467 + strings, supposed to be in the format "NAME=value" but actually
468 + written just "value" (detected by getID3())
469 + * Oggenc 0.9-rc3 flags the encoded file as ABR whether it's
470 + actually ABR or VBR.
471 + * iTunes (versions "v7.0.0.70" is known-guilty, probably
472 + other versions are too) writes ID3v2.3 comment tags using an
473 + ID3v2.2 frame name (3-bytes) null-padded to 4 bytes which is
474 + not valid for ID3v2.3+
475 + (detected by getID3() since 1.9.12-201603221746)
476 + * iTunes (versions "X v2.0.3", "v3.0.1" are known-guilty, probably
477 + other versions are too) writes ID3v2.3 comment tags using a
478 + frame name 'COM ' which is not valid for ID3v2.3+ (it's an
479 + ID3v2.2-style frame name) (detected by getID3())
480 + * MP2enc does not encode mono CBR MP2 files properly (half speed
481 + sound and double playtime)
482 + * MP2enc does not encode mono VBR MP2 files properly (actually
483 + encoded as stereo)
484 + * tooLAME does not encode mono VBR MP2 files properly (actually
485 + encoded as stereo)
486 + * AACenc encodes files in VBR mode (actually ABR) even if CBR is
487 + specified
488 + * AAC/ADIF - bitrate_mode = cbr for vbr files
489 + * LAME 3.90-3.92 prepends one frame of null data (space for the
490 + LAME/VBR header, but it never gets written) when encoding in CBR
491 + mode with the DLL
492 + * Ahead Nero encodes TwinVQF with a DSIZ value (which is supposed
493 + to be the filesize in bytes) of "0" for TwinVQF v1.0 and "1" for
494 + TwinVQF v2.0 (detected by getID3())
495 + * Ahead Nero encodes TwinVQF files 1 second shorter than they
496 + should be
497 + * AAC-ADTS files are always actually encoded VBR, even if CBR mode
498 + is specified (the CBR-mode switches on the encoder enable ABR
499 + mode, not CBR as such, but it's not possible to tell the
500 + difference between such ABR files and true VBR)
501 + * STREAMINFO.audio_signature in OggFLAC is always null. "The reason
502 + it's like that is because there is no seeking support in
503 + libOggFLAC yet, so it has no way to go back and write the
504 + computed sum after encoding. Seeking support in Ogg FLAC is the
505 + #1 item for the next release." - Josh Coalson (FLAC developer)
506 + NOTE: getID3() will calculate md5_data in a method similar to
507 + other file formats, but that value cannot be compared to the
508 + md5_data value from FLAC data in a FLAC file format.
509 + * STREAMINFO.audio_signature is not calculated in FLAC v0.3.0 &
510 + v0.4.0 - getID3() will calculate md5_data in a method similar to
511 + other file formats, but that value cannot be compared to the
512 + md5_data value from FLAC v0.5.0+
513 + * RioPort (various versions including 2.0 and 3.11) tags ID3v2 with
514 + a WCOM frame that has no data portion
515 + * Earlier versions of Coolplayer adds illegal ID3 tags to Ogg Vorbis
516 + files, thus making them corrupt.
517 + * Meracl ID3 Tag Writer v1.3.4 (and older) incorrectly truncates the
518 + last byte of data from an MP3 file when appending a new ID3v1 tag.
519 + (detected by getID3())
520 + * Lossless-Audio files encoded with and without the -noseek switch
521 + do actually differ internally and therefore cannot match md5_data
522 + * iTunes has been known to append a new ID3v1 tag on the end of an
523 + existing ID3v1 tag when ID3v2 tag is also present
524 + (detected by getID3())
525 + * MediaMonkey may write a blank RGAD ID3v2 frame but put actual
526 + replay gain adjustments in a series of user-defined TXXX frames
527 + (detected and handled by getID3() since v1.9.2)
528 +
529 +
530 +
531 +
532 + Reference material:
533 + ===========================================================================
534 +
535 + [www.id3.org material now mirrored at http://id3lib.sourceforge.net/id3/]
536 + * http://www.id3.org/id3v2.4.0-structure.txt
537 + * http://www.id3.org/id3v2.4.0-frames.txt
538 + * http://www.id3.org/id3v2.4.0-changes.txt
539 + * http://www.id3.org/id3v2.3.0.txt
540 + * http://www.id3.org/id3v2-00.txt
541 + * http://www.id3.org/mp3frame.html
542 + * http://minnie.tuhs.org/pipermail/mp3encoder/2001-January/001800.html <mathewhendry@hotmail.com>
543 + * http://www.dv.co.yu/mpgscript/mpeghdr.htm
544 + * http://www.mp3-tech.org/programmer/frame_header.html
545 + * http://users.belgacom.net/gc247244/extra/tag.html
546 + * http://gabriel.mp3-tech.org/mp3infotag.html
547 + * http://www.id3.org/iso4217.html
548 + * http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
549 + * http://www.xiph.org/ogg/vorbis/doc/framing.html
550 + * http://www.xiph.org/ogg/vorbis/doc/v-comment.html
551 + * http://leknor.com/code/php/class.ogg.php.txt
552 + * http://www.id3.org/iso639-2.html
553 + * http://www.id3.org/lyrics3.html
554 + * http://www.id3.org/lyrics3200.html
555 + * http://www.psc.edu/general/software/packages/ieee/ieee.html
556 + * http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/ieee-expl.html
557 + * http://www.scri.fsu.edu/~jac/MAD3401/Backgrnd/binary.html
558 + * http://www.jmcgowan.com/avi.html
559 + * http://www.wotsit.org/
560 + * http://www.herdsoft.com/ti/davincie/davp3xo2.htm
561 + * http://www.mathdogs.com/vorbis-illuminated/bitstream-appendix.html
562 + * "Standard MIDI File Format" by Dustin Caldwell (from www.wotsit.org)
563 + * http://midistudio.com/Help/GMSpecs_Patches.htm
564 + * http://www.xiph.org/archives/vorbis/200109/0459.html
565 + * http://www.replaygain.org/
566 + * http://www.lossless-audio.com/
567 + * http://download.microsoft.com/download/winmediatech40/Doc/1.0/WIN98MeXP/EN-US/ASF_Specification_v.1.0.exe
568 + * http://mediaxw.sourceforge.net/files/doc/Active%20Streaming%20Format%20(ASF)%201.0%20Specification.pdf
569 + * http://www.uni-jena.de/~pfk/mpp/sv8/ (archived at http://www.hydrogenaudio.org/musepack/klemm/www.personal.uni-jena.de/~pfk/mpp/sv8/)
570 + * http://jfaul.de/atl/
571 + * http://www.uni-jena.de/~pfk/mpp/ (archived at http://www.hydrogenaudio.org/musepack/klemm/www.personal.uni-jena.de/~pfk/mpp/)
572 + * http://www.libpng.org/pub/png/spec/png-1.2-pdg.html
573 + * http://www.real.com/devzone/library/creating/rmsdk/doc/rmff.htm
574 + * http://www.fastgraph.com/help/bmp_os2_header_format.html
575 + * http://netghost.narod.ru/gff/graphics/summary/os2bmp.htm
576 + * http://flac.sourceforge.net/format.html
577 + * http://www.research.att.com/projects/mpegaudio/mpeg2.html
578 + * http://www.audiocoding.com/wiki/index.php?page=AAC
579 + * http://libmpeg.org/mpeg4/doc/w2203tfs.pdf
580 + * http://www.geocities.com/xhelmboyx/quicktime/formats/qtm-layout.txt
581 + * http://developer.apple.com/techpubs/quicktime/qtdevdocs/RM/frameset.htm
582 + * http://www.nullsoft.com/nsv/
583 + * http://www.wotsit.org/download.asp?f=iso9660
584 + * http://sandbox.mc.edu/~bennet/cs110/tc/tctod.html
585 + * http://www.cdroller.com/htm/readdata.html
586 + * http://www.speex.org/manual/node10.html
587 + * http://www.harmony-central.com/Computer/Programming/aiff-file-format.doc
588 + * http://www.faqs.org/rfcs/rfc2361.html
589 + * http://ghido.shelter.ro/
590 + * http://www.ebu.ch/tech_t3285.pdf
591 + * http://www.sr.se/utveckling/tu/bwf
592 + * http://ftp.aessc.org/pub/aes46-2002.pdf
593 + * http://cartchunk.org:8080/
594 + * http://www.broadcastpapers.com/radio/cartchunk01.htm
595 + * http://www.hr/josip/DSP/AudioFile2.html
596 + * http://home.attbi.com/~chris.bagwell/AudioFormats-11.html
597 + * http://www.pure-mac.com/extkey.html
598 + * http://cesnet.dl.sourceforge.net/sourceforge/bonkenc/bonk-binary-format-0.9.txt
599 + * http://www.headbands.com/gspot/
600 + * http://www.openswf.org/spec/SWFfileformat.html
601 + * http://j-faul.virtualave.net/
602 + * http://www.btinternet.com/~AnthonyJ/Atari/programming/avr_format.html
603 + * http://cui.unige.ch/OSG/info/AudioFormats/ap11.html
604 + * http://sswf.sourceforge.net/SWFalexref.html
605 + * http://www.geocities.com/xhelmboyx/quicktime/formats/qti-layout.txt
606 + * http://www-lehre.informatik.uni-osnabrueck.de/~fbstark/diplom/docs/swf/Flash_Uncovered.htm
607 + * http://developer.apple.com/quicktime/icefloe/dispatch012.html
608 + * http://www.csdn.net/Dev/Format/graphics/PCD.htm
609 + * http://tta.iszf.irk.ru/
610 + * http://www.atsc.org/standards/a_52a.pdf
611 + * http://www.alanwood.net/unicode/
612 + * http://www.freelists.org/archives/matroska-devel/07-2003/msg00010.html
613 + * http://www.its.msstate.edu/net/real/reports/config/tags.stats
614 + * http://homepages.slingshot.co.nz/~helmboy/quicktime/formats/qtm-layout.txt
615 + * http://brennan.young.net/Comp/LiveStage/things.html
616 + * http://www.multiweb.cz/twoinches/MP3inside.htm
617 + * http://www.geocities.co.jp/SiliconValley-Oakland/3664/alittle.html#GenreExtended
618 + * http://www.mactech.com/articles/mactech/Vol.06/06.01/SANENormalized/
619 + * http://www.unicode.org/unicode/faq/utf_bom.html
620 + * http://tta.corecodec.org/?menu=format
621 + * http://www.scvi.net/nsvformat.htm
622 + * http://pda.etsi.org/pda/queryform.asp
623 + * http://cpansearch.perl.org/src/RGIBSON/Audio-DSS-0.02/lib/Audio/DSS.pm
624 + * http://trac.musepack.net/trac/wiki/SV8Specification
625 + * http://wyday.com/cuesharp/specification.php
626 + * http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Nikon.html
627 + * http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header
628 + * http://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf
629 + * https://fileformats.fandom.com/wiki/Torrent_file