Changeset 24696 for trunk/wp-includes/ID3/module.audio-video.quicktime.php
- Timestamp:
- 07/13/2013 12:37:36 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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');
Note: See TracChangeset
for help on using the changeset viewer.