Beispiel #1
0
        public VideoViewModel(IRegionProvider RegionProvider,
                              IEnumerable <IImageWriterItem> ImageWriters,
                              Settings Settings,
                              LanguageManager LanguageManager,
                              FullScreenSourceProvider FullScreenProvider,
                              IIconSet Icons,
                              // ReSharper disable SuggestBaseTypeForParameter
                              ScreenSourceProvider ScreenSourceProvider,
                              WindowSourceProvider WindowSourceProvider,
                              RegionSourceProvider RegionSourceProvider,
                              NoVideoSourceProvider NoVideoSourceProvider,
                              DeskDuplSourceProvider DeskDuplSourceProvider,
                              FFmpegWriterProvider FFmpegWriterProvider,
                              SharpAviWriterProvider SharpAviWriterProvider,
                              GifWriterProvider GifWriterProvider,
                              StreamingWriterProvider StreamingWriterProvider,
                              DiscardWriterProvider DiscardWriterProvider
                              // ReSharper restore SuggestBaseTypeForParameter
                              ) : base(Settings, LanguageManager)
        {
            this.NoVideoSourceProvider = NoVideoSourceProvider;

            AvailableVideoWriters = new ReadOnlyObservableCollection <IVideoWriterItem>(_videoWriters);

            AvailableImageWriters = new ReadOnlyObservableCollection <IImageWriterItem>(_imageWriters);

            _regionProvider     = RegionProvider;
            _fullScreenProvider = FullScreenProvider;

            VideoSources.Add(new VideoSourceModel(NoVideoSourceProvider, nameof(Loc.OnlyAudio), NoVideoDescription, Icons.Video));
            VideoSources.Add(new VideoSourceModel(FullScreenProvider, nameof(Loc.FullScreen), FullScreenDescription, Icons.MultipleMonitor));
            VideoSources.Add(new VideoSourceModel(ScreenSourceProvider, nameof(Loc.Screen), ScreenDescription, Icons.Screen));
            VideoSources.Add(new VideoSourceModel(WindowSourceProvider, nameof(Loc.Window), WindowDescription, Icons.Window));
            VideoSources.Add(new VideoSourceModel(RegionSourceProvider, nameof(Loc.Region), RegionDescription, Icons.Region));

            if (Windows8OrAbove)
            {
                VideoSources.Add(new VideoSourceModel(DeskDuplSourceProvider, "Desktop Duplication", DeskDuplDescription, Icons.Game));
            }

            VideoWriterProviders.Add(FFmpegWriterProvider);
            VideoWriterProviders.Add(GifWriterProvider);
            VideoWriterProviders.Add(SharpAviWriterProvider);
            VideoWriterProviders.Add(StreamingWriterProvider);
            VideoWriterProviders.Add(DiscardWriterProvider);

            foreach (var imageWriter in ImageWriters)
            {
                _imageWriters.Add(imageWriter);
            }

            SetDefaultSource();

            if (!AvailableImageWriters.Any(M => M.Active))
            {
                AvailableImageWriters[0].Active = true;
            }

            SelectedVideoWriterKind = FFmpegWriterProvider;
        }
        /// <summary>
        /// Generate the necessary parameters
        /// </summary>
        public List <KeyValuePair <string, string> > GetParams()
        {
            var p = new List <KeyValuePair <string, string> >();

            if (AudioSources != null)
            {
                p.AddRange(AudioSources.Select(prop => new KeyValuePair <string, string>("AudioSources", prop.ToString())));
            }

            if (VideoSources != null)
            {
                p.AddRange(VideoSources.Select(prop => new KeyValuePair <string, string>("VideoSources", prop.ToString())));
            }

            if (VideoLayout != null)
            {
                p.Add(new KeyValuePair <string, string>("VideoLayout", VideoLayout.ToString()));
            }

            if (Resolution != null)
            {
                p.Add(new KeyValuePair <string, string>("Resolution", Resolution));
            }

            if (Format != null)
            {
                p.Add(new KeyValuePair <string, string>("Format", Format.ToString()));
            }

            if (DesiredBitrate != null)
            {
                p.Add(new KeyValuePair <string, string>("DesiredBitrate", DesiredBitrate.Value.ToString()));
            }

            if (DesiredMaxDuration != null)
            {
                p.Add(new KeyValuePair <string, string>("DesiredMaxDuration", DesiredMaxDuration.Value.ToString()));
            }

            if (StatusCallback != null)
            {
                p.Add(new KeyValuePair <string, string>("StatusCallback", Serializers.Url(StatusCallback)));
            }

            if (StatusCallbackMethod != null)
            {
                p.Add(new KeyValuePair <string, string>("StatusCallbackMethod", StatusCallbackMethod.ToString()));
            }

            return(p);
        }