示例#1
0
 /**
  * 
  * @param unknown_type $source
  * @param unknown_type $sourceAnalize
  * @return NULL|stdClass
  */
 private static function sourceMultiStreamToTarget($source, $sourceAnalize)
 {
     if (!isset($sourceAnalize->streamsAsChannels)) {
         return null;
     }
     /*
      * Sample json string: 
      * 		- {"detect":"auto"}
      * 		- {"audio":{"mapping":[1,2]}}
      * Struct:
      * 	detect - 'auto', when set all other fields are omitted, (optional)
      * 	audio - either as a single field or as array
      * 		mapping - array of stream ids, optionally in ffmpeg syntax (with source file id)
      * 		action	- 'merge' (default),'languages', (optional)
      * 		output	- output stream (optional)
      * 	video
      * 		...
      *
      */
     $multiStream = new stdClass();
     $multiStream->audio = new stdClass();
     $multiStream->audio->mapping = array();
     /*
      * Use 'downnmix' stream, if there is such,
      * Otherwise try to map-in FL and FR streams
      */
     $mappedStreams = KDLAudioLayouts::matchLayouts($source->_contentStreams->audio, KDLAudioLayouts::DOWNMIX);
     if (count($mappedStreams) == 0) {
         $mappedStreams = KDLAudioLayouts::matchLayouts($sourceAnalize->streamsAsChannels, array(KDLAudioLayouts::FL, KDLAudioLayouts::FR, KDLAudioLayouts::MONO));
     }
     foreach ($mappedStreams as $stream) {
         $multiStream->audio->mapping[] = $stream->id;
     }
     return $multiStream;
 }
示例#2
0
 /**
  * 
  * @param unknown_type $source
  * @param unknown_type $analyzedStreams
  * @return NULL|stdClass
  */
 private static function sorroundAudioSurceToTarget($source, $multiStreamSettings, $analyzedStreams)
 {
     /*
      * If there is manually defined multiStream/sorround preset - use it, 
      * don't attempt to figure it out automatically
      */
     if (isset($multiStreamSettings) && !(isset($multiStreamSettings->detect) && $multiStreamSettings->detect == 'auto')) {
         return $multiStreamSettings;
     }
     /*
      * Sample json string: 
      * 		- {"detect":"auto"}
      * 		- {"audio":{"mapping":[1,2]}}
      * Struct:
      * 	detect - 'auto', when set all other fields are omitted, (optional)
      * 	audio - either as a single field or as array
      * 		mapping - array of stream ids, optionally in ffmpeg syntax (with source file id)
      * 		action	- 'merge' (default),'languages', (optional)
      * 		output	- output stream (optional)
      * 	video
      * 		...
      *
      */
     $multiStream = new stdClass();
     $multiStream->audio = new stdClass();
     $multiStream->audio->mapping = array();
     /*
      * Use 'downnmix' stream, if there is such,
      * Otherwise try to map-in FL and FR streams
      */
     $mappedStreams = KDLAudioLayouts::matchLayouts($source->_contentStreams->audio, KDLAudioLayouts::DOWNMIX);
     if (count($mappedStreams) == 0) {
         $mappedStreams = KDLAudioLayouts::matchLayouts($analyzedStreams, array(KDLAudioLayouts::FL, KDLAudioLayouts::FR, KDLAudioLayouts::MONO));
     }
     foreach ($mappedStreams as $stream) {
         $multiStream->audio->mapping[] = $stream->id;
     }
     return $multiStream;
 }
示例#3
0
 /**
  * 
  * @param unknown_type $layout
  * @return string
  */
 protected static function parseAudioLayout($layout)
 {
     $lout = KDLAudioLayouts::Detect($layout);
     if (!isset($lout)) {
         $lout = $layout;
     }
     return $lout;
 }