getid3_matroska::Analyze() –

You appear to be a bot. Output may be restricted

Description

Usage

$bool = getid3_matroska::Analyze();

Parameters

Returns

bool

Source

File name: wordpress/wp-includes/ID3/module.audio-video.matroska.php
Lines:

1 to 100 of 293
  public function Analyze()
  {
    $info = &$this->getid3->info;

    // parse container
    try {
      $this->getid3_matroska::parseEBML($info);
    } catch (Exception $e) {
      $this->error('EBML parser: '.$e->getMessage());
    }

    // calculate playtime
    if (isset($info['matroska']['info']) && is_array($info['matroska']['info'])) {
      foreach ($info['matroska']['info'] as $key => $infoarray) {
        if (isset($infoarray['Duration'])) {
          // TimecodeScale is how many nanoseconds each Duration unit is
          $info['playtime_seconds'] = $infoarray['Duration'] * ((isset($infoarray['TimecodeScale']) ? $infoarray['TimecodeScale'] : 1000000) / 1000000000);
          break;
        }
      }
    }

    // extract tags
    if (isset($info['matroska']['tags']) && is_array($info['matroska']['tags'])) {
      foreach ($info['matroska']['tags'] as $key => $infoarray) {
        $this->getid3_matroska::ExtractCommentsSimpleTag($infoarray);
      }
    }

    // process tracks
    if (isset($info['matroska']['tracks']['tracks']) && is_array($info['matroska']['tracks']['tracks'])) {
      foreach ($info['matroska']['tracks']['tracks'] as $key => $trackarray) {

        $track_info = array();
        $track_info['dataformat'] = self::CodecIDtoCommonName($trackarray['CodecID']);
        $track_info['default'] = (isset($trackarray['FlagDefault']) ? $trackarray['FlagDefault'] : true);
        if (isset($trackarray['Name'])) { $track_info['name'] = $trackarray['Name']; }

        switch ($trackarray['TrackType']) {

          case 1: // Video
            $track_info['resolution_x'] = $trackarray['PixelWidth'];
            $track_info['resolution_y'] = $trackarray['PixelHeight'];
            $track_info['display_unit'] = self::displayUnit(isset($trackarray['DisplayUnit']) ? $trackarray['DisplayUnit'] : 0);
            $track_info['display_x']    = (isset($trackarray['DisplayWidth']) ? $trackarray['DisplayWidth'] : $trackarray['PixelWidth']);
            $track_info['display_y']    = (isset($trackarray['DisplayHeight']) ? $trackarray['DisplayHeight'] : $trackarray['PixelHeight']);

            if (isset($trackarray['PixelCropBottom'])) { $track_info['crop_bottom'] = $trackarray['PixelCropBottom']; }
            if (isset($trackarray['PixelCropTop']))    { $track_info['crop_top']    = $trackarray['PixelCropTop']; }
            if (isset($trackarray['PixelCropLeft']))   { $track_info['crop_left']   = $trackarray['PixelCropLeft']; }
            if (isset($trackarray['PixelCropRight']))  { $track_info['crop_right']  = $trackarray['PixelCropRight']; }
            if (isset($trackarray['DefaultDuration'])) { $track_info['frame_rate']  = round(1000000000 / $trackarray['DefaultDuration'], 3); }
            if (isset($trackarray['CodecName']))       { $track_info['codec']       = $trackarray['CodecName']; }

            switch ($trackarray['CodecID']) {
              case 'V_MS/VFW/FOURCC':
                getid3_lib::IncludeDependency(GETID3_INCLUDEPATH.'module.audio-video.riff.php', __FILE__, true);

                $parsed = getid3_riff::getid3_riff::ParseBITMAPINFOHEADER($trackarray['CodecPrivate']);
                $track_info['codec'] = getid3_riff::getid3_riff::fourccLookup($parsed['fourcc']);
                $info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $parsed;
                break;

              /*case 'V_MPEG4/ISO/AVC':
								$h264['profile']    = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 1, 1));
								$h264['level']      = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 3, 1));
								$rn                 = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 4, 1));
								$h264['NALUlength'] = ($rn & 3) + 1;
								$rn                 = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], 5, 1));
								$nsps               = ($rn & 31);
								$offset             = 6;
								for ($i = 0; $i < $nsps; $i ++) {
									$length        = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], $offset, 2));
									$h264['SPS'][] = substr($trackarray['CodecPrivate'], $offset + 2, $length);
									$offset       += 2 + $length;
								}
								$npps               = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], $offset, 1));
								$offset            += 1;
								for ($i = 0; $i < $npps; $i ++) {
									$length        = getid3_lib::BigEndian2Int(substr($trackarray['CodecPrivate'], $offset, 2));
									$h264['PPS'][] = substr($trackarray['CodecPrivate'], $offset + 2, $length);
									$offset       += 2 + $length;
								}
								$info['matroska']['track_codec_parsed'][$trackarray['TrackNumber']] = $h264;
								break;*/
            }

            $info['video']['streams'][$trackarray['TrackUID']] = $track_info;
            break;

          case 2: // Audio
            $track_info['sample_rate'] = (isset($trackarray['SamplingFrequency']) ? $trackarray['SamplingFrequency'] : 8000.0);
            $track_info['channels']    = (isset($trackarray['Channels']) ? $trackarray['Channels'] : 1);
            $track_info['language']    = (isset($trackarray['Language']) ? $trackarray['Language'] : 'eng');
            if (isset($trackarray['BitDepth']))  { $track_info['bits_per_sample'] = $trackarray['BitDepth']; }
            if (isset($trackarray['CodecName'])) { $track_info['codec']           = $trackarray['CodecName']; }

            switch ($trackarray['CodecID']) {
              case 'A_PCM/INT/LIT':
              case 'A_PCM/INT/BIG':
 

 View on GitHub View on Trac