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

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/medias/lib/getid3/module.audio-video.mpeg.php

    r106591 r113161  
    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//                                                             //
     
    1717getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio.mp3.php', __FILE__, true);
    1818
    19 class getid3_mpeg extends getid3_handler {
     19class getid3_mpeg extends getid3_handler
     20{
    2021
    2122        const START_CODE_BASE       = "\x00\x00\x01";
     
    2930        const AUDIO_START           = "\x00\x00\x01\xC0";
    3031
    31 
     32        /**
     33         * @return bool
     34         */
    3235        public function Analyze() {
    3336                $info = &$this->getid3->info;
     
    123126                                        }
    124127
    125                                         $info['mpeg']['video']['pixel_aspect_ratio']      =     self::videoAspectRatioLookup($info['mpeg']['video']['raw']['aspect_ratio_information']);
    126                                         $info['mpeg']['video']['pixel_aspect_ratio_text'] = self::videoAspectRatioTextLookup($info['mpeg']['video']['raw']['aspect_ratio_information']);
     128                                        $info['mpeg']['video']['pixel_aspect_ratio']      =     self::videoAspectRatioLookup($info['mpeg']['video']['raw']['aspect_ratio_information']); // may be overridden later if file turns out to be MPEG-2
     129                                        $info['mpeg']['video']['pixel_aspect_ratio_text'] = self::videoAspectRatioTextLookup($info['mpeg']['video']['raw']['aspect_ratio_information']); // may be overridden later if file turns out to be MPEG-2
    127130                                        $info['mpeg']['video']['frame_rate']              =       self::videoFramerateLookup($info['mpeg']['video']['raw']['frame_rate_code']);
    128131                                        if ($info['mpeg']['video']['raw']['bitrate'] == 0x3FFFF) { // 18 set bits = VBR
     
    170173                                                        $info['mpeg']['video']['interlaced']    = !$info['mpeg']['video']['raw']['progressive_sequence'];
    171174                                                        $info['mpeg']['video']['chroma_format'] = self::chromaFormatTextLookup($info['mpeg']['video']['raw']['chroma_format']);
     175
     176                                                        if (isset($info['mpeg']['video']['raw']['aspect_ratio_information'])) {
     177                                                                // MPEG-2 defines the aspect ratio flag differently from MPEG-1, but the MPEG-2 extension start code may occur after we've already looked up the aspect ratio assuming it was MPEG-1, so re-lookup assuming MPEG-2
     178                                                                // This must be done after the extended size is known, so the display aspect ratios can be converted to pixel aspect ratios.
     179                                                                $info['mpeg']['video']['pixel_aspect_ratio']      =     self::videoAspectRatioLookup($info['mpeg']['video']['raw']['aspect_ratio_information'], 2, $info['video']['resolution_x'], $info['video']['resolution_y']);
     180                                                                $info['mpeg']['video']['pixel_aspect_ratio_text'] = self::videoAspectRatioTextLookup($info['mpeg']['video']['raw']['aspect_ratio_information'], 2);
     181                                                                $info['video']['pixel_aspect_ratio'] = $info['mpeg']['video']['pixel_aspect_ratio'];
     182                                                                $info['video']['pixel_aspect_ratio_text'] = $info['mpeg']['video']['pixel_aspect_ratio_text'];
     183                                                        }
     184
    172185                                                        break;
    173186
     
    259272                                case 0xB8: // group_of_pictures_header
    260273                                        $GOPcounter++;
    261                                         if ($info['mpeg']['video']['bitrate_mode'] == 'vbr') {
     274                                        if (!empty($info['mpeg']['video']['bitrate_mode']) && ($info['mpeg']['video']['bitrate_mode'] == 'vbr')) {
    262275                                                $bitstream = getid3_lib::BigEndian2Bin(substr($MPEGstreamData, $StartCodeOffset + 4, 4)); // 27 bits needed for group_of_pictures_header
    263276                                                $bitstreamoffset = 0;
     
    275288                                                $GOPheader['broken_link']        = self::readBitsFromStream($bitstream, $bitstreamoffset,  1); //  1 bit flag: broken_link
    276289
    277                                                 $time_code_separator = ($GOPheader['drop_frame_flag'] ? ';' : ':'); // While non-drop time code is displayed with colons separating the digit pairs—"HH:MM:SS:FF"—drop frame is usually represented with a semi-colon (;) or period (.) as the divider between all the digit pairs—"HH;MM;SS;FF", "HH.MM.SS.FF"
     290                                                $time_code_separator = ($GOPheader['drop_frame_flag'] ? ';' : ':'); // While non-drop time code is displayed with colons separating the digit pairs "HH:MM:SS:FF" drop frame is usually represented with a semi-colon (;) or period (.) as the divider between all the digit pairs "HH;MM;SS;FF", "HH.MM.SS.FF"
    278291                                                $GOPheader['time_code'] = sprintf('%02d'.$time_code_separator.'%02d'.$time_code_separator.'%02d'.$time_code_separator.'%02d', $GOPheader['time_code_hours'], $GOPheader['time_code_minutes'], $GOPheader['time_code_seconds'], $GOPheader['time_code_pictures']);
    279292
     
    503516        }
    504517
     518        /**
     519         * @param string $bitstream
     520         * @param int    $bitstreamoffset
     521         * @param int    $bits_to_read
     522         * @param bool $return_singlebit_as_boolean
     523         *
     524         * @return bool|float|int
     525         */
    505526        private function readBitsFromStream(&$bitstream, &$bitstreamoffset, $bits_to_read, $return_singlebit_as_boolean=true) {
    506527                $return = bindec(substr($bitstream, $bitstreamoffset, $bits_to_read));
     
    512533        }
    513534
    514 
     535        /**
     536         * @param int $VideoBitrate
     537         * @param int $AudioBitrate
     538         *
     539         * @return float|int
     540         */
    515541        public static function systemNonOverheadPercentage($VideoBitrate, $AudioBitrate) {
    516542                $OverheadPercentage = 0;
     
    564590        }
    565591
    566 
     592        /**
     593         * @param int $rawframerate
     594         *
     595         * @return float
     596         */
    567597        public static function videoFramerateLookup($rawframerate) {
    568598                $lookup = array(0, 23.976, 24, 25, 29.97, 30, 50, 59.94, 60);
    569                 return (isset($lookup[$rawframerate]) ? (float) $lookup[$rawframerate] : (float) 0);
    570         }
    571 
    572         public static function videoAspectRatioLookup($rawaspectratio) {
    573                 $lookup = array(0, 1, 0.6735, 0.7031, 0.7615, 0.8055, 0.8437, 0.8935, 0.9157, 0.9815, 1.0255, 1.0695, 1.0950, 1.1575, 1.2015, 0);
    574                 return (isset($lookup[$rawaspectratio]) ? (float) $lookup[$rawaspectratio] : (float) 0);
    575         }
    576 
    577         public static function videoAspectRatioTextLookup($rawaspectratio) {
    578                 $lookup = array('forbidden', 'square pixels', '0.6735', '16:9, 625 line, PAL', '0.7615', '0.8055', '16:9, 525 line, NTSC', '0.8935', '4:3, 625 line, PAL, CCIR601', '0.9815', '1.0255', '1.0695', '4:3, 525 line, NTSC, CCIR601', '1.1575', '1.2015', 'reserved');
    579                 return (isset($lookup[$rawaspectratio]) ? $lookup[$rawaspectratio] : '');
    580         }
    581 
     599                return (float) (isset($lookup[$rawframerate]) ? $lookup[$rawframerate] : 0);
     600        }
     601
     602        /**
     603         * @param int $rawaspectratio
     604         * @param int $mpeg_version
     605         * @param int $width
     606         * @param int $height
     607         *
     608         * @return float
     609         */
     610        public static function videoAspectRatioLookup($rawaspectratio, $mpeg_version=1, $width=0, $height=0) {
     611                $lookup = array(
     612                        1 => array(0, 1, 0.6735, 0.7031, 0.7615, 0.8055, 0.8437, 0.8935, 0.9157, 0.9815, 1.0255, 1.0695, 1.0950, 1.1575, 1.2015, 0),
     613                        2 => array(0, 1, 1.3333, 1.7778, 2.2100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
     614                );
     615                $ratio = (float) (isset($lookup[$mpeg_version][$rawaspectratio]) ? $lookup[$mpeg_version][$rawaspectratio] : 0);
     616                if ($mpeg_version == 2 && $ratio != 1) {
     617                        // Calculate pixel aspect ratio from MPEG-2 display aspect ratio
     618                        $ratio = $ratio * $height / $width;
     619                }
     620                return $ratio;
     621        }
     622
     623        /**
     624         * @param int $rawaspectratio
     625     * @param int $mpeg_version
     626         *
     627         * @return string
     628         */
     629        public static function videoAspectRatioTextLookup($rawaspectratio, $mpeg_version=1) {
     630                $lookup = array(
     631                        1 => array('forbidden', 'square pixels', '0.6735', '16:9, 625 line, PAL', '0.7615', '0.8055', '16:9, 525 line, NTSC', '0.8935', '4:3, 625 line, PAL, CCIR601', '0.9815', '1.0255', '1.0695', '4:3, 525 line, NTSC, CCIR601', '1.1575', '1.2015', 'reserved'),
     632                        2 => array('forbidden', 'square pixels', '4:3', '16:9', '2.21:1', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved'), // http://dvd.sourceforge.net/dvdinfo/mpeghdrs.html
     633                );
     634                return (isset($lookup[$mpeg_version][$rawaspectratio]) ? $lookup[$mpeg_version][$rawaspectratio] : '');
     635        }
     636
     637        /**
     638         * @param int $video_format
     639         *
     640         * @return string
     641         */
    582642        public static function videoFormatTextLookup($video_format) {
    583643                // ISO/IEC 13818-2, section 6.3.6, Table 6-6. Meaning of video_format
     
    586646        }
    587647
     648        /**
     649         * @param int $scalable_mode
     650         *
     651         * @return string
     652         */
    588653        public static function scalableModeTextLookup($scalable_mode) {
    589654                // ISO/IEC 13818-2, section 6.3.8, Table 6-10. Definition of scalable_mode
     
    592657        }
    593658
     659        /**
     660         * @param int $picture_structure
     661         *
     662         * @return string
     663         */
    594664        public static function pictureStructureTextLookup($picture_structure) {
    595665                // ISO/IEC 13818-2, section 6.3.11, Table 6-14 Meaning of picture_structure
     
    598668        }
    599669
     670        /**
     671         * @param int $chroma_format
     672         *
     673         * @return string
     674         */
    600675        public static function chromaFormatTextLookup($chroma_format) {
    601676                // ISO/IEC 13818-2, section 6.3.11, Table 6-14 Meaning of picture_structure
Note: See TracChangeset for help on using the changeset viewer.