Ignore:
Timestamp:
Dec 30, 2018, 6:04:07 PM (5 months ago)
Author:
spip.franck@…
Message:

Mise à jour de la lib getid en version 1.9.16, nous étions en 1.9.12
https://github.com/JamesHeinrich/getID3/blob/master/changelog.txt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/branches/spip-3.1/plugins/medias/lib/getid3/module.audio-video.matroska.php

    r96229 r113163  
    11<?php
     2
    23/////////////////////////////////////////////////////////////////
    34/// getID3() by James Heinrich <info@getid3.org>               //
    4 //  available at http://getid3.sourceforge.net                 //
    5 //            or http://www.getid3.org                         //
    6 //          also https://github.com/JamesHeinrich/getID3       //
    7 /////////////////////////////////////////////////////////////////
    8 // See readme.txt for more details                             //
     5//  available at https://github.com/JamesHeinrich/getID3       //
     6//            or https://www.getid3.org                        //
     7//            or http://getid3.sourceforge.net                 //
     8//  see readme.txt for more details                            //
    99/////////////////////////////////////////////////////////////////
    1010//                                                             //
     
    7373define('EBML_ID_FILEUID',                       0x06AE); //         [46][AE] -- Unique ID representing the file, as random as possible.
    7474define('EBML_ID_CONTENTENCALGO',                0x07E1); //         [47][E1] -- The encryption algorithm used. The value '0' means that the contents have not been encrypted but only signed. Predefined values:
    75 define('EBML_ID_CONTENTENCKEYID',               0x07E2); //         [47][E2] -- For public key algorithms this is the ID of the public key the the data was encrypted with.
     75define('EBML_ID_CONTENTENCKEYID',               0x07E2); //         [47][E2] -- For public key algorithms this is the ID of the public key the data was encrypted with.
    7676define('EBML_ID_CONTENTSIGNATURE',              0x07E3); //         [47][E3] -- A cryptographic signature of the contents.
    7777define('EBML_ID_CONTENTSIGKEYID',               0x07E4); //         [47][E4] -- This is the ID of the private key the data was signed with.
     
    216216class getid3_matroska extends getid3_handler
    217217{
    218         // public options
    219         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]
    220         public static $parse_whole_file = false; // true to parse the whole file, not only header [default: FALSE]
    221 
    222         // private parser settings/placeholders
     218        /**
     219         * If true, do not return information about CLUSTER chunks, since there's a lot of them
     220         * and they're not usually useful [default: TRUE].
     221         *
     222         * @var bool
     223         */
     224        public static $hide_clusters    = true;
     225
     226        /**
     227         * True to parse the whole file, not only header [default: FALSE].
     228         *
     229         * @var bool
     230         */
     231        public static $parse_whole_file = false;
     232
     233        /*
     234         * Private parser settings/placeholders.
     235         */
    223236        private $EBMLbuffer        = '';
    224237        private $EBMLbuffer_offset = 0;
     
    227240        private $unuseful_elements = array(EBML_ID_CRC32, EBML_ID_VOID);
    228241
     242        /**
     243         * @return bool
     244         */
    229245        public function Analyze()
    230246        {
     
    235251                        $this->parseEBML($info);
    236252                } catch (Exception $e) {
    237                         $info['error'][] = 'EBML parser: '.$e->getMessage();
     253                        $this->error('EBML parser: '.$e->getMessage());
    238254                }
    239255
     
    331347
    332348                                                        case 'A_AC3':
     349                                                        case 'A_EAC3':
    333350                                                        case 'A_DTS':
    334351                                                        case 'A_MPEG/L3':
    335352                                                        case 'A_MPEG/L2':
    336353                                                        case 'A_FLAC':
    337                                                                 getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.'.($track_info['dataformat'] == 'mp2' ? 'mp3' : $track_info['dataformat']).'.php', __FILE__, true);
     354                                                                $module_dataformat = ($track_info['dataformat'] == 'mp2' ? 'mp3' : ($track_info['dataformat'] == 'eac3' ? 'ac3' : $track_info['dataformat']));
     355                                                                getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.'.$module_dataformat.'.php', __FILE__, true);
    338356
    339357                                                                if (!isset($info['matroska']['track_data_offsets'][$trackarray['TrackNumber']])) {
     
    353371
    354372                                                                // analyze
    355                                                                 $class = 'getid3_'.($track_info['dataformat'] == 'mp2' ? 'mp3' : $track_info['dataformat']);
     373                                                                $class = 'getid3_'.$module_dataformat;
    356374                                                                $header_data_key = $track_info['dataformat'][0] == 'm' ? 'mpeg' : $track_info['dataformat'];
    357375                                                                $getid3_audio = new $class($getid3_temp, __CLASS__);
     
    365383                                                                        $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $getid3_temp->info[$header_data_key];
    366384                                                                        if (isset($getid3_temp->info['audio']) && is_array($getid3_temp->info['audio'])) {
    367                                                                                 foreach ($getid3_temp->info['audio'] as $key => $value) {
    368                                                                                         $track_info[$key] = $value;
     385                                                                                foreach ($getid3_temp->info['audio'] as $sub_key => $value) {
     386                                                                                        $track_info[$sub_key] = $value;
    369387                                                                                }
    370388                                                                        }
     
    420438                                                                        $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $getid3_temp->info['ogg'];
    421439                                                                        if (isset($getid3_temp->info['audio']) && is_array($getid3_temp->info['audio'])) {
    422                                                                                 foreach ($getid3_temp->info['audio'] as $key => $value) {
    423                                                                                         $track_info[$key] = $value;
     440                                                                                foreach ($getid3_temp->info['audio'] as $sub_key => $value) {
     441                                                                                        $track_info[$sub_key] = $value;
    424442                                                                                }
    425443                                                                        }
     
    448466
    449467                                                                $parsed = getid3_riff::parseWAVEFORMATex($trackarray['CodecPrivate']);
    450                                                                 foreach ($parsed as $key => $value) {
    451                                                                         if ($key != 'raw') {
    452                                                                                 $track_info[$key] = $value;
     468                                                                foreach ($parsed as $sub_key => $value) {
     469                                                                        if ($sub_key != 'raw') {
     470                                                                                $track_info[$sub_key] = $value;
    453471                                                                        }
    454472                                                                }
     
    495513        }
    496514
     515        /**
     516         * @param array $info
     517         */
    497518        private function parseEBML(&$info) {
    498519                // http://www.matroska.org/technical/specs/index.html#EBMLBasics
     
    567588                                                                                                                break;
    568589                                                                                        }
    569 
    570                                                                                         if ($seek_entry['target_id'] != EBML_ID_CLUSTER || !self::$hide_clusters) { // collect clusters only if required
     590                                                                                        if (!isset($seek_entry['target_id'])) {
     591                                                                                                $this->warning('seek_entry[target_id] unexpectedly not set at '.$seek_entry['offset']);
     592                                                                                                break;
     593                                                                                        }
     594                                                                                        if (($seek_entry['target_id'] != EBML_ID_CLUSTER) || !self::$hide_clusters) { // collect clusters only if required
    571595                                                                                                $info['matroska']['seek'][] = $seek_entry;
    572596                                                                                        }
     
    12241248        }
    12251249
     1250        /**
     1251         * @param int $min_data
     1252         *
     1253         * @return bool
     1254         */
    12261255        private function EnsureBufferHasEnoughData($min_data=1024) {
    12271256                if (($this->current_offset - $this->EBMLbuffer_offset) >= ($this->EBMLbuffer_length - $min_data)) {
     
    12451274        }
    12461275
     1276        /**
     1277         * @return int|float|false
     1278         */
    12471279        private function readEBMLint() {
    12481280                $actual_offset = $this->current_offset - $this->EBMLbuffer_offset;
     
    12771309        }
    12781310
     1311        /**
     1312         * @param int  $length
     1313         * @param bool $check_buffer
     1314         *
     1315         * @return string|false
     1316         */
    12791317        private function readEBMLelementData($length, $check_buffer=false) {
    12801318                if ($check_buffer && !$this->EnsureBufferHasEnoughData($length)) {
     
    12861324        }
    12871325
     1326        /**
     1327         * @param array      $element
     1328         * @param int        $parent_end
     1329         * @param array|bool $get_data
     1330         *
     1331         * @return bool
     1332         */
    12881333        private function getEBMLelement(&$element, $parent_end, $get_data=false) {
    12891334                if ($this->current_offset >= $parent_end) {
     
    13221367        }
    13231368
     1369        /**
     1370         * @param string $type
     1371         * @param int    $line
     1372         * @param array  $element
     1373         */
    13241374        private function unhandledElement($type, $line, $element) {
    13251375                // warn only about unknown and missed elements, not about unuseful
     
    13341384        }
    13351385
     1386        /**
     1387         * @param array $SimpleTagArray
     1388         *
     1389         * @return bool
     1390         */
    13361391        private function ExtractCommentsSimpleTag($SimpleTagArray) {
    13371392                if (!empty($SimpleTagArray['SimpleTag'])) {
     
    13491404        }
    13501405
     1406        /**
     1407         * @param int $parent_end
     1408         *
     1409         * @return array
     1410         */
    13511411        private function HandleEMBLSimpleTag($parent_end) {
    13521412                $simpletag_entry = array();
     
    13791439        }
    13801440
     1441        /**
     1442         * @param array $element
     1443         * @param int   $block_type
     1444         * @param array $info
     1445         *
     1446         * @return array
     1447         */
    13811448        private function HandleEMBLClusterBlock($element, $block_type, &$info) {
    13821449                // http://www.matroska.org/technical/specs/index.html#block_structure
     
    14421509        }
    14431510
     1511        /**
     1512         * @param string $EBMLstring
     1513         *
     1514         * @return int|float|false
     1515         */
    14441516        private static function EBML2Int($EBMLstring) {
    14451517                // http://matroska.org/specs/
     
    14841556        }
    14851557
     1558        /**
     1559         * @param int $EBMLdatestamp
     1560         *
     1561         * @return float
     1562         */
    14861563        private static function EBMLdate2unix($EBMLdatestamp) {
    14871564                // Date - signed 8 octets integer in nanoseconds with 0 indicating the precise beginning of the millennium (at 2001-01-01T00:00:00,000000000 UTC)
     
    14901567        }
    14911568
     1569        /**
     1570         * @param int $target_type
     1571         *
     1572         * @return string|int
     1573         */
    14921574        public static function TargetTypeValue($target_type) {
    14931575                // http://www.matroska.org/technical/specs/tagging/index.html
     
    15051587        }
    15061588
     1589        /**
     1590         * @param int $lacingtype
     1591         *
     1592         * @return string|int
     1593         */
    15071594        public static function BlockLacingType($lacingtype) {
    15081595                // http://matroska.org/technical/specs/index.html#block_structure
     
    15171604        }
    15181605
     1606        /**
     1607         * @param string $codecid
     1608         *
     1609         * @return string
     1610         */
    15191611        public static function CodecIDtoCommonName($codecid) {
    15201612                // http://www.matroska.org/technical/specs/codecid/index.html
     
    15241616                        $CodecIDlist['A_AAC/MPEG2/LC']   = 'aac';
    15251617                        $CodecIDlist['A_AC3']            = 'ac3';
     1618                        $CodecIDlist['A_EAC3']           = 'eac3';
    15261619                        $CodecIDlist['A_DTS']            = 'dts';
    15271620                        $CodecIDlist['A_FLAC']           = 'flac';
     
    15521645        }
    15531646
     1647        /**
     1648         * @param int $value
     1649         *
     1650         * @return string
     1651         */
    15541652        private static function EBMLidName($value) {
    15551653                static $EBMLidList = array();
     
    17501848        }
    17511849
     1850        /**
     1851         * @param int $value
     1852         *
     1853         * @return string
     1854         */
    17521855        public static function displayUnit($value) {
    17531856                // http://www.matroska.org/technical/specs/index.html#DisplayUnit
     
    17611864        }
    17621865
     1866        /**
     1867         * @param array $streams
     1868         *
     1869         * @return array
     1870         */
    17631871        private static function getDefaultStreamInfo($streams)
    17641872        {
     1873                $stream = array();
    17651874                foreach (array_reverse($streams) as $stream) {
    17661875                        if ($stream['default']) {
Note: See TracChangeset for help on using the changeset viewer.