示例#1
0
        public BaseBorderViewModel(StreamViewModel stream, PropertyBorderModel border)
        {
            this.Stream      = stream;
            this.borderModel = border;

            videoViewModel = Stream.VideoViewModel;

            SetBorderRegion(borderModel.BorderRect);

            //Color color1 = Color.FromArgb(46, 131, 241);
            //Color color2 = Color.WhiteSmoke;

            //var bitmap = CreateStripesBitmap(new System.Drawing.Size(50, 50), color1, color2);

            //bitmapSource = null;

            //var hBitmap = bitmap.GetHbitmap();

            //try
            //{
            //    bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
            //        hBitmap,
            //        IntPtr.Zero, System.Windows.Int32Rect.Empty,
            //        BitmapSizeOptions.FromEmptyOptions());
            //}
            //catch (Win32Exception)
            //{
            //    bitmapSource = null;
            //}
            //finally
            //{
            //    NativeMethods.DeleteObject(hBitmap);
            //}
        }
示例#2
0
        public StreamViewModel(MainViewModel mainViewModel, bool addInitialProperties, MediaStreamModel model)
        {
            MediaStreamer = model;

            dialogService = ServiceLocator.GetInstance <IDialogService>();

            MainViewModel = mainViewModel;
            StartCommand  = new DelegateCommand(SwitchStreamingState);

            //EditModeCommand = new RelayCommand(() => MainViewModel.IsEdit = true);
            //EditModeCommand = new DelegateCommand(() => MainViewModel.IsEdit = true);

            EditModeCommand = new DelegateCommand(SetEditMode);

            EditNameCommand     = new DelegateCommand(SwitchEditNameState);
            CopyUrlCommand      = new DelegateCommand(CopyUrl);
            PreferencesCommand  = new DelegateCommand <WindowViewModel>(ShowPreferencesDialog);
            HideBorderCommand   = new DelegateCommand(HideBorder);
            ShowSettingsCommand = new DelegateCommand(ShowSettings);


            if (addInitialProperties)
            {
                VideoViewModel  = new PropertyVideoViewModel(this, MediaStreamer.PropertyVideo);
                PropertyAudio   = new PropertyAudioViewModel(this, MediaStreamer.PropertyAudio);
                PropertyNetwork = new PropertyNetworkViewModel(this, MediaStreamer.PropertyNetwork);

                Properties.Add(VideoViewModel);
                Properties.Add(PropertyAudio);
                Properties.Add(PropertyNetwork);

                // Properties.Add(PropertyQuality = new PropertyQualityViewModel(this, Model.PropertyQuality));
                //  Properties.Add(PropertyCursor = new PropertyCursorViewModel(this, Model.PropertyCursor));

                //Properties.Add(PropertyBorder = new PropertyBorderViewModel(this, Model.PropertyBorder));
            }

            AdvancedSettingsViewModel = new AdvancedSettingsViewModel(MediaStreamer.AdvancedSettings, this);

            BorderViewModel = new BorderViewModel(this, MediaStreamer.PropertyBorder);

            DesignBorderViewModel = new DesignBorderViewModel(this, MediaStreamer.PropertyBorder);

            VideoViewModel.SetupDisplayRegion();

            dispatcher = Dispatcher.CurrentDispatcher;

            dispatcher.BeginInvoke(
                DispatcherPriority.Loaded,
                new Action(() => OnStreamStateChanged(IsStarted)));

            MediaStreamer.StateChanged  += MediaStreamer_StateChanged;
            MediaStreamer.ErrorOccurred += MediaStreamer_ErrorOccurred;
        }
示例#3
0
        public AdvancedSettingsViewModel(AdvancedSettingsModel model, TrackableViewModel parent) : base(parent)
        {
            _model         = model;
            videoVeiwModel = ((StreamViewModel)parent).VideoViewModel;

            var encoders = EncoderHelper.GetVideoEncoders();

            VideoEncoders.AddRange(encoders);

            var encoder = encoders.FirstOrDefault(e => e.Id == _model.EncoderId) ?? encoders.FirstOrDefault();

            this.VideoEncoder = encoder;

            AdjustResolutionCommand = new DelegateCommand(AdjustVideoResolution);
        }
        public VideoSettingsViewModel(PropertyVideoViewModel property, TrackableViewModel parent) : base(property, parent)
        {
            this.parent.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == nameof(IsChanged))
                {
                    RaisePropertyChanged(() => IsChanged);
                }
            };

            UpdateVideoSourcesCommand = new Prism.Commands.DelegateCommand(UpdateSources);

            //Displays.AddRange(ScreenHelper.GetDisplayItems());


            ScreenCaptures.AddRange(ScreenHelper.SupportedCaptures);

            var propVideoViewModel = ((PropertyVideoViewModel)this.Property);
            
            var streamModel = propVideoViewModel.Parent.MediaStreamer;

            var videoModel = streamModel.PropertyVideo;

            var captType = videoModel.CaptType;

            propVideoViewModel.CaptureType = ScreenCaptures.FirstOrDefault(c => c.CaptType == captType) ?? ScreenCaptures.FirstOrDefault();


            Displays.AddRange(ScreenHelper.GetVideoSources());

            var deviceId = videoModel.DeviceId;      

            if (string.IsNullOrEmpty(deviceId))
            {// если девайс не задан то берем первый попавшийся
                propVideoViewModel.Display = Displays.FirstOrDefault();
            }
            else
            {// если девайс есть в конфиге, то используем его даже если его нет в списке 
                // чтобы пользователь поменял его вручную
                propVideoViewModel.Display = Displays.FirstOrDefault(d => d.DeviceId == deviceId);
            }

           // ((PropertyVideoViewModel)this.Property).Display = Displays.FirstOrDefault(d => d.DeviceId == deviceId) ?? Displays.FirstOrDefault();

        }