Ticket #24737: ID3-1.9.7.diff
File ID3-1.9.7.diff, 55.3 KB (added by , 12 years ago) |
---|
-
wp-includes/ID3/class-getid3.php
diff --git a/wp-includes/ID3/class-getid3.php b/wp-includes/ID3/class-getid3.php index 8c18163..454829c 100644
a b class getID3 103 103 protected $startup_warning = ''; 104 104 protected $memory_limit = 0; 105 105 106 const VERSION = '1.9. 5-20130220';106 const VERSION = '1.9.7-20130705'; 107 107 const FREAD_BUFFER_SIZE = 32768; 108 108 109 109 const ATTACHMENTS_NONE = false; … … class getID3 221 221 return $this->option_fread_buffer_size; 222 222 } 223 223 224 224 225 // public: setOption 225 226 public function setOption($optArray) { 226 227 if (!is_array($optArray) || empty($optArray)) { … … class getID3 235 236 return true; 236 237 } 237 238 239 238 240 public function openfile($filename) { 239 241 try { 240 242 if (!empty($this->startup_error)) { … … class getID3 293 295 throw new getid3_exception('PHP seems to think the file is larger than '.round(PHP_INT_MAX / 1073741824).'GB, but filesystem reports it as '.number_format($real_filesize, 3).'GB, please report to info@getid3.org'); 294 296 } 295 297 $this->info['filesize'] = $real_filesize; 296 $this-> error('File is larger than '.round(PHP_INT_MAX / 1073741824).'GB (filesystem reports it as '.number_format($real_filesize, 3).'GB) and is not properly supported by PHP.');298 $this->warning('File is larger than '.round(PHP_INT_MAX / 1073741824).'GB (filesystem reports it as '.number_format($real_filesize, 3).'GB) and is not properly supported by PHP.'); 297 299 } 298 300 } 299 301 … … abstract class getid3_handler 1764 1766 1765 1767 return $attachment; 1766 1768 } 1769 1767 1770 } 1768 1771 1769 class getid3_exception extends Exception { 1772 1773 class getid3_exception extends Exception 1774 { 1770 1775 public $message; 1771 } 1772 No newline at end of file 1776 } -
wp-includes/ID3/license.txt
diff --git a/wp-includes/ID3/license.txt b/wp-includes/ID3/license.txt old mode 100644 new mode 100755 index 9fec808..85f4356
a b 1 GNU GENERAL PUBLIC LICENSE 2 Version 2, June 1991 1 ///////////////////////////////////////////////////////////////// 2 /// getID3() by James Heinrich <info@getid3.org> // 3 // available at http://getid3.sourceforge.net // 4 // or http://www.getid3.org // 5 ///////////////////////////////////////////////////////////////// 3 6 4 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 5 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 6 Everyone is permitted to copy and distribute verbatim copies 7 of this license document, but changing it is not allowed. 7 ***************************************************************** 8 ***************************************************************** 8 9 9 Preamble 10 getID3() is released under multiple licenses. You may choose 11 from the following licenses, and use getID3 according to the 12 terms of the license most suitable to your project. 10 13 11 The licenses for most software are designed to take away your 12 freedom to share and change it. By contrast, the GNU General Public 13 License is intended to guarantee your freedom to share and change free 14 software--to make sure the software is free for all its users. This 15 General Public License applies to most of the Free Software 16 Foundation's software and to any other program whose authors commit to 17 using it. (Some other Free Software Foundation software is covered by 18 the GNU Library General Public License instead.) You can apply it to 19 your programs, too. 14 GNU GPL: https://gnu.org/licenses/gpl.html (v3) 15 https://gnu.org/licenses/old-licenses/gpl-2.0.html (v2) 16 https://gnu.org/licenses/old-licenses/gpl-1.0.html (v1) 20 17 21 When we speak of free software, we are referring to freedom, not 22 price. Our General Public Licenses are designed to make sure that you 23 have the freedom to distribute copies of free software (and charge for 24 this service if you wish), that you receive source code or can get it 25 if you want it, that you can change the software or use pieces of it 26 in new free programs; and that you know you can do these things. 18 GNU LGPL: https://gnu.org/licenses/lgpl.html (v3) 27 19 28 To protect your rights, we need to make restrictions that forbid 29 anyone to deny you these rights or to ask you to surrender the rights. 30 These restrictions translate to certain responsibilities for you if you 31 distribute copies of the software, or if you modify it. 20 Mozilla MPL: http://www.mozilla.org/MPL/2.0/ (v2) 32 21 33 For example, if you distribute copies of such a program, whether 34 gratis or for a fee, you must give the recipients all the rights that 35 you have. You must make sure that they, too, receive or can get the 36 source code. And you must show them these terms so they know their 37 rights. 22 getID3 Commercial License: http://getid3.org/#gCL (payment required) 38 23 39 We protect your rights with two steps: (1) copyright the software, and 40 (2) offer you this license which gives you legal permission to copy, 41 distribute and/or modify the software. 24 ***************************************************************** 25 ***************************************************************** 42 26 43 Also, for each author's protection and ours, we want to make certain44 that everyone understands that there is no warranty for this free45 software. If the software is modified by someone else and passed on, we46 want its recipients to know that what they have is not the original, so47 that any problems introduced by others will not reflect on the original48 authors' reputations.49 50 Finally, any free program is threatened constantly by software51 patents. We wish to avoid the danger that redistributors of a free52 program will individually obtain patent licenses, in effect making the53 program proprietary. To prevent this, we have made it clear that any54 patent must be licensed for everyone's free use or not licensed at all.55 56 The precise terms and conditions for copying, distribution and57 modification follow.58 59 27 60 GNU GENERAL PUBLIC LICENSE61 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION62 63 0. This License applies to any program or other work which contains64 a notice placed by the copyright holder saying it may be distributed65 under the terms of this General Public License. The "Program", below,66 refers to any such program or work, and a "work based on the Program"67 means either the Program or any derivative work under copyright law:68 that is to say, a work containing the Program or a portion of it,69 either verbatim or with modifications and/or translated into another70 language. (Hereinafter, translation is included without limitation in71 the term "modification".) Each licensee is addressed as "you".72 73 Activities other than copying, distribution and modification are not74 covered by this License; they are outside its scope. The act of75 running the Program is not restricted, and the output from the Program76 is covered only if its contents constitute a work based on the77 Program (independent of having been made by running the Program).78 Whether that is true depends on what the Program does.79 80 1. You may copy and distribute verbatim copies of the Program's81 source code as you receive it, in any medium, provided that you82 conspicuously and appropriately publish on each copy an appropriate83 copyright notice and disclaimer of warranty; keep intact all the84 notices that refer to this License and to the absence of any warranty;85 and give any other recipients of the Program a copy of this License86 along with the Program.87 88 You may charge a fee for the physical act of transferring a copy, and89 you may at your option offer warranty protection in exchange for a fee.90 91 2. You may modify your copy or copies of the Program or any portion92 of it, thus forming a work based on the Program, and copy and93 distribute such modifications or work under the terms of Section 194 above, provided that you also meet all of these conditions:95 96 a) You must cause the modified files to carry prominent notices97 stating that you changed the files and the date of any change.98 99 b) You must cause any work that you distribute or publish, that in100 whole or in part contains or is derived from the Program or any101 part thereof, to be licensed as a whole at no charge to all third102 parties under the terms of this License.103 104 c) If the modified program normally reads commands interactively105 when run, you must cause it, when started running for such106 interactive use in the most ordinary way, to print or display an107 announcement including an appropriate copyright notice and a108 notice that there is no warranty (or else, saying that you provide109 a warranty) and that users may redistribute the program under110 these conditions, and telling the user how to view a copy of this111 License. (Exception: if the Program itself is interactive but112 does not normally print such an announcement, your work based on113 the Program is not required to print an announcement.)114 115 28 116 These requirements apply to the modified work as a whole. If117 identifiable sections of that work are not derived from the Program,118 and can be reasonably considered independent and separate works in119 themselves, then this License, and its terms, do not apply to those120 sections when you distribute them as separate works. But when you121 distribute the same sections as part of a whole which is a work based122 on the Program, the distribution of the whole must be on the terms of123 this License, whose permissions for other licensees extend to the124 entire whole, and thus to each and every part regardless of who wrote it.125 126 Thus, it is not the intent of this section to claim rights or contest127 your rights to work written entirely by you; rather, the intent is to128 exercise the right to control the distribution of derivative or129 collective works based on the Program.130 131 In addition, mere aggregation of another work not based on the Program132 with the Program (or with a work based on the Program) on a volume of133 a storage or distribution medium does not bring the other work under134 the scope of this License.135 136 3. You may copy and distribute the Program (or a work based on it,137 under Section 2) in object code or executable form under the terms of138 Sections 1 and 2 above provided that you also do one of the following:139 140 a) Accompany it with the complete corresponding machine-readable141 source code, which must be distributed under the terms of Sections142 1 and 2 above on a medium customarily used for software interchange; or,143 144 b) Accompany it with a written offer, valid for at least three145 years, to give any third party, for a charge no more than your146 cost of physically performing source distribution, a complete147 machine-readable copy of the corresponding source code, to be148 distributed under the terms of Sections 1 and 2 above on a medium149 customarily used for software interchange; or,150 151 c) Accompany it with the information you received as to the offer152 to distribute corresponding source code. (This alternative is153 allowed only for noncommercial distribution and only if you154 received the program in object code or executable form with such155 an offer, in accord with Subsection b above.)156 157 The source code for a work means the preferred form of the work for158 making modifications to it. For an executable work, complete source159 code means all the source code for all modules it contains, plus any160 associated interface definition files, plus the scripts used to161 control compilation and installation of the executable. However, as a162 special exception, the source code distributed need not include163 anything that is normally distributed (in either source or binary164 form) with the major components (compiler, kernel, and so on) of the165 operating system on which the executable runs, unless that component166 itself accompanies the executable.167 168 If distribution of executable or object code is made by offering169 access to copy from a designated place, then offering equivalent170 access to copy the source code from the same place counts as171 distribution of the source code, even though third parties are not172 compelled to copy the source along with the object code.173 174 29 175 4. You may not copy, modify, sublicense, or distribute the Program176 except as expressly provided under this License. Any attempt177 otherwise to copy, modify, sublicense or distribute the Program is178 void, and will automatically terminate your rights under this License.179 However, parties who have received copies, or rights, from you under180 this License will not have their licenses terminated so long as such181 parties remain in full compliance.182 183 5. You are not required to accept this License, since you have not184 signed it. However, nothing else grants you permission to modify or185 distribute the Program or its derivative works. These actions are186 prohibited by law if you do not accept this License. Therefore, by187 modifying or distributing the Program (or any work based on the188 Program), you indicate your acceptance of this License to do so, and189 all its terms and conditions for copying, distributing or modifying190 the Program or works based on it.191 192 6. Each time you redistribute the Program (or any work based on the193 Program), the recipient automatically receives a license from the194 original licensor to copy, distribute or modify the Program subject to195 these terms and conditions. You may not impose any further196 restrictions on the recipients' exercise of the rights granted herein.197 You are not responsible for enforcing compliance by third parties to198 this License.199 200 7. If, as a consequence of a court judgment or allegation of patent201 infringement or for any other reason (not limited to patent issues),202 conditions are imposed on you (whether by court order, agreement or203 otherwise) that contradict the conditions of this License, they do not204 excuse you from the conditions of this License. If you cannot205 distribute so as to satisfy simultaneously your obligations under this206 License and any other pertinent obligations, then as a consequence you207 may not distribute the Program at all. For example, if a patent208 license would not permit royalty-free redistribution of the Program by209 all those who receive copies directly or indirectly through you, then210 the only way you could satisfy both it and this License would be to211 refrain entirely from distribution of the Program.212 213 If any portion of this section is held invalid or unenforceable under214 any particular circumstance, the balance of the section is intended to215 apply and the section as a whole is intended to apply in other216 circumstances.217 218 It is not the purpose of this section to induce you to infringe any219 patents or other property right claims or to contest validity of any220 such claims; this section has the sole purpose of protecting the221 integrity of the free software distribution system, which is222 implemented by public license practices. Many people have made223 generous contributions to the wide range of software distributed224 through that system in reliance on consistent application of that225 system; it is up to the author/donor to decide if he or she is willing226 to distribute software through any other system and a licensee cannot227 impose that choice.228 229 This section is intended to make thoroughly clear what is believed to230 be a consequence of the rest of this License.231 232 30 233 8. If the distribution and/or use of the Program is restricted in234 certain countries either by patents or by copyrighted interfaces, the235 original copyright holder who places the Program under this License236 may add an explicit geographical distribution limitation excluding237 those countries, so that distribution is permitted only in or among238 countries not thus excluded. In such case, this License incorporates239 the limitation as if written in the body of this License.240 241 9. The Free Software Foundation may publish revised and/or new versions242 of the General Public License from time to time. Such new versions will243 be similar in spirit to the present version, but may differ in detail to244 address new problems or concerns.245 246 Each version is given a distinguishing version number. If the Program247 specifies a version number of this License which applies to it and "any248 later version", you have the option of following the terms and conditions249 either of that version or of any later version published by the Free250 Software Foundation. If the Program does not specify a version number of251 this License, you may choose any version ever published by the Free Software252 Foundation.253 254 10. If you wish to incorporate parts of the Program into other free255 programs whose distribution conditions are different, write to the author256 to ask for permission. For software which is copyrighted by the Free257 Software Foundation, write to the Free Software Foundation; we sometimes258 make exceptions for this. Our decision will be guided by the two goals259 of preserving the free status of all derivatives of our free software and260 of promoting the sharing and reuse of software generally.261 262 NO WARRANTY263 264 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY265 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN266 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES267 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED268 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF269 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS270 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE271 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,272 REPAIR OR CORRECTION.273 274 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING275 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR276 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,277 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING278 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED279 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY280 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER281 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE282 POSSIBILITY OF SUCH DAMAGES.283 284 END OF TERMS AND CONDITIONS285 286 31 287 How to Apply These Terms to Your New Programs288 289 If you develop a new program, and you want it to be of the greatest290 possible use to the public, the best way to achieve this is to make it291 free software which everyone can redistribute and change under these terms.292 293 To do so, attach the following notices to the program. It is safest294 to attach them to the start of each source file to most effectively295 convey the exclusion of warranty; and each file should have at least296 the "copyright" line and a pointer to where the full notice is found.297 298 <one line to give the program's name and a brief idea of what it does.>299 Copyright (C) <year> <name of author>300 301 This program is free software; you can redistribute it and/or modify302 it under the terms of the GNU General Public License as published by303 the Free Software Foundation; either version 2 of the License, or304 (at your option) any later version.305 306 This program is distributed in the hope that it will be useful,307 but WITHOUT ANY WARRANTY; without even the implied warranty of308 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the309 GNU General Public License for more details.310 311 You should have received a copy of the GNU General Public License312 along with this program; if not, write to the Free Software313 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA314 315 316 Also add information on how to contact you by electronic and paper mail.317 318 If the program is interactive, make it output a short notice like this319 when it starts in an interactive mode:320 321 Gnomovision version 69, Copyright (C) year name of author322 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.323 This is free software, and you are welcome to redistribute it324 under certain conditions; type `show c' for details.325 326 The hypothetical commands `show w' and `show c' should show the appropriate327 parts of the General Public License. Of course, the commands you use may328 be called something other than `show w' and `show c'; they could even be329 mouse-clicks or menu items--whatever suits your program.330 331 You should also get your employer (if you work as a programmer) or your332 school, if any, to sign a "copyright disclaimer" for the program, if333 necessary. Here is a sample; alter the names:334 335 Yoyodyne, Inc., hereby disclaims all copyright interest in the program336 `Gnomovision' (which makes passes at compilers) written by James Hacker.337 338 <signature of Ty Coon>, 1 April 1989339 Ty Coon, President of Vice340 -
wp-includes/ID3/module.audio-video.matroska.php
-This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. +Copies of each of the above licenses are included in the 'licenses' +directory of the getID3 distribution. diff --git a/wp-includes/ID3/module.audio-video.asf.php b/wp-includes/ID3/module.audio-video.asf.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio-video.flv.php b/wp-includes/ID3/module.audio-video.flv.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio-video.matroska.php b/wp-includes/ID3/module.audio-video.matroska.php old mode 100644 new mode 100755 index 3c1921f..8fe89a5
a b class getid3_matroska extends getid3_handler 216 216 { 217 217 // public options 218 218 public static $hide_clusters = true; // if true, do not return information about CLUSTER chunks, since there's a lot of them and they're not usually useful [default: TRUE] 219 219 public static $parse_whole_file = false; // true to parse the whole file, not only header [default: FALSE] 220 220 221 222 223 224 225 226 221 // private parser settings/placeholders 222 private $EBMLbuffer = ''; 223 private $EBMLbuffer_offset = 0; 224 private $EBMLbuffer_length = 0; 225 private $current_offset = 0; 226 private $unuseful_elements = array(EBML_ID_CRC32, EBML_ID_VOID); 227 227 228 228 public function Analyze() 229 229 { … … class getid3_matroska extends getid3_handler 495 495 } 496 496 } 497 497 498 498 // determine mime type 499 499 if (!empty($info['video']['streams'])) { 500 500 $info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'video/webm' : 'video/x-matroska'); 501 501 } elseif (!empty($info['audio']['streams'])) { … … class getid3_matroska extends getid3_handler 507 507 return true; 508 508 } 509 509 510 510 private function parseEBML(&$info) { 511 511 // http://www.matroska.org/technical/specs/index.html#EBMLBasics 512 512 $this->current_offset = $info['avdataoffset']; 513 513 … … class getid3_matroska extends getid3_handler 536 536 $info['matroska']['doctype'] = $element_data['data']; 537 537 break; 538 538 539 case EBML_ID_CRC32: // not useful, ignore540 $this->current_offset = $element_data['end'];541 unset($element_data);542 break;543 544 539 default: 545 540 $this->unhandledElement('header', __LINE__, $element_data); 546 541 } 547 if (!empty($element_data)) { 548 unset($element_data['offset'], $element_data['end']); 549 $info['matroska']['header']['elements'][] = $element_data; 550 } 542 543 unset($element_data['offset'], $element_data['end']); 544 $info['matroska']['header']['elements'][] = $element_data; 551 545 } 552 546 break; 553 547 … … class getid3_matroska extends getid3_handler 874 868 switch ($sub_subelement['id']) { 875 869 876 870 case EBML_ID_CUETRACKPOSITIONS: 877 871 $cuetrackpositions_entry = array(); 878 872 879 873 while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) { 880 874 switch ($sub_sub_subelement['id']) { … … class getid3_matroska extends getid3_handler 912 906 break; 913 907 914 908 case EBML_ID_TAGS: // Element containing elements specific to Tracks/Chapters. 915 909 $tags_entry = array(); 916 910 917 911 while ($this->getEBMLelement($subelement, $element_data['end'], false)) { 918 912 switch ($subelement['id']) { … … class getid3_matroska extends getid3_handler 1209 1203 $this->unhandledElement('root', __LINE__, $top_element); 1210 1204 } 1211 1205 } 1212 1206 } 1213 1207 1214 1208 private function EnsureBufferHasEnoughData($min_data=1024) { 1215 1209 if (($this->current_offset - $this->EBMLbuffer_offset) >= ($this->EBMLbuffer_length - $min_data)) { … … class getid3_matroska extends getid3_handler 1391 1385 } 1392 1386 $block_data['flags']['lacing_type'] = self::BlockLacingType($block_data['flags']['lacing']); 1393 1387 1394 1388 // Lace (when lacing bit is set) 1395 1389 if ($block_data['flags']['lacing'] > 0) { 1396 1390 $block_data['lace_frames'] = getid3_lib::BigEndian2Int($this->readEBMLelementData(1)) + 1; // Number of frames in the lace-1 (uint8) 1397 1391 if ($block_data['flags']['lacing'] != 0x02) { -
wp-includes/ID3/module.audio-video.quicktime.php
diff --git a/wp-includes/ID3/module.audio-video.quicktime.php b/wp-includes/ID3/module.audio-video.quicktime.php old mode 100644 new mode 100755 index db63dab..31f28cf
a b 10 10 // module.audio-video.quicktime.php // 11 11 // module for analyzing Quicktime and MP3-in-MP4 files // 12 12 // dependencies: module.audio.mp3.php // 13 // dependencies: module.tag.id3v2.php // 13 14 // /// 14 15 ///////////////////////////////////////////////////////////////// 15 16 16 17 getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true); 18 getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.tag.id3v2.php', __FILE__, true); // needed for ISO 639-2 language code lookup 17 19 18 20 class getid3_quicktime extends getid3_handler 19 21 { … … class getid3_quicktime extends getid3_handler 170 172 171 173 $info = &$this->getid3->info; 172 174 173 $atom_parent = array_pop($atomHierarchy); 175 //$atom_parent = array_pop($atomHierarchy); 176 $atom_parent = end($atomHierarchy); // http://www.getid3.org/phpBB3/viewtopic.php?t=1717 174 177 array_push($atomHierarchy, $atomname); 175 178 $atom_structure['hierarchy'] = implode(' ', $atomHierarchy); 176 179 $atom_structure['name'] = $atomname; … … class getid3_quicktime extends getid3_handler 366 369 $boxsmallsize = getid3_lib::BigEndian2Int(substr($atom_data, $atomoffset, 2)); 367 370 $boxsmalltype = substr($atom_data, $atomoffset + 2, 2); 368 371 $boxsmalldata = substr($atom_data, $atomoffset + 4, $boxsmallsize); 372 if ($boxsmallsize <= 1) { 373 $info['warning'][] = 'Invalid QuickTime atom smallbox size "'.$boxsmallsize.'" in atom "'.$atomname.'" at offset: '.($atom_structure['offset'] + $atomoffset); 374 $atom_structure['data'] = null; 375 $atomoffset = strlen($atom_data); 376 break; 377 } 369 378 switch ($boxsmalltype) { 370 379 case "\x10\xB5": 371 380 $atom_structure['data'] = $boxsmalldata; … … class getid3_quicktime extends getid3_handler 657 666 switch ($atom_structure['sample_description_table'][$i]['encoder_vendor']) { 658 667 659 668 case "\x00\x00\x00\x00": 660 // audio atom669 // audio tracks 661 670 $atom_structure['sample_description_table'][$i]['audio_channels'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 8, 2)); 662 671 $atom_structure['sample_description_table'][$i]['audio_bit_depth'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 10, 2)); 663 672 $atom_structure['sample_description_table'][$i]['audio_compression_id'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12, 2)); 664 673 $atom_structure['sample_description_table'][$i]['audio_packet_size'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 14, 2)); 665 674 $atom_structure['sample_description_table'][$i]['audio_sample_rate'] = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 16, 4)); 666 675 676 // video tracks 677 // http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap3/qtff3.html 678 $atom_structure['sample_description_table'][$i]['temporal_quality'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 8, 4)); 679 $atom_structure['sample_description_table'][$i]['spatial_quality'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 12, 4)); 680 $atom_structure['sample_description_table'][$i]['width'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 16, 2)); 681 $atom_structure['sample_description_table'][$i]['height'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 18, 2)); 682 $atom_structure['sample_description_table'][$i]['resolution_x'] = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 24, 4)); 683 $atom_structure['sample_description_table'][$i]['resolution_y'] = getid3_lib::FixedPoint16_16(substr($atom_structure['sample_description_table'][$i]['data'], 28, 4)); 684 $atom_structure['sample_description_table'][$i]['data_size'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 32, 4)); 685 $atom_structure['sample_description_table'][$i]['frame_count'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 36, 2)); 686 $atom_structure['sample_description_table'][$i]['compressor_name'] = substr($atom_structure['sample_description_table'][$i]['data'], 38, 4); 687 $atom_structure['sample_description_table'][$i]['pixel_depth'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 42, 2)); 688 $atom_structure['sample_description_table'][$i]['color_table_id'] = getid3_lib::BigEndian2Int(substr($atom_structure['sample_description_table'][$i]['data'], 44, 2)); 689 667 690 switch ($atom_structure['sample_description_table'][$i]['data_format']) { 691 case '2vuY': 668 692 case 'avc1': 693 case 'cvid': 694 case 'dvc ': 695 case 'dvcp': 696 case 'gif ': 697 case 'h263': 698 case 'jpeg': 699 case 'kpcd': 700 case 'mjpa': 701 case 'mjpb': 669 702 case 'mp4v': 703 case 'png ': 704 case 'raw ': 705 case 'rle ': 706 case 'rpza': 707 case 'smc ': 708 case 'SVQ1': 709 case 'SVQ3': 710 case 'tiff': 711 case 'v210': 712 case 'v216': 713 case 'v308': 714 case 'v408': 715 case 'v410': 716 case 'yuv2': 670 717 $info['fileformat'] = 'mp4'; 671 718 $info['video']['fourcc'] = $atom_structure['sample_description_table'][$i]['data_format']; 672 //$info['warning'][] = 'This version of getID3() ['.$this->getid3->version().'] does not fully support MPEG-4 audio/video streams'; // 2011-02-18: why am I warning about this again? What's not supported? 719 // http://www.getid3.org/phpBB3/viewtopic.php?t=1550 720 //if ((!empty($atom_structure['sample_description_table'][$i]['width']) && !empty($atom_structure['sample_description_table'][$i]['width'])) && (empty($info['video']['resolution_x']) || empty($info['video']['resolution_y']) || (number_format($info['video']['resolution_x'], 6) != number_format(round($info['video']['resolution_x']), 6)) || (number_format($info['video']['resolution_y'], 6) != number_format(round($info['video']['resolution_y']), 6)))) { // ugly check for floating point numbers 721 if (!empty($atom_structure['sample_description_table'][$i]['width']) && !empty($atom_structure['sample_description_table'][$i]['height'])) { 722 // assume that values stored here are more important than values stored in [tkhd] atom 723 $info['video']['resolution_x'] = $atom_structure['sample_description_table'][$i]['width']; 724 $info['video']['resolution_y'] = $atom_structure['sample_description_table'][$i]['height']; 725 $info['quicktime']['video']['resolution_x'] = $info['video']['resolution_x']; 726 $info['quicktime']['video']['resolution_y'] = $info['video']['resolution_y']; 727 } 673 728 break; 674 729 675 730 case 'qtvr': … … class getid3_quicktime extends getid3_handler 1121 1176 $atom_structure['alternate_group'] = getid3_lib::BigEndian2Int(substr($atom_data, 34, 2)); 1122 1177 $atom_structure['volume'] = getid3_lib::FixedPoint8_8(substr($atom_data, 36, 2)); 1123 1178 $atom_structure['reserved3'] = getid3_lib::BigEndian2Int(substr($atom_data, 38, 2)); 1179 // http://developer.apple.com/library/mac/#documentation/QuickTime/RM/MovieBasics/MTEditing/K-Chapter/11MatrixFunctions.html 1180 // http://developer.apple.com/library/mac/#documentation/QuickTime/qtff/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-18737 1124 1181 $atom_structure['matrix_a'] = getid3_lib::FixedPoint16_16(substr($atom_data, 40, 4)); 1125 1182 $atom_structure['matrix_b'] = getid3_lib::FixedPoint16_16(substr($atom_data, 44, 4)); 1126 $atom_structure['matrix_u'] = getid3_lib::FixedPoint16_16(substr($atom_data, 48, 4));1183 $atom_structure['matrix_u'] = getid3_lib::FixedPoint2_30(substr($atom_data, 48, 4)); 1127 1184 $atom_structure['matrix_c'] = getid3_lib::FixedPoint16_16(substr($atom_data, 52, 4)); 1128 1185 $atom_structure['matrix_d'] = getid3_lib::FixedPoint16_16(substr($atom_data, 56, 4)); 1129 $atom_structure['matrix_v'] = getid3_lib::FixedPoint16_16(substr($atom_data, 60, 4));1130 $atom_structure['matrix_x'] = getid3_lib::FixedPoint2_30(substr($atom_data, 64, 4));1131 $atom_structure['matrix_y'] = getid3_lib::FixedPoint2_30(substr($atom_data, 68, 4));1186 $atom_structure['matrix_v'] = getid3_lib::FixedPoint2_30(substr($atom_data, 60, 4)); 1187 $atom_structure['matrix_x'] = getid3_lib::FixedPoint16_16(substr($atom_data, 64, 4)); 1188 $atom_structure['matrix_y'] = getid3_lib::FixedPoint16_16(substr($atom_data, 68, 4)); 1132 1189 $atom_structure['matrix_w'] = getid3_lib::FixedPoint2_30(substr($atom_data, 72, 4)); 1133 1190 $atom_structure['width'] = getid3_lib::FixedPoint16_16(substr($atom_data, 76, 4)); 1134 1191 $atom_structure['height'] = getid3_lib::FixedPoint16_16(substr($atom_data, 80, 4)); 1135 1136 1192 $atom_structure['flags']['enabled'] = (bool) ($atom_structure['flags_raw'] & 0x0001); 1137 1193 $atom_structure['flags']['in_movie'] = (bool) ($atom_structure['flags_raw'] & 0x0002); 1138 1194 $atom_structure['flags']['in_preview'] = (bool) ($atom_structure['flags_raw'] & 0x0004); … … class getid3_quicktime extends getid3_handler 1384 1440 1385 1441 1386 1442 public function QuicktimeLanguageLookup($languageid) { 1443 // http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-34353 1387 1444 static $QuicktimeLanguageLookup = array(); 1388 1445 if (empty($QuicktimeLanguageLookup)) { 1389 $QuicktimeLanguageLookup[0] = 'English'; 1390 $QuicktimeLanguageLookup[1] = 'French'; 1391 $QuicktimeLanguageLookup[2] = 'German'; 1392 $QuicktimeLanguageLookup[3] = 'Italian'; 1393 $QuicktimeLanguageLookup[4] = 'Dutch'; 1394 $QuicktimeLanguageLookup[5] = 'Swedish'; 1395 $QuicktimeLanguageLookup[6] = 'Spanish'; 1396 $QuicktimeLanguageLookup[7] = 'Danish'; 1397 $QuicktimeLanguageLookup[8] = 'Portuguese'; 1398 $QuicktimeLanguageLookup[9] = 'Norwegian'; 1399 $QuicktimeLanguageLookup[10] = 'Hebrew'; 1400 $QuicktimeLanguageLookup[11] = 'Japanese'; 1401 $QuicktimeLanguageLookup[12] = 'Arabic'; 1402 $QuicktimeLanguageLookup[13] = 'Finnish'; 1403 $QuicktimeLanguageLookup[14] = 'Greek'; 1404 $QuicktimeLanguageLookup[15] = 'Icelandic'; 1405 $QuicktimeLanguageLookup[16] = 'Maltese'; 1406 $QuicktimeLanguageLookup[17] = 'Turkish'; 1407 $QuicktimeLanguageLookup[18] = 'Croatian'; 1408 $QuicktimeLanguageLookup[19] = 'Chinese (Traditional)'; 1409 $QuicktimeLanguageLookup[20] = 'Urdu'; 1410 $QuicktimeLanguageLookup[21] = 'Hindi'; 1411 $QuicktimeLanguageLookup[22] = 'Thai'; 1412 $QuicktimeLanguageLookup[23] = 'Korean'; 1413 $QuicktimeLanguageLookup[24] = 'Lithuanian'; 1414 $QuicktimeLanguageLookup[25] = 'Polish'; 1415 $QuicktimeLanguageLookup[26] = 'Hungarian'; 1416 $QuicktimeLanguageLookup[27] = 'Estonian'; 1417 $QuicktimeLanguageLookup[28] = 'Lettish'; 1418 $QuicktimeLanguageLookup[28] = 'Latvian'; 1419 $QuicktimeLanguageLookup[29] = 'Saamisk'; 1420 $QuicktimeLanguageLookup[29] = 'Lappish'; 1421 $QuicktimeLanguageLookup[30] = 'Faeroese'; 1422 $QuicktimeLanguageLookup[31] = 'Farsi'; 1423 $QuicktimeLanguageLookup[31] = 'Persian'; 1424 $QuicktimeLanguageLookup[32] = 'Russian'; 1425 $QuicktimeLanguageLookup[33] = 'Chinese (Simplified)'; 1426 $QuicktimeLanguageLookup[34] = 'Flemish'; 1427 $QuicktimeLanguageLookup[35] = 'Irish'; 1428 $QuicktimeLanguageLookup[36] = 'Albanian'; 1429 $QuicktimeLanguageLookup[37] = 'Romanian'; 1430 $QuicktimeLanguageLookup[38] = 'Czech'; 1431 $QuicktimeLanguageLookup[39] = 'Slovak'; 1432 $QuicktimeLanguageLookup[40] = 'Slovenian'; 1433 $QuicktimeLanguageLookup[41] = 'Yiddish'; 1434 $QuicktimeLanguageLookup[42] = 'Serbian'; 1435 $QuicktimeLanguageLookup[43] = 'Macedonian'; 1436 $QuicktimeLanguageLookup[44] = 'Bulgarian'; 1437 $QuicktimeLanguageLookup[45] = 'Ukrainian'; 1438 $QuicktimeLanguageLookup[46] = 'Byelorussian'; 1439 $QuicktimeLanguageLookup[47] = 'Uzbek'; 1440 $QuicktimeLanguageLookup[48] = 'Kazakh'; 1441 $QuicktimeLanguageLookup[49] = 'Azerbaijani'; 1442 $QuicktimeLanguageLookup[50] = 'AzerbaijanAr'; 1443 $QuicktimeLanguageLookup[51] = 'Armenian'; 1444 $QuicktimeLanguageLookup[52] = 'Georgian'; 1445 $QuicktimeLanguageLookup[53] = 'Moldavian'; 1446 $QuicktimeLanguageLookup[54] = 'Kirghiz'; 1447 $QuicktimeLanguageLookup[55] = 'Tajiki'; 1448 $QuicktimeLanguageLookup[56] = 'Turkmen'; 1449 $QuicktimeLanguageLookup[57] = 'Mongolian'; 1450 $QuicktimeLanguageLookup[58] = 'MongolianCyr'; 1451 $QuicktimeLanguageLookup[59] = 'Pashto'; 1452 $QuicktimeLanguageLookup[60] = 'Kurdish'; 1453 $QuicktimeLanguageLookup[61] = 'Kashmiri'; 1454 $QuicktimeLanguageLookup[62] = 'Sindhi'; 1455 $QuicktimeLanguageLookup[63] = 'Tibetan'; 1456 $QuicktimeLanguageLookup[64] = 'Nepali'; 1457 $QuicktimeLanguageLookup[65] = 'Sanskrit'; 1458 $QuicktimeLanguageLookup[66] = 'Marathi'; 1459 $QuicktimeLanguageLookup[67] = 'Bengali'; 1460 $QuicktimeLanguageLookup[68] = 'Assamese'; 1461 $QuicktimeLanguageLookup[69] = 'Gujarati'; 1462 $QuicktimeLanguageLookup[70] = 'Punjabi'; 1463 $QuicktimeLanguageLookup[71] = 'Oriya'; 1464 $QuicktimeLanguageLookup[72] = 'Malayalam'; 1465 $QuicktimeLanguageLookup[73] = 'Kannada'; 1466 $QuicktimeLanguageLookup[74] = 'Tamil'; 1467 $QuicktimeLanguageLookup[75] = 'Telugu'; 1468 $QuicktimeLanguageLookup[76] = 'Sinhalese'; 1469 $QuicktimeLanguageLookup[77] = 'Burmese'; 1470 $QuicktimeLanguageLookup[78] = 'Khmer'; 1471 $QuicktimeLanguageLookup[79] = 'Lao'; 1472 $QuicktimeLanguageLookup[80] = 'Vietnamese'; 1473 $QuicktimeLanguageLookup[81] = 'Indonesian'; 1474 $QuicktimeLanguageLookup[82] = 'Tagalog'; 1475 $QuicktimeLanguageLookup[83] = 'MalayRoman'; 1476 $QuicktimeLanguageLookup[84] = 'MalayArabic'; 1477 $QuicktimeLanguageLookup[85] = 'Amharic'; 1478 $QuicktimeLanguageLookup[86] = 'Tigrinya'; 1479 $QuicktimeLanguageLookup[87] = 'Galla'; 1480 $QuicktimeLanguageLookup[87] = 'Oromo'; 1481 $QuicktimeLanguageLookup[88] = 'Somali'; 1482 $QuicktimeLanguageLookup[89] = 'Swahili'; 1483 $QuicktimeLanguageLookup[90] = 'Ruanda'; 1484 $QuicktimeLanguageLookup[91] = 'Rundi'; 1485 $QuicktimeLanguageLookup[92] = 'Chewa'; 1486 $QuicktimeLanguageLookup[93] = 'Malagasy'; 1487 $QuicktimeLanguageLookup[94] = 'Esperanto'; 1488 $QuicktimeLanguageLookup[128] = 'Welsh'; 1489 $QuicktimeLanguageLookup[129] = 'Basque'; 1490 $QuicktimeLanguageLookup[130] = 'Catalan'; 1491 $QuicktimeLanguageLookup[131] = 'Latin'; 1492 $QuicktimeLanguageLookup[132] = 'Quechua'; 1493 $QuicktimeLanguageLookup[133] = 'Guarani'; 1494 $QuicktimeLanguageLookup[134] = 'Aymara'; 1495 $QuicktimeLanguageLookup[135] = 'Tatar'; 1496 $QuicktimeLanguageLookup[136] = 'Uighur'; 1497 $QuicktimeLanguageLookup[137] = 'Dzongkha'; 1498 $QuicktimeLanguageLookup[138] = 'JavaneseRom'; 1446 $QuicktimeLanguageLookup[0] = 'English'; 1447 $QuicktimeLanguageLookup[1] = 'French'; 1448 $QuicktimeLanguageLookup[2] = 'German'; 1449 $QuicktimeLanguageLookup[3] = 'Italian'; 1450 $QuicktimeLanguageLookup[4] = 'Dutch'; 1451 $QuicktimeLanguageLookup[5] = 'Swedish'; 1452 $QuicktimeLanguageLookup[6] = 'Spanish'; 1453 $QuicktimeLanguageLookup[7] = 'Danish'; 1454 $QuicktimeLanguageLookup[8] = 'Portuguese'; 1455 $QuicktimeLanguageLookup[9] = 'Norwegian'; 1456 $QuicktimeLanguageLookup[10] = 'Hebrew'; 1457 $QuicktimeLanguageLookup[11] = 'Japanese'; 1458 $QuicktimeLanguageLookup[12] = 'Arabic'; 1459 $QuicktimeLanguageLookup[13] = 'Finnish'; 1460 $QuicktimeLanguageLookup[14] = 'Greek'; 1461 $QuicktimeLanguageLookup[15] = 'Icelandic'; 1462 $QuicktimeLanguageLookup[16] = 'Maltese'; 1463 $QuicktimeLanguageLookup[17] = 'Turkish'; 1464 $QuicktimeLanguageLookup[18] = 'Croatian'; 1465 $QuicktimeLanguageLookup[19] = 'Chinese (Traditional)'; 1466 $QuicktimeLanguageLookup[20] = 'Urdu'; 1467 $QuicktimeLanguageLookup[21] = 'Hindi'; 1468 $QuicktimeLanguageLookup[22] = 'Thai'; 1469 $QuicktimeLanguageLookup[23] = 'Korean'; 1470 $QuicktimeLanguageLookup[24] = 'Lithuanian'; 1471 $QuicktimeLanguageLookup[25] = 'Polish'; 1472 $QuicktimeLanguageLookup[26] = 'Hungarian'; 1473 $QuicktimeLanguageLookup[27] = 'Estonian'; 1474 $QuicktimeLanguageLookup[28] = 'Lettish'; 1475 $QuicktimeLanguageLookup[28] = 'Latvian'; 1476 $QuicktimeLanguageLookup[29] = 'Saamisk'; 1477 $QuicktimeLanguageLookup[29] = 'Lappish'; 1478 $QuicktimeLanguageLookup[30] = 'Faeroese'; 1479 $QuicktimeLanguageLookup[31] = 'Farsi'; 1480 $QuicktimeLanguageLookup[31] = 'Persian'; 1481 $QuicktimeLanguageLookup[32] = 'Russian'; 1482 $QuicktimeLanguageLookup[33] = 'Chinese (Simplified)'; 1483 $QuicktimeLanguageLookup[34] = 'Flemish'; 1484 $QuicktimeLanguageLookup[35] = 'Irish'; 1485 $QuicktimeLanguageLookup[36] = 'Albanian'; 1486 $QuicktimeLanguageLookup[37] = 'Romanian'; 1487 $QuicktimeLanguageLookup[38] = 'Czech'; 1488 $QuicktimeLanguageLookup[39] = 'Slovak'; 1489 $QuicktimeLanguageLookup[40] = 'Slovenian'; 1490 $QuicktimeLanguageLookup[41] = 'Yiddish'; 1491 $QuicktimeLanguageLookup[42] = 'Serbian'; 1492 $QuicktimeLanguageLookup[43] = 'Macedonian'; 1493 $QuicktimeLanguageLookup[44] = 'Bulgarian'; 1494 $QuicktimeLanguageLookup[45] = 'Ukrainian'; 1495 $QuicktimeLanguageLookup[46] = 'Byelorussian'; 1496 $QuicktimeLanguageLookup[47] = 'Uzbek'; 1497 $QuicktimeLanguageLookup[48] = 'Kazakh'; 1498 $QuicktimeLanguageLookup[49] = 'Azerbaijani'; 1499 $QuicktimeLanguageLookup[50] = 'AzerbaijanAr'; 1500 $QuicktimeLanguageLookup[51] = 'Armenian'; 1501 $QuicktimeLanguageLookup[52] = 'Georgian'; 1502 $QuicktimeLanguageLookup[53] = 'Moldavian'; 1503 $QuicktimeLanguageLookup[54] = 'Kirghiz'; 1504 $QuicktimeLanguageLookup[55] = 'Tajiki'; 1505 $QuicktimeLanguageLookup[56] = 'Turkmen'; 1506 $QuicktimeLanguageLookup[57] = 'Mongolian'; 1507 $QuicktimeLanguageLookup[58] = 'MongolianCyr'; 1508 $QuicktimeLanguageLookup[59] = 'Pashto'; 1509 $QuicktimeLanguageLookup[60] = 'Kurdish'; 1510 $QuicktimeLanguageLookup[61] = 'Kashmiri'; 1511 $QuicktimeLanguageLookup[62] = 'Sindhi'; 1512 $QuicktimeLanguageLookup[63] = 'Tibetan'; 1513 $QuicktimeLanguageLookup[64] = 'Nepali'; 1514 $QuicktimeLanguageLookup[65] = 'Sanskrit'; 1515 $QuicktimeLanguageLookup[66] = 'Marathi'; 1516 $QuicktimeLanguageLookup[67] = 'Bengali'; 1517 $QuicktimeLanguageLookup[68] = 'Assamese'; 1518 $QuicktimeLanguageLookup[69] = 'Gujarati'; 1519 $QuicktimeLanguageLookup[70] = 'Punjabi'; 1520 $QuicktimeLanguageLookup[71] = 'Oriya'; 1521 $QuicktimeLanguageLookup[72] = 'Malayalam'; 1522 $QuicktimeLanguageLookup[73] = 'Kannada'; 1523 $QuicktimeLanguageLookup[74] = 'Tamil'; 1524 $QuicktimeLanguageLookup[75] = 'Telugu'; 1525 $QuicktimeLanguageLookup[76] = 'Sinhalese'; 1526 $QuicktimeLanguageLookup[77] = 'Burmese'; 1527 $QuicktimeLanguageLookup[78] = 'Khmer'; 1528 $QuicktimeLanguageLookup[79] = 'Lao'; 1529 $QuicktimeLanguageLookup[80] = 'Vietnamese'; 1530 $QuicktimeLanguageLookup[81] = 'Indonesian'; 1531 $QuicktimeLanguageLookup[82] = 'Tagalog'; 1532 $QuicktimeLanguageLookup[83] = 'MalayRoman'; 1533 $QuicktimeLanguageLookup[84] = 'MalayArabic'; 1534 $QuicktimeLanguageLookup[85] = 'Amharic'; 1535 $QuicktimeLanguageLookup[86] = 'Tigrinya'; 1536 $QuicktimeLanguageLookup[87] = 'Galla'; 1537 $QuicktimeLanguageLookup[87] = 'Oromo'; 1538 $QuicktimeLanguageLookup[88] = 'Somali'; 1539 $QuicktimeLanguageLookup[89] = 'Swahili'; 1540 $QuicktimeLanguageLookup[90] = 'Ruanda'; 1541 $QuicktimeLanguageLookup[91] = 'Rundi'; 1542 $QuicktimeLanguageLookup[92] = 'Chewa'; 1543 $QuicktimeLanguageLookup[93] = 'Malagasy'; 1544 $QuicktimeLanguageLookup[94] = 'Esperanto'; 1545 $QuicktimeLanguageLookup[128] = 'Welsh'; 1546 $QuicktimeLanguageLookup[129] = 'Basque'; 1547 $QuicktimeLanguageLookup[130] = 'Catalan'; 1548 $QuicktimeLanguageLookup[131] = 'Latin'; 1549 $QuicktimeLanguageLookup[132] = 'Quechua'; 1550 $QuicktimeLanguageLookup[133] = 'Guarani'; 1551 $QuicktimeLanguageLookup[134] = 'Aymara'; 1552 $QuicktimeLanguageLookup[135] = 'Tatar'; 1553 $QuicktimeLanguageLookup[136] = 'Uighur'; 1554 $QuicktimeLanguageLookup[137] = 'Dzongkha'; 1555 $QuicktimeLanguageLookup[138] = 'JavaneseRom'; 1556 $QuicktimeLanguageLookup[32767] = 'Unspecified'; 1557 } 1558 if (($languageid > 138) && ($languageid < 32767)) { 1559 /* 1560 ISO Language Codes - http://www.loc.gov/standards/iso639-2/php/code_list.php 1561 Because the language codes specified by ISO 639-2/T are three characters long, they must be packed to fit into a 16-bit field. 1562 The packing algorithm must map each of the three characters, which are always lowercase, into a 5-bit integer and then concatenate 1563 these integers into the least significant 15 bits of a 16-bit integer, leaving the 16-bit integer's most significant bit set to zero. 1564 1565 One algorithm for performing this packing is to treat each ISO character as a 16-bit integer. Subtract 0x60 from the first character 1566 and multiply by 2^10 (0x400), subtract 0x60 from the second character and multiply by 2^5 (0x20), subtract 0x60 from the third character, 1567 and add the three 16-bit values. This will result in a single 16-bit value with the three codes correctly packed into the 15 least 1568 significant bits and the most significant bit set to zero. 1569 */ 1570 $iso_language_id = ''; 1571 $iso_language_id .= chr((($languageid & 0x7C00) >> 10) + 0x60); 1572 $iso_language_id .= chr((($languageid & 0x03E0) >> 5) + 0x60); 1573 $iso_language_id .= chr((($languageid & 0x001F) >> 0) + 0x60); 1574 $QuicktimeLanguageLookup[$languageid] = getid3_id3v2::LanguageLookup($iso_language_id); 1499 1575 } 1500 1576 return (isset($QuicktimeLanguageLookup[$languageid]) ? $QuicktimeLanguageLookup[$languageid] : 'invalid'); 1501 1577 } -
wp-includes/ID3/module.tag.id3v2.php
diff --git a/wp-includes/ID3/module.audio-video.riff.php b/wp-includes/ID3/module.audio-video.riff.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio.ac3.php b/wp-includes/ID3/module.audio.ac3.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio.dts.php b/wp-includes/ID3/module.audio.dts.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio.flac.php b/wp-includes/ID3/module.audio.flac.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio.mp3.php b/wp-includes/ID3/module.audio.mp3.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.audio.ogg.php b/wp-includes/ID3/module.audio.ogg.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.tag.apetag.php b/wp-includes/ID3/module.tag.apetag.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.tag.id3v1.php b/wp-includes/ID3/module.tag.id3v1.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/module.tag.id3v2.php b/wp-includes/ID3/module.tag.id3v2.php old mode 100644 new mode 100755 index 23784e9..b08f9f9
a b class getid3_id3v2 extends getid3_handler 667 667 668 668 if (!empty($parsedFrame['framenameshort']) && !empty($parsedFrame['data'])) { 669 669 // ID3v2.3 specs say that TPE1 (and others) can contain multiple artist values separated with / 670 // This of course breaks when an ar itst name contains slash character, e.g. "AC/DC"670 // This of course breaks when an artist name contains slash character, e.g. "AC/DC" 671 671 // MP3tag (maybe others) implement alternative system where multiple artists are null-separated, which makes more sense 672 672 // getID3 will split null-separated artists into multiple artists and leave slash-separated ones to the user 673 673 switch ($parsedFrame['encoding']) { … … class getid3_id3v2 extends getid3_handler 3410 3410 return (($majorversion == 2) ? 6 : 10); 3411 3411 } 3412 3412 3413 } 3414 No newline at end of file 3413 } 3414 -
wp-includes/ID3/readme.txt
diff --git a/wp-includes/ID3/module.tag.lyrics3.php b/wp-includes/ID3/module.tag.lyrics3.php old mode 100644 new mode 100755 diff --git a/wp-includes/ID3/readme.txt b/wp-includes/ID3/readme.txt old mode 100644 new mode 100755 index 548ba64..018ca78
a b 3 3 // available at http://getid3.sourceforge.net // 4 4 // or http://www.getid3.org // 5 5 ///////////////////////////////////////////////////////////////// 6 // //7 // changelog.txt - part of getID3() //8 // See readme.txt for more details //9 // ///10 /////////////////////////////////////////////////////////////////11 6 12 This code is released under the GNU GPL: 13 http://www.gnu.org/copyleft/gpl.html 7 ***************************************************************** 8 ***************************************************************** 9 10 getID3() is released under multiple licenses. You may choose 11 from the following licenses, and use getID3 according to the 12 terms of the license most suitable to your project. 13 14 GNU GPL: https://gnu.org/licenses/gpl.html (v3) 15 https://gnu.org/licenses/old-licenses/gpl-2.0.html (v2) 16 https://gnu.org/licenses/old-licenses/gpl-1.0.html (v1) 17 18 GNU LGPL: https://gnu.org/licenses/lgpl.html (v3) 19 20 Mozilla MPL: http://www.mozilla.org/MPL/2.0/ (v2) 21 22 getID3 Commercial License: http://getid3.org/#gCL (payment required) 23 24 ***************************************************************** 25 ***************************************************************** 26 Copies of each of the above licenses are included in the 'licenses' 27 directory of the getID3 distribution. 14 28 15 +---------------------------------------------+16 | If you do use this code somewhere, send me |17 | an email and tell me how/where you used it. |18 | |19 | If you want to donate, there is a link on |20 | http://www.getid3.org for PayPal donations. |21 +---------------------------------------------+22 29 30 +---------------------------------------------+ 31 | If you want to donate, there is a link on | 32 | http://www.getid3.org for PayPal donations. | 33 +---------------------------------------------+ 23 34 24 35 25 36 Quick Start … … What does getID3() do? 56 67 =========================================================================== 57 68 58 69 Reads & parses (to varying degrees): 59 ¤ tags:70 ¤ tags: 60 71 * APE (v1 and v2) 61 72 * ID3v1 (& ID3v1.1) 62 73 * ID3v2 (v2.4, v2.3, v2.2) 63 74 * Lyrics3 (v1 & v2) 64 75 65 ¤ audio-lossy:76 ¤ audio-lossy: 66 77 * MP3/MP2/MP1 67 78 * MPC / Musepack 68 79 * Ogg (Vorbis, OggFLAC, Speex) … … Reads & parses (to varying degrees): 74 85 * DSS 75 86 * VQF 76 87 77 ¤ audio-lossless:88 ¤ audio-lossless: 78 89 * AIFF 79 90 * AU 80 91 * Bonk … … Reads & parses (to varying degrees): 93 104 * WAV (RIFF) 94 105 * WavPack 95 106 96 ¤ audio-video:107 ¤ audio-video: 97 108 * ASF: ASF, Windows Media Audio (WMA), Windows Media Video (WMV) 98 109 * AVI (RIFF) 99 110 * Flash … … Reads & parses (to varying degrees): 103 114 * Quicktime (including MP4) 104 115 * RealVideo 105 116 106 ¤ still image:117 ¤ still image: 107 118 * BMP 108 119 * GIF 109 120 * JPEG … … Reads & parses (to varying degrees): 112 123 * SWF (Flash) 113 124 * PhotoCD 114 125 115 ¤ data:126 ¤ data: 116 127 * ISO-9660 CD-ROM image (directory structure) 117 128 * SZIP (limited support) 118 129 * ZIP (directory structure) … … http://www.getid3.org/phpBB3/viewforum.php?f=7 298 309 (http://web.inter.nl.net/users/hvdh/lossless/lossless.htm) 299 310 * Support for RIFF-INFO chunks 300 311 * http://lotto.st-andrews.ac.uk/~njh/tag_interchange.html 301 (thanks Nick Humfrey <njh Øsurgeradio*co*uk>)312 (thanks Nick Humfrey <njhÃsurgeradio*co*uk>) 302 313 * http://abcavi.narod.ru/sof/abcavi/infotags.htm 303 314 (thanks Kibi) 304 315 * Better support for Bink video … … http://www.getid3.org/phpBB3/viewforum.php?f=7 313 324 * Support for IFF 314 325 * Support for ICO 315 326 * Support for ANI 316 * Support for EXE (comments, author, etc) (thanks p*quaedackers Øplanet*nl)327 * Support for EXE (comments, author, etc) (thanks p*quaedackersÃplanet*nl) 317 328 * Support for DVD-IFO (region, subtitles, aspect ratio, etc) 318 (thanks p*quaedackers Øplanet*nl)329 (thanks p*quaedackersÃplanet*nl) 319 330 * More complete support for SWF - parsing encapsulated MP3 and/or JPEG content 320 (thanks n8n8 Øyahoo*com)331 (thanks n8n8Ãyahoo*com) 321 332 * Support for a2b 322 333 * Optional scan-through-frames for AVI verification 323 (thanks rockcohen Ømassive-interactive*nl)324 * Support for TTF (thanks info Øbutterflyx*com)334 (thanks rockcohenÃmassive-interactive*nl) 335 * Support for TTF (thanks infoÃbutterflyx*com) 325 336 * Support for DSS (http://www.getid3.org/phpBB3/viewtopic.php?t=171) 326 337 * Support for SMAF (http://smaf-yamaha.com/what/demo.html) 327 338 http://www.getid3.org/phpBB3/viewtopic.php?t=182 328 339 * Support for AMR (http://www.getid3.org/phpBB3/viewtopic.php?t=195) 329 340 * Support for 3gpp (http://www.getid3.org/phpBB3/viewtopic.php?t=195) 330 * Support for ID4 (http://www.wackysoft.cjb.net grizlyY2K Øhotmail*com)341 * Support for ID4 (http://www.wackysoft.cjb.net grizlyY2KÃhotmail*com) 331 342 * Parse XML data returned in Ogg comments 332 * Parse XML data from Quicktime SMIL metafiles (klausrath Ømac*com)343 * Parse XML data from Quicktime SMIL metafiles (klausrathÃmac*com) 333 344 * ID3v2 genre string creator function 334 345 * More complete parsing of JPG 335 346 * Support for all old-style ASF packets