コード例 #1
0
        private MediaConversion(TAspectConversion type)
        {
            Conversion = type;
            switch (type)
            {
            case TAspectConversion.NoConversion:
                break;

            case TAspectConversion.Force4_3:
                FFMpegFilter = "setdar=dar=4/3";
                break;

            case TAspectConversion.Force16_9:
                FFMpegFilter = "setdar=dar=16/9";
                break;

            case TAspectConversion.Letterbox:
                FFMpegFilter = "scale=iw:ih*3/4:interl=-1, pad=0:ih*4/3:0:(oh-ih)/2:black, setdar=dar=4/3";
                break;

            case TAspectConversion.PanScan:
                FFMpegFilter = "crop=iw*3/4, scale=iw*4/3:ih:interl=-1, setdar=dar=4/3";
                break;

            case TAspectConversion.PillarBox:
                FFMpegFilter = "scale=iw*3/4:ih:interl=-1, pad=iw*4/3:0:(ow-iw)/2:0:black, setdar=dar=16/9";
                break;

            case TAspectConversion.TiltScan:
                FFMpegFilter = "crop=iw:ih*3/4, scale=iw:ih*4/3:interl=-1, setdar=dar=16/9";
                break;
            }
        }
コード例 #2
0
        public IngestOperationViewModel(IIngestOperation operation, IPreview preview, IEngine engine)
            : base(operation)
        {
            _ingestOperation = operation;
            _engine          = engine;
            string destFileName = $"{Path.GetFileNameWithoutExtension(operation.Source.FileName)}.{operation.MovieContainerFormat}";

            _destMediaProperties = new PersistentMediaProxy
            {
                FileName      = operation.DestDirectory.GetUniqueFileName(destFileName),
                MediaName     = FileUtils.GetFileNameWithoutExtension(destFileName, operation.Source.MediaType),
                MediaType     = operation.Source.MediaType == TMediaType.Unknown ? TMediaType.Movie : operation.Source.MediaType,
                Duration      = operation.Source.Duration,
                TcStart       = operation.StartTC,
                MediaGuid     = operation.Source.MediaGuid,
                MediaCategory = operation.Source.MediaCategory
            };

            _audioChannelMappingConversion = operation.AudioChannelMappingConversion;
            _aspectConversion = operation.AspectConversion;
            _audioVolume      = operation.AudioVolume;
            _sourceFieldOrderEnforceConversion = operation.SourceFieldOrderEnforceConversion;
            _loudnessCheck = operation.LoudnessCheck;
            operation.Source.PropertyChanged += OnSourceMediaPropertyChanged;
            AspectConversionsEnforce          = new TAspectConversion[3];
            Array.Copy(AspectConversions, AspectConversionsEnforce, 3);
            if (preview != null)
            {
                PreviewViewmodel = new PreviewViewmodel(engine, preview)
                {
                    SelectedIngestOperation = operation
                }
            }
            ;
        }
コード例 #3
0
 private MediaConversion(TAspectConversion type)
 {
     Conversion = type;
     switch (type)
     {
         case TAspectConversion.NoConversion:
             break;
         case TAspectConversion.Force4_3:
             FFMpegVideoFilter = "setdar=dar=4/3";
             break;
         case TAspectConversion.Force16_9:
             FFMpegVideoFilter = "setdar=dar=16/9";
             break;
         case TAspectConversion.Letterbox:
             FFMpegVideoFilter = "scale=iw:ih*3/4:-1, pad=0:ih*4/3:0:(oh-ih)/2:black, setdar=dar=4/3";
             break;
         case TAspectConversion.PanScan:
             FFMpegVideoFilter = "crop=iw*3/4, scale=iw*4/3:ih:-1, setdar=dar=4/3";
             break;
         case TAspectConversion.PillarBox:
             FFMpegVideoFilter = "scale=iw*3/4:ih:-1, pad=iw*4/3:0:(ow-iw)/2:0:black, setdar=dar=16/9";
             break;
         case TAspectConversion.TiltScan:
             FFMpegVideoFilter = "crop=iw:ih*3/4, scale=iw:ih*4/3:-1, setdar=dar=16/9";
             break;
     }
 }
コード例 #4
0
 internal IngestOperation(FileManager ownerFileManager) : base(ownerFileManager)
 {
     Kind = TFileOperationKind.Ingest;
     _aspectConversion = TAspectConversion.NoConversion;
     _sourceFieldOrderEnforceConversion = TFieldOrder.Unknown;
     _audioChannelMappingConversion     = TAudioChannelMappingConversion.FirstTwoChannels;
 }
コード例 #5
0
 public IngestOperationViewModel(IIngestOperation operation, IEngine engine)
     : base(operation, engine.MediaManager)
 {
     _operation                         = operation;
     _engine                            = engine;
     _destMediaVideoFormat              = operation.Source.VideoFormat;
     DestMediaName                      = FileUtils.GetFileNameWithoutExtension(operation.Source.MediaName, operation.Source.MediaType);
     _duration                          = operation.Source.Duration;
     _startTc                           = operation.Source.TcStart;
     _destCategory                      = ((IIngestDirectory)operation.Source.Directory).MediaCategory;
     IsMovie                            = operation.Source.MediaType == TMediaType.Unknown || operation.Source.MediaType == TMediaType.Movie;
     IsStill                            = operation.Source.MediaType == TMediaType.Still;
     _audioChannelMappingConversion     = operation.AudioChannelMappingConversion;
     _aspectConversion                  = operation.AspectConversion;
     _audioVolume                       = operation.AudioVolume;
     _sourceFieldOrderEnforceConversion = operation.SourceFieldOrderEnforceConversion;
     _loudnessCheck                     = operation.LoudnessCheck;
     operation.Source.PropertyChanged  += OnSourceMediaPropertyChanged;
     AspectConversionsEnforce           = new TAspectConversion[3];
     Array.Copy(AspectConversions, AspectConversionsEnforce, 3);
     if (engine.Preview != null)
     {
         _preview = new PreviewViewmodel(engine.Preview, true, false)
         {
             SelectedIngestOperation = operation
         }
     }
     ;
     CommandRemove = new UiCommand(o => Removed?.Invoke(this, EventArgs.Empty));
 }
コード例 #6
0
 internal IngestOperation()
 {
     _aspectConversion = TAspectConversion.NoConversion;
     _sourceFieldOrderEnforceConversion = TFieldOrder.Unknown;
     _audioChannelMappingConversion     = TAudioChannelMappingConversion.FirstTwoChannels;
 }
コード例 #7
0
        internal IConvertOperation CreateConvertOperation(IMedia sourceMedia, IMediaProperties destMediaProperties, IMediaDirectory destDirectory, TVideoFormat outputFormat, decimal audioVolume, TFieldOrder sourceFieldOrderEnforceConversion, TAspectConversion aspectConversion, bool loudnessCheck)
        {
            IConvertOperation result = _fileManager.CreateConvertOperation();

            result.SourceMedia         = sourceMedia;
            result.DestMediaProperties = destMediaProperties;
            result.DestDirectory       = destDirectory;
            result.AudioVolume         = audioVolume;
            result.SourceFieldOrderEnforceConversion = sourceFieldOrderEnforceConversion;
            result.AspectConversion = aspectConversion;
            result.StartTC          = sourceMedia.TcPlay;
            result.Duration         = sourceMedia.DurationPlay;
            result.LoudnessCheck    = loudnessCheck;
            return(result);
        }