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); }