Changeset 24696
- Timestamp:
- 07/13/2013 12:37:36 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
- 1 moved
-
wp-admin/includes/media.php (modified) (2 diffs)
-
wp-includes/ID3/getid3.lib.php (modified) (1 diff)
-
wp-includes/ID3/getid3.php (moved) (moved from trunk/wp-includes/ID3/class-getid3.php) (5 diffs)
-
wp-includes/ID3/license.txt (modified) (1 diff)
-
wp-includes/ID3/module.audio-video.matroska.php (modified) (8 diffs)
-
wp-includes/ID3/module.audio-video.quicktime.php (modified) (7 diffs)
-
wp-includes/ID3/module.tag.id3v2.php (modified) (2 diffs)
-
wp-includes/ID3/readme.txt (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/media.php
r24593 r24696 2579 2579 2580 2580 if ( ! class_exists( 'getID3' ) ) 2581 require( ABSPATH . WPINC . '/ID3/ class-getid3.php' );2581 require( ABSPATH . WPINC . '/ID3/getid3.php' ); 2582 2582 $id3 = new getID3(); 2583 2583 $data = $id3->analyze( $file ); … … 2634 2634 2635 2635 if ( ! class_exists( 'getID3' ) ) 2636 require( ABSPATH . WPINC . '/ID3/ class-getid3.php' );2636 require( ABSPATH . WPINC . '/ID3/getid3.php' ); 2637 2637 $id3 = new getID3(); 2638 2638 $data = $id3->analyze( $file ); -
trunk/wp-includes/ID3/getid3.lib.php
r23766 r24696 1139 1139 if (empty($tempdir)) { 1140 1140 // yes this is ugly, feel free to suggest a better way 1141 require_once(dirname(__FILE__).'/ class-getid3.php');1141 require_once(dirname(__FILE__).'/getid3.php'); 1142 1142 $getid3_temp = new getID3(); 1143 1143 $tempdir = $getid3_temp->tempdir; -
trunk/wp-includes/ID3/getid3.php
r24649 r24696 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 … … 222 222 } 223 223 224 224 225 // public: setOption 225 226 public function setOption($optArray) { … … 235 236 return true; 236 237 } 238 237 239 238 240 public function openfile($filename) { … … 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 } … … 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 1776 } -
trunk/wp-includes/ID3/license.txt
r24203 r24696 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 certain 44 that everyone understands that there is no warranty for this free 45 software. If the software is modified by someone else and passed on, we 46 want its recipients to know that what they have is not the original, so 47 that any problems introduced by others will not reflect on the original 48 authors' reputations. 49 50 Finally, any free program is threatened constantly by software 51 patents. We wish to avoid the danger that redistributors of a free 52 program will individually obtain patent licenses, in effect making the 53 program proprietary. To prevent this, we have made it clear that any 54 patent must be licensed for everyone's free use or not licensed at all. 55 56 The precise terms and conditions for copying, distribution and 57 modification follow. 58 59 60 GNU GENERAL PUBLIC LICENSE 61 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 62 63 0. This License applies to any program or other work which contains 64 a notice placed by the copyright holder saying it may be distributed 65 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 another 70 language. (Hereinafter, translation is included without limitation in 71 the term "modification".) Each licensee is addressed as "you". 72 73 Activities other than copying, distribution and modification are not 74 covered by this License; they are outside its scope. The act of 75 running the Program is not restricted, and the output from the Program 76 is covered only if its contents constitute a work based on the 77 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's 81 source code as you receive it, in any medium, provided that you 82 conspicuously and appropriately publish on each copy an appropriate 83 copyright notice and disclaimer of warranty; keep intact all the 84 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 License 86 along with the Program. 87 88 You may charge a fee for the physical act of transferring a copy, and 89 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 portion 92 of it, thus forming a work based on the Program, and copy and 93 distribute such modifications or work under the terms of Section 1 94 above, provided that you also meet all of these conditions: 95 96 a) You must cause the modified files to carry prominent notices 97 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 in 100 whole or in part contains or is derived from the Program or any 101 part thereof, to be licensed as a whole at no charge to all third 102 parties under the terms of this License. 103 104 c) If the modified program normally reads commands interactively 105 when run, you must cause it, when started running for such 106 interactive use in the most ordinary way, to print or display an 107 announcement including an appropriate copyright notice and a 108 notice that there is no warranty (or else, saying that you provide 109 a warranty) and that users may redistribute the program under 110 these conditions, and telling the user how to view a copy of this 111 License. (Exception: if the Program itself is interactive but 112 does not normally print such an announcement, your work based on 113 the Program is not required to print an announcement.) 114 115 116 These requirements apply to the modified work as a whole. If 117 identifiable sections of that work are not derived from the Program, 118 and can be reasonably considered independent and separate works in 119 themselves, then this License, and its terms, do not apply to those 120 sections when you distribute them as separate works. But when you 121 distribute the same sections as part of a whole which is a work based 122 on the Program, the distribution of the whole must be on the terms of 123 this License, whose permissions for other licensees extend to the 124 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 contest 127 your rights to work written entirely by you; rather, the intent is to 128 exercise the right to control the distribution of derivative or 129 collective works based on the Program. 130 131 In addition, mere aggregation of another work not based on the Program 132 with the Program (or with a work based on the Program) on a volume of 133 a storage or distribution medium does not bring the other work under 134 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 of 138 Sections 1 and 2 above provided that you also do one of the following: 139 140 a) Accompany it with the complete corresponding machine-readable 141 source code, which must be distributed under the terms of Sections 142 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 three 145 years, to give any third party, for a charge no more than your 146 cost of physically performing source distribution, a complete 147 machine-readable copy of the corresponding source code, to be 148 distributed under the terms of Sections 1 and 2 above on a medium 149 customarily used for software interchange; or, 150 151 c) Accompany it with the information you received as to the offer 152 to distribute corresponding source code. (This alternative is 153 allowed only for noncommercial distribution and only if you 154 received the program in object code or executable form with such 155 an offer, in accord with Subsection b above.) 156 157 The source code for a work means the preferred form of the work for 158 making modifications to it. For an executable work, complete source 159 code means all the source code for all modules it contains, plus any 160 associated interface definition files, plus the scripts used to 161 control compilation and installation of the executable. However, as a 162 special exception, the source code distributed need not include 163 anything that is normally distributed (in either source or binary 164 form) with the major components (compiler, kernel, and so on) of the 165 operating system on which the executable runs, unless that component 166 itself accompanies the executable. 167 168 If distribution of executable or object code is made by offering 169 access to copy from a designated place, then offering equivalent 170 access to copy the source code from the same place counts as 171 distribution of the source code, even though third parties are not 172 compelled to copy the source along with the object code. 173 174 175 4. You may not copy, modify, sublicense, or distribute the Program 176 except as expressly provided under this License. Any attempt 177 otherwise to copy, modify, sublicense or distribute the Program is 178 void, and will automatically terminate your rights under this License. 179 However, parties who have received copies, or rights, from you under 180 this License will not have their licenses terminated so long as such 181 parties remain in full compliance. 182 183 5. You are not required to accept this License, since you have not 184 signed it. However, nothing else grants you permission to modify or 185 distribute the Program or its derivative works. These actions are 186 prohibited by law if you do not accept this License. Therefore, by 187 modifying or distributing the Program (or any work based on the 188 Program), you indicate your acceptance of this License to do so, and 189 all its terms and conditions for copying, distributing or modifying 190 the Program or works based on it. 191 192 6. Each time you redistribute the Program (or any work based on the 193 Program), the recipient automatically receives a license from the 194 original licensor to copy, distribute or modify the Program subject to 195 these terms and conditions. You may not impose any further 196 restrictions on the recipients' exercise of the rights granted herein. 197 You are not responsible for enforcing compliance by third parties to 198 this License. 199 200 7. If, as a consequence of a court judgment or allegation of patent 201 infringement or for any other reason (not limited to patent issues), 202 conditions are imposed on you (whether by court order, agreement or 203 otherwise) that contradict the conditions of this License, they do not 204 excuse you from the conditions of this License. If you cannot 205 distribute so as to satisfy simultaneously your obligations under this 206 License and any other pertinent obligations, then as a consequence you 207 may not distribute the Program at all. For example, if a patent 208 license would not permit royalty-free redistribution of the Program by 209 all those who receive copies directly or indirectly through you, then 210 the only way you could satisfy both it and this License would be to 211 refrain entirely from distribution of the Program. 212 213 If any portion of this section is held invalid or unenforceable under 214 any particular circumstance, the balance of the section is intended to 215 apply and the section as a whole is intended to apply in other 216 circumstances. 217 218 It is not the purpose of this section to induce you to infringe any 219 patents or other property right claims or to contest validity of any 220 such claims; this section has the sole purpose of protecting the 221 integrity of the free software distribution system, which is 222 implemented by public license practices. Many people have made 223 generous contributions to the wide range of software distributed 224 through that system in reliance on consistent application of that 225 system; it is up to the author/donor to decide if he or she is willing 226 to distribute software through any other system and a licensee cannot 227 impose that choice. 228 229 This section is intended to make thoroughly clear what is believed to 230 be a consequence of the rest of this License. 231 232 233 8. If the distribution and/or use of the Program is restricted in 234 certain countries either by patents or by copyrighted interfaces, the 235 original copyright holder who places the Program under this License 236 may add an explicit geographical distribution limitation excluding 237 those countries, so that distribution is permitted only in or among 238 countries not thus excluded. In such case, this License incorporates 239 the limitation as if written in the body of this License. 240 241 9. The Free Software Foundation may publish revised and/or new versions 242 of the General Public License from time to time. Such new versions will 243 be similar in spirit to the present version, but may differ in detail to 244 address new problems or concerns. 245 246 Each version is given a distinguishing version number. If the Program 247 specifies a version number of this License which applies to it and "any 248 later version", you have the option of following the terms and conditions 249 either of that version or of any later version published by the Free 250 Software Foundation. If the Program does not specify a version number of 251 this License, you may choose any version ever published by the Free Software 252 Foundation. 253 254 10. If you wish to incorporate parts of the Program into other free 255 programs whose distribution conditions are different, write to the author 256 to ask for permission. For software which is copyrighted by the Free 257 Software Foundation, write to the Free Software Foundation; we sometimes 258 make exceptions for this. Our decision will be guided by the two goals 259 of preserving the free status of all derivatives of our free software and 260 of promoting the sharing and reuse of software generally. 261 262 NO WARRANTY 263 264 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 265 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 266 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 267 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 268 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 269 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 270 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 271 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 WRITING 275 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 276 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 277 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 278 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 279 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 280 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 281 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 282 POSSIBILITY OF SUCH DAMAGES. 283 284 END OF TERMS AND CONDITIONS 285 286 287 How to Apply These Terms to Your New Programs 288 289 If you develop a new program, and you want it to be of the greatest 290 possible use to the public, the best way to achieve this is to make it 291 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 safest 294 to attach them to the start of each source file to most effectively 295 convey the exclusion of warranty; and each file should have at least 296 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 modify 302 it under the terms of the GNU General Public License as published by 303 the Free Software Foundation; either version 2 of the License, or 304 (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 of 308 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 309 GNU General Public License for more details. 310 311 You should have received a copy of the GNU General Public License 312 along with this program; if not, write to the Free Software 313 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 314 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 this 319 when it starts in an interactive mode: 320 321 Gnomovision version 69, Copyright (C) year name of author 322 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 323 This is free software, and you are welcome to redistribute it 324 under certain conditions; type `show c' for details. 325 326 The hypothetical commands `show w' and `show c' should show the appropriate 327 parts of the General Public License. Of course, the commands you use may 328 be called something other than `show w' and `show c'; they could even be 329 mouse-clicks or menu items--whatever suits your program. 330 331 You should also get your employer (if you work as a programmer) or your 332 school, if any, to sign a "copyright disclaimer" for the program, if 333 necessary. Here is a sample; alter the names: 334 335 Yoyodyne, Inc., hereby disclaims all copyright interest in the program 336 `Gnomovision' (which makes passes at compilers) written by James Hacker. 337 338 <signature of Ty Coon>, 1 April 1989 339 Ty Coon, President of Vice 340 341 This General Public License does not permit incorporating your program into 342 proprietary programs. If your program is a subroutine library, you may 343 consider it more useful to permit linking proprietary applications with the 344 library. If this is what you want to do, use the GNU Library General 345 Public License instead of this License. 27 Copies of each of the above licenses are included in the 'licenses' 28 directory of the getID3 distribution. -
trunk/wp-includes/ID3/module.audio-video.matroska.php
r23766 r24696 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 public static $parse_whole_file = false; // true to parse the whole file, not only header [default: FALSE]220 221 // private parser settings/placeholders222 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);219 public static $parse_whole_file = false; // true to parse the whole file, not only header [default: FALSE] 220 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() … … 496 496 } 497 497 498 // determine mime type498 // determine mime type 499 499 if (!empty($info['video']['streams'])) { 500 500 $info['mime_type'] = ($info['matroska']['doctype'] == 'webm' ? 'video/webm' : 'video/x-matroska'); … … 508 508 } 509 509 510 private function parseEBML(&$info) {510 private function parseEBML(&$info) { 511 511 // http://www.matroska.org/technical/specs/index.html#EBMLBasics 512 512 $this->current_offset = $info['avdataoffset']; … … 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; … … 875 869 876 870 case EBML_ID_CUETRACKPOSITIONS: 877 $cuetrackpositions_entry = array();871 $cuetrackpositions_entry = array(); 878 872 879 873 while ($this->getEBMLelement($sub_sub_subelement, $sub_subelement['end'], true)) { … … 913 907 914 908 case EBML_ID_TAGS: // Element containing elements specific to Tracks/Chapters. 915 $tags_entry = array();909 $tags_entry = array(); 916 910 917 911 while ($this->getEBMLelement($subelement, $element_data['end'], false)) { … … 1210 1204 } 1211 1205 } 1212 }1206 } 1213 1207 1214 1208 private function EnsureBufferHasEnoughData($min_data=1024) { … … 1392 1386 $block_data['flags']['lacing_type'] = self::BlockLacingType($block_data['flags']['lacing']); 1393 1387 1394 // Lace (when lacing bit is set)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) -
trunk/wp-includes/ID3/module.audio-video.quicktime.php
r23766 r24696 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 … … 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); … … 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": … … 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)); … … 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 … … 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); … … 1387 1443 1388 1444 public function QuicktimeLanguageLookup($languageid) { 1445 // http://developer.apple.com/library/mac/#documentation/QuickTime/QTFF/QTFFChap4/qtff4.html#//apple_ref/doc/uid/TP40000939-CH206-34353 1389 1446 static $QuicktimeLanguageLookup = array(); 1390 1447 if (empty($QuicktimeLanguageLookup)) { 1391 $QuicktimeLanguageLookup[0] = 'English'; 1392 $QuicktimeLanguageLookup[1] = 'French'; 1393 $QuicktimeLanguageLookup[2] = 'German'; 1394 $QuicktimeLanguageLookup[3] = 'Italian'; 1395 $QuicktimeLanguageLookup[4] = 'Dutch'; 1396 $QuicktimeLanguageLookup[5] = 'Swedish'; 1397 $QuicktimeLanguageLookup[6] = 'Spanish'; 1398 $QuicktimeLanguageLookup[7] = 'Danish'; 1399 $QuicktimeLanguageLookup[8] = 'Portuguese'; 1400 $QuicktimeLanguageLookup[9] = 'Norwegian'; 1401 $QuicktimeLanguageLookup[10] = 'Hebrew'; 1402 $QuicktimeLanguageLookup[11] = 'Japanese'; 1403 $QuicktimeLanguageLookup[12] = 'Arabic'; 1404 $QuicktimeLanguageLookup[13] = 'Finnish'; 1405 $QuicktimeLanguageLookup[14] = 'Greek'; 1406 $QuicktimeLanguageLookup[15] = 'Icelandic'; 1407 $QuicktimeLanguageLookup[16] = 'Maltese'; 1408 $QuicktimeLanguageLookup[17] = 'Turkish'; 1409 $QuicktimeLanguageLookup[18] = 'Croatian'; 1410 $QuicktimeLanguageLookup[19] = 'Chinese (Traditional)'; 1411 $QuicktimeLanguageLookup[20] = 'Urdu'; 1412 $QuicktimeLanguageLookup[21] = 'Hindi'; 1413 $QuicktimeLanguageLookup[22] = 'Thai'; 1414 $QuicktimeLanguageLookup[23] = 'Korean'; 1415 $QuicktimeLanguageLookup[24] = 'Lithuanian'; 1416 $QuicktimeLanguageLookup[25] = 'Polish'; 1417 $QuicktimeLanguageLookup[26] = 'Hungarian'; 1418 $QuicktimeLanguageLookup[27] = 'Estonian'; 1419 $QuicktimeLanguageLookup[28] = 'Lettish'; 1420 $QuicktimeLanguageLookup[28] = 'Latvian'; 1421 $QuicktimeLanguageLookup[29] = 'Saamisk'; 1422 $QuicktimeLanguageLookup[29] = 'Lappish'; 1423 $QuicktimeLanguageLookup[30] = 'Faeroese'; 1424 $QuicktimeLanguageLookup[31] = 'Farsi'; 1425 $QuicktimeLanguageLookup[31] = 'Persian'; 1426 $QuicktimeLanguageLookup[32] = 'Russian'; 1427 $QuicktimeLanguageLookup[33] = 'Chinese (Simplified)'; 1428 $QuicktimeLanguageLookup[34] = 'Flemish'; 1429 $QuicktimeLanguageLookup[35] = 'Irish'; 1430 $QuicktimeLanguageLookup[36] = 'Albanian'; 1431 $QuicktimeLanguageLookup[37] = 'Romanian'; 1432 $QuicktimeLanguageLookup[38] = 'Czech'; 1433 $QuicktimeLanguageLookup[39] = 'Slovak'; 1434 $QuicktimeLanguageLookup[40] = 'Slovenian'; 1435 $QuicktimeLanguageLookup[41] = 'Yiddish'; 1436 $QuicktimeLanguageLookup[42] = 'Serbian'; 1437 $QuicktimeLanguageLookup[43] = 'Macedonian'; 1438 $QuicktimeLanguageLookup[44] = 'Bulgarian'; 1439 $QuicktimeLanguageLookup[45] = 'Ukrainian'; 1440 $QuicktimeLanguageLookup[46] = 'Byelorussian'; 1441 $QuicktimeLanguageLookup[47] = 'Uzbek'; 1442 $QuicktimeLanguageLookup[48] = 'Kazakh'; 1443 $QuicktimeLanguageLookup[49] = 'Azerbaijani'; 1444 $QuicktimeLanguageLookup[50] = 'AzerbaijanAr'; 1445 $QuicktimeLanguageLookup[51] = 'Armenian'; 1446 $QuicktimeLanguageLookup[52] = 'Georgian'; 1447 $QuicktimeLanguageLookup[53] = 'Moldavian'; 1448 $QuicktimeLanguageLookup[54] = 'Kirghiz'; 1449 $QuicktimeLanguageLookup[55] = 'Tajiki'; 1450 $QuicktimeLanguageLookup[56] = 'Turkmen'; 1451 $QuicktimeLanguageLookup[57] = 'Mongolian'; 1452 $QuicktimeLanguageLookup[58] = 'MongolianCyr'; 1453 $QuicktimeLanguageLookup[59] = 'Pashto'; 1454 $QuicktimeLanguageLookup[60] = 'Kurdish'; 1455 $QuicktimeLanguageLookup[61] = 'Kashmiri'; 1456 $QuicktimeLanguageLookup[62] = 'Sindhi'; 1457 $QuicktimeLanguageLookup[63] = 'Tibetan'; 1458 $QuicktimeLanguageLookup[64] = 'Nepali'; 1459 $QuicktimeLanguageLookup[65] = 'Sanskrit'; 1460 $QuicktimeLanguageLookup[66] = 'Marathi'; 1461 $QuicktimeLanguageLookup[67] = 'Bengali'; 1462 $QuicktimeLanguageLookup[68] = 'Assamese'; 1463 $QuicktimeLanguageLookup[69] = 'Gujarati'; 1464 $QuicktimeLanguageLookup[70] = 'Punjabi'; 1465 $QuicktimeLanguageLookup[71] = 'Oriya'; 1466 $QuicktimeLanguageLookup[72] = 'Malayalam'; 1467 $QuicktimeLanguageLookup[73] = 'Kannada'; 1468 $QuicktimeLanguageLookup[74] = 'Tamil'; 1469 $QuicktimeLanguageLookup[75] = 'Telugu'; 1470 $QuicktimeLanguageLookup[76] = 'Sinhalese'; 1471 $QuicktimeLanguageLookup[77] = 'Burmese'; 1472 $QuicktimeLanguageLookup[78] = 'Khmer'; 1473 $QuicktimeLanguageLookup[79] = 'Lao'; 1474 $QuicktimeLanguageLookup[80] = 'Vietnamese'; 1475 $QuicktimeLanguageLookup[81] = 'Indonesian'; 1476 $QuicktimeLanguageLookup[82] = 'Tagalog'; 1477 $QuicktimeLanguageLookup[83] = 'MalayRoman'; 1478 $QuicktimeLanguageLookup[84] = 'MalayArabic'; 1479 $QuicktimeLanguageLookup[85] = 'Amharic'; 1480 $QuicktimeLanguageLookup[86] = 'Tigrinya'; 1481 $QuicktimeLanguageLookup[87] = 'Galla'; 1482 $QuicktimeLanguageLookup[87] = 'Oromo'; 1483 $QuicktimeLanguageLookup[88] = 'Somali'; 1484 $QuicktimeLanguageLookup[89] = 'Swahili'; 1485 $QuicktimeLanguageLookup[90] = 'Ruanda'; 1486 $QuicktimeLanguageLookup[91] = 'Rundi'; 1487 $QuicktimeLanguageLookup[92] = 'Chewa'; 1488 $QuicktimeLanguageLookup[93] = 'Malagasy'; 1489 $QuicktimeLanguageLookup[94] = 'Esperanto'; 1490 $QuicktimeLanguageLookup[128] = 'Welsh'; 1491 $QuicktimeLanguageLookup[129] = 'Basque'; 1492 $QuicktimeLanguageLookup[130] = 'Catalan'; 1493 $QuicktimeLanguageLookup[131] = 'Latin'; 1494 $QuicktimeLanguageLookup[132] = 'Quechua'; 1495 $QuicktimeLanguageLookup[133] = 'Guarani'; 1496 $QuicktimeLanguageLookup[134] = 'Aymara'; 1497 $QuicktimeLanguageLookup[135] = 'Tatar'; 1498 $QuicktimeLanguageLookup[136] = 'Uighur'; 1499 $QuicktimeLanguageLookup[137] = 'Dzongkha'; 1500 $QuicktimeLanguageLookup[138] = 'JavaneseRom'; 1448 $QuicktimeLanguageLookup[0] = 'English'; 1449 $QuicktimeLanguageLookup[1] = 'French'; 1450 $QuicktimeLanguageLookup[2] = 'German'; 1451 $QuicktimeLanguageLookup[3] = 'Italian'; 1452 $QuicktimeLanguageLookup[4] = 'Dutch'; 1453 $QuicktimeLanguageLookup[5] = 'Swedish'; 1454 $QuicktimeLanguageLookup[6] = 'Spanish'; 1455 $QuicktimeLanguageLookup[7] = 'Danish'; 1456 $QuicktimeLanguageLookup[8] = 'Portuguese'; 1457 $QuicktimeLanguageLookup[9] = 'Norwegian'; 1458 $QuicktimeLanguageLookup[10] = 'Hebrew'; 1459 $QuicktimeLanguageLookup[11] = 'Japanese'; 1460 $QuicktimeLanguageLookup[12] = 'Arabic'; 1461 $QuicktimeLanguageLookup[13] = 'Finnish'; 1462 $QuicktimeLanguageLookup[14] = 'Greek'; 1463 $QuicktimeLanguageLookup[15] = 'Icelandic'; 1464 $QuicktimeLanguageLookup[16] = 'Maltese'; 1465 $QuicktimeLanguageLookup[17] = 'Turkish'; 1466 $QuicktimeLanguageLookup[18] = 'Croatian'; 1467 $QuicktimeLanguageLookup[19] = 'Chinese (Traditional)'; 1468 $QuicktimeLanguageLookup[20] = 'Urdu'; 1469 $QuicktimeLanguageLookup[21] = 'Hindi'; 1470 $QuicktimeLanguageLookup[22] = 'Thai'; 1471 $QuicktimeLanguageLookup[23] = 'Korean'; 1472 $QuicktimeLanguageLookup[24] = 'Lithuanian'; 1473 $QuicktimeLanguageLookup[25] = 'Polish'; 1474 $QuicktimeLanguageLookup[26] = 'Hungarian'; 1475 $QuicktimeLanguageLookup[27] = 'Estonian'; 1476 $QuicktimeLanguageLookup[28] = 'Lettish'; 1477 $QuicktimeLanguageLookup[28] = 'Latvian'; 1478 $QuicktimeLanguageLookup[29] = 'Saamisk'; 1479 $QuicktimeLanguageLookup[29] = 'Lappish'; 1480 $QuicktimeLanguageLookup[30] = 'Faeroese'; 1481 $QuicktimeLanguageLookup[31] = 'Farsi'; 1482 $QuicktimeLanguageLookup[31] = 'Persian'; 1483 $QuicktimeLanguageLookup[32] = 'Russian'; 1484 $QuicktimeLanguageLookup[33] = 'Chinese (Simplified)'; 1485 $QuicktimeLanguageLookup[34] = 'Flemish'; 1486 $QuicktimeLanguageLookup[35] = 'Irish'; 1487 $QuicktimeLanguageLookup[36] = 'Albanian'; 1488 $QuicktimeLanguageLookup[37] = 'Romanian'; 1489 $QuicktimeLanguageLookup[38] = 'Czech'; 1490 $QuicktimeLanguageLookup[39] = 'Slovak'; 1491 $QuicktimeLanguageLookup[40] = 'Slovenian'; 1492 $QuicktimeLanguageLookup[41] = 'Yiddish'; 1493 $QuicktimeLanguageLookup[42] = 'Serbian'; 1494 $QuicktimeLanguageLookup[43] = 'Macedonian'; 1495 $QuicktimeLanguageLookup[44] = 'Bulgarian'; 1496 $QuicktimeLanguageLookup[45] = 'Ukrainian'; 1497 $QuicktimeLanguageLookup[46] = 'Byelorussian'; 1498 $QuicktimeLanguageLookup[47] = 'Uzbek'; 1499 $QuicktimeLanguageLookup[48] = 'Kazakh'; 1500 $QuicktimeLanguageLookup[49] = 'Azerbaijani'; 1501 $QuicktimeLanguageLookup[50] = 'AzerbaijanAr'; 1502 $QuicktimeLanguageLookup[51] = 'Armenian'; 1503 $QuicktimeLanguageLookup[52] = 'Georgian'; 1504 $QuicktimeLanguageLookup[53] = 'Moldavian'; 1505 $QuicktimeLanguageLookup[54] = 'Kirghiz'; 1506 $QuicktimeLanguageLookup[55] = 'Tajiki'; 1507 $QuicktimeLanguageLookup[56] = 'Turkmen'; 1508 $QuicktimeLanguageLookup[57] = 'Mongolian'; 1509 $QuicktimeLanguageLookup[58] = 'MongolianCyr'; 1510 $QuicktimeLanguageLookup[59] = 'Pashto'; 1511 $QuicktimeLanguageLookup[60] = 'Kurdish'; 1512 $QuicktimeLanguageLookup[61] = 'Kashmiri'; 1513 $QuicktimeLanguageLookup[62] = 'Sindhi'; 1514 $QuicktimeLanguageLookup[63] = 'Tibetan'; 1515 $QuicktimeLanguageLookup[64] = 'Nepali'; 1516 $QuicktimeLanguageLookup[65] = 'Sanskrit'; 1517 $QuicktimeLanguageLookup[66] = 'Marathi'; 1518 $QuicktimeLanguageLookup[67] = 'Bengali'; 1519 $QuicktimeLanguageLookup[68] = 'Assamese'; 1520 $QuicktimeLanguageLookup[69] = 'Gujarati'; 1521 $QuicktimeLanguageLookup[70] = 'Punjabi'; 1522 $QuicktimeLanguageLookup[71] = 'Oriya'; 1523 $QuicktimeLanguageLookup[72] = 'Malayalam'; 1524 $QuicktimeLanguageLookup[73] = 'Kannada'; 1525 $QuicktimeLanguageLookup[74] = 'Tamil'; 1526 $QuicktimeLanguageLookup[75] = 'Telugu'; 1527 $QuicktimeLanguageLookup[76] = 'Sinhalese'; 1528 $QuicktimeLanguageLookup[77] = 'Burmese'; 1529 $QuicktimeLanguageLookup[78] = 'Khmer'; 1530 $QuicktimeLanguageLookup[79] = 'Lao'; 1531 $QuicktimeLanguageLookup[80] = 'Vietnamese'; 1532 $QuicktimeLanguageLookup[81] = 'Indonesian'; 1533 $QuicktimeLanguageLookup[82] = 'Tagalog'; 1534 $QuicktimeLanguageLookup[83] = 'MalayRoman'; 1535 $QuicktimeLanguageLookup[84] = 'MalayArabic'; 1536 $QuicktimeLanguageLookup[85] = 'Amharic'; 1537 $QuicktimeLanguageLookup[86] = 'Tigrinya'; 1538 $QuicktimeLanguageLookup[87] = 'Galla'; 1539 $QuicktimeLanguageLookup[87] = 'Oromo'; 1540 $QuicktimeLanguageLookup[88] = 'Somali'; 1541 $QuicktimeLanguageLookup[89] = 'Swahili'; 1542 $QuicktimeLanguageLookup[90] = 'Ruanda'; 1543 $QuicktimeLanguageLookup[91] = 'Rundi'; 1544 $QuicktimeLanguageLookup[92] = 'Chewa'; 1545 $QuicktimeLanguageLookup[93] = 'Malagasy'; 1546 $QuicktimeLanguageLookup[94] = 'Esperanto'; 1547 $QuicktimeLanguageLookup[128] = 'Welsh'; 1548 $QuicktimeLanguageLookup[129] = 'Basque'; 1549 $QuicktimeLanguageLookup[130] = 'Catalan'; 1550 $QuicktimeLanguageLookup[131] = 'Latin'; 1551 $QuicktimeLanguageLookup[132] = 'Quechua'; 1552 $QuicktimeLanguageLookup[133] = 'Guarani'; 1553 $QuicktimeLanguageLookup[134] = 'Aymara'; 1554 $QuicktimeLanguageLookup[135] = 'Tatar'; 1555 $QuicktimeLanguageLookup[136] = 'Uighur'; 1556 $QuicktimeLanguageLookup[137] = 'Dzongkha'; 1557 $QuicktimeLanguageLookup[138] = 'JavaneseRom'; 1558 $QuicktimeLanguageLookup[32767] = 'Unspecified'; 1559 } 1560 if (($languageid > 138) && ($languageid < 32767)) { 1561 /* 1562 ISO Language Codes - http://www.loc.gov/standards/iso639-2/php/code_list.php 1563 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. 1564 The packing algorithm must map each of the three characters, which are always lowercase, into a 5-bit integer and then concatenate 1565 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. 1566 1567 One algorithm for performing this packing is to treat each ISO character as a 16-bit integer. Subtract 0x60 from the first character 1568 and multiply by 2^10 (0x400), subtract 0x60 from the second character and multiply by 2^5 (0x20), subtract 0x60 from the third character, 1569 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 1570 significant bits and the most significant bit set to zero. 1571 */ 1572 $iso_language_id = ''; 1573 $iso_language_id .= chr((($languageid & 0x7C00) >> 10) + 0x60); 1574 $iso_language_id .= chr((($languageid & 0x03E0) >> 5) + 0x60); 1575 $iso_language_id .= chr((($languageid & 0x001F) >> 0) + 0x60); 1576 $QuicktimeLanguageLookup[$languageid] = getid3_id3v2::LanguageLookup($iso_language_id); 1501 1577 } 1502 1578 return (isset($QuicktimeLanguageLookup[$languageid]) ? $QuicktimeLanguageLookup[$languageid] : 'invalid'); -
trunk/wp-includes/ID3/module.tag.id3v2.php
r23766 r24696 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 … … 3412 3412 3413 3413 } 3414 -
trunk/wp-includes/ID3/readme.txt
r24203 r24696 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 12 This code is released under the GNU GPL: 13 http://www.gnu.org/copyleft/gpl.html 14 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 6 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. 28 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 … … 57 68 58 69 Reads & parses (to varying degrees): 59 ¤tags:70 # tags: 60 71 * APE (v1 and v2) 61 72 * ID3v1 (& ID3v1.1) … … 63 74 * Lyrics3 (v1 & v2) 64 75 65 ¤audio-lossy:76 # audio-lossy: 66 77 * MP3/MP2/MP1 67 78 * MPC / Musepack … … 75 86 * VQF 76 87 77 ¤audio-lossless:88 # audio-lossless: 78 89 * AIFF 79 90 * AU … … 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) … … 104 115 * RealVideo 105 116 106 ¤still image:117 # still image: 107 118 * BMP 108 119 * GIF … … 113 124 * PhotoCD 114 125 115 ¤data:126 # data: 116 127 * ISO-9660 CD-ROM image (directory structure) 117 128 * SZIP (limited support) … … 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) … … 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) … … 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
Note: See TracChangeset
for help on using the changeset viewer.