/**
  * MagicDb::analyze should properly detect the file type and output additional info as requested.
  *
  * @access public
  */
 function testAnalyze()
 {
     $r = $this->Db->read(MagicDbTestData::get('magic.db'));
     $this->assertTrue($r === true);
     $r = $this->Db->analyze(array());
     $this->assertTrue($r === false);
     // TODO: Check several serialized file samples for accurate detection
 }
 public function testAnalyze()
 {
     $result = $this->fcgi->analyze();
     $this->assertTrue($result);
 }
 /**
  * Convert  info getted with demuxer to standart view 
  *
  * @param object $mplayerInstance
  * @param string $url
  * @param int $fileSize
  * @return array
  */
 public static function analyze($mplayerInstance, $url, $fileSize)
 {
     $infoSource = $mplayerInstance->analyze($url);
     $bitrate = 0;
     //Video
     if (self::getVideoCodec($infoSource['ID_VIDEO_FORMAT'])) {
         $info['video']['streams'][0]['codec'] = self::getVideoCodec($infoSource['ID_VIDEO_FORMAT']);
     } else {
         $info['video']['streams'][0]['codec'] = $infoSource['ID_VIDEO_CODEC'];
     }
     $info['video']['streams'][0]['resolution_x'] = $infoSource['ID_VIDEO_WIDTH'];
     $info['video']['streams'][0]['resolution_y'] = $infoSource['ID_VIDEO_HEIGHT'];
     $info['video']['streams'][0]['frame_rate'] = $infoSource['ID_VIDEO_FPS'];
     $info['video']['streams'][0]['bitrate_mode'] = '';
     $info['video']['streams'][0]['total_frames'] = '';
     $info['video']['streams'][0]['fourcc'] = '';
     $info['video']['streams'][0]['pixel_aspect_ratio'] = $infoSource['ID_VIDEO_ASPECT'];
     $info['video']['streams'][0]['lossless'] = '';
     $info['video']['streams'][0]['bits_per_sample'] = '';
     $info['video']['streams'][0]['bitrate'] = $infoSource['ID_VIDEO_BITRATE'];
     $bitrate += $infoSource['ID_VIDEO_BITRATE'];
     $info['video']['streams'][0]['compression_ratio'] = '';
     $info['video']['streams'][0]['dataformat'] = $infoSource['ID_DEMUXER'];
     //audio
     $numberOfAudioTracks = $infoSource['numberOfAudioTracks'];
     $info['audio']['streams'][0]['bitrate'] = $infoSource['ID_AUDIO_BITRATE'];
     $info['audio']['streams'][0]['sample_rate'] = $infoSource['ID_AUDIO_RATE'];
     $info['audio']['streams'][0]['channels'] = $infoSource['ID_AUDIO_NCH'];
     $info['audio']['streams'][0]['channelmode'] = '';
     if (@$infoSource['ID_AUDIO_NCH'] == '1') {
         $info['audio']['streams'][0]['channelmode'] = 'mono';
     } elseif (@$infoSource['ID_AUDIO_NCH'] == '2') {
         $info['audio']['streams'][0]['channelmode'] = 'stereo';
     }
     $info['audio']['streams'][0]['dataformat'] = '';
     $info['audio']['streams'][0]['wformattag'] = '';
     $info['audio']['streams'][0]['lossless'] = '';
     $info['audio']['streams'][0]['bitrate_mode'] = '';
     $info['audio']['streams'][0]['compression_ratio'] = '';
     $info['audio']['streams'][0]['codec'] = self::getAudioCodec($infoSource['ID_AUDIO_FORMAT']);
     //Если больше одной дорожки
     if ($numberOfAudioTracks > 1) {
         for ($i = 1; $i < (int) $numberOfAudioTracks; $i++) {
             $infoSource = $mplayerInstance->analyze($url, $i);
             $info['audio']['streams'][$i]['bitrate'] = $infoSource['ID_AUDIO_BITRATE'];
             $bitrate += $infoSource['ID_AUDIO_BITRATE'];
             $info['audio']['streams'][$i]['sample_rate'] = $infoSource['ID_AUDIO_RATE'];
             $info['audio']['streams'][$i]['channels'] = $infoSource['ID_AUDIO_NCH'];
             $info['audio']['streams'][$i]['channelmode'] = '';
             if (@$infoSource['ID_AUDIO_NCH'] == '1') {
                 $info['audio']['streams'][$i]['channelmode'] = 'mono';
             } elseif (@$infoSource['ID_AUDIO_NCH'] == '2') {
                 $info['audio']['streams'][$i]['channelmode'] = 'stereo';
             }
             $info['audio']['streams'][$i]['dataformat'] = '';
             $info['audio']['streams'][$i]['wformattag'] = '';
             $info['audio']['streams'][$i]['lossless'] = '';
             $info['audio']['streams'][$i]['bitrate_mode'] = '';
             $info['audio']['streams'][$i]['compression_ratio'] = '';
             $info['audio']['streams'][$i]['codec'] = self::getAudioCodec($infoSource['ID_AUDIO_FORMAT']);
         }
     }
     //Common
     $info['playtime_seconds'] = (int) $infoSource['ID_LENGTH'];
     $info['file_size'] = $fileSize;
     $info['mime_type'] = '';
     $info['bitrate'] = $bitrate;
     $minutes = floor((int) $info['playtime_seconds'] / 60);
     $seconds = (int) $info['playtime_seconds'] - $minutes * 60;
     $seconds = $seconds < 10 ? '0' . $seconds : $seconds;
     $info['playtime_string'] = $minutes . ':' . $seconds;
     return $info;
 }