Example #1
0
        private void SetWindow()
        {
            var captureDevice = VideoSettings.CaptureDevice;

            var item = windowsComboBox.SelectedItem;

            if (item != null)
            {
                var tag = ((ComboBoxItem)item).Tag;
                if (tag != null)
                {
                    WindowDescription window = tag as WindowDescription;
                    if (window != null)
                    {
                        var windowCapture = (WindowCaptureDevice)captureDevice;
                        windowCapture.ClientRect = window.clientRect;
                        windowCapture.Resolution = window.clientRect.Size;

                        windowCapture.hWnd        = window.hWnd;
                        windowCapture.ProcName    = window.processName;
                        windowCapture.WindowClass = window.windowClass;
                        windowCapture.WindowTitle = window.windowTitle;

                        if (windowForm == null)
                        {
                            windowForm = new SelectAreaForm(true, false)
                            {
                                StartPosition = FormStartPosition.Manual,
                                Locked        = true,
                            };
                        }

                        windowForm.Visible = false;

                        if (windowHook != null)
                        {
                            windowHook.Close();
                        }

                        windowHook = new WindowHook();


                        windowHook.LocationChanged += WindowHook_LocationChanged;
                        windowHook.WindowClosed    += WindowHook_WindowClosed;
                        windowHook.VisibleChanged  += WindowHook_VisibleChanged;

                        windowHook.Setup(windowCapture.hWnd);

                        var rect = windowHook.GetCurrentWindowRect();

                        SetWindowsPosition(rect);

                        windowForm.Visible = true;
                    }
                }
            }
        }
Example #2
0
        private void applyButton_Click(object sender, EventArgs e)
        {
            logger.Debug("applyButton_Click(...)");

            if (VideoSettings == null)
            {
                return;
            }

            var captureDevice = VideoSettings.CaptureDevice;

            if (captureDevice.CaptureMode == CaptureMode.Screen)
            {
                var screenCaptureParams = (ScreenCaptureDevice)captureDevice;
                screenCaptureParams.CaptureRegion = this.captureRegion;


                //screenCaptureParams.Properties.CaptureMouse = this.captureMouseCheckBox.Checked;
                screenCaptureParams.Properties.AspectRatio = this.aspectRatioCheckBox.Checked;
                //screenCaptureParams.Properties.ShowDebugInfo = showDebugInfoCheckBox.Checked;
                //screenCaptureParams.Properties.ShowDebugBorder = showCaptureBorderCheckBox.Checked;
            }
            else if (captureDevice.CaptureMode == CaptureMode.UvcDevice)
            {
            }
            else if (captureDevice.CaptureMode == CaptureMode.AppWindow)
            {
                var item = windowsComboBox.SelectedItem;
                if (item != null)
                {
                    var tag = ((ComboBoxItem)item).Tag;
                    if (tag != null)
                    {
                        WindowDescription window = tag as WindowDescription;
                        if (window != null)
                        {
                            var windowCapture = (WindowCaptureDevice)captureDevice;
                            windowCapture.ClientRect = window.clientRect;
                            windowCapture.Resolution = window.clientRect.Size;

                            windowCapture.hWnd        = window.hWnd;
                            windowCapture.ProcName    = window.processName;
                            windowCapture.WindowClass = window.windowClass;
                            windowCapture.WindowTitle = window.windowTitle;
                        }
                    }
                }
            }
            else
            {
            }


            VideoSettings.StreamFlags &= ~VideoStreamFlags.UseEncoderResoulutionFromSource;
            if (this.checkBoxResoulutionFromSource.Checked)
            {
                VideoSettings.StreamFlags |= VideoStreamFlags.UseEncoderResoulutionFromSource;
            }

            //if (!VideoSettings.UseEncoderResoulutionFromSource)
            {
                int width  = (int)this.encWidthNumeric.Value;
                int height = (int)this.encHeightNumeric.Value;

                if (width % 2 != 0)
                {
                    width--;
                }

                if (height % 2 != 0)
                {
                    height--;
                }

                VideoSettings.EncoderSettings.Width  = width;
                VideoSettings.EncoderSettings.Height = height;
            }

            //var item = encoderComboBox.SelectedItem as ComboBoxItem;
            //if (item != null)
            //{
            //    var tag = item.Tag;
            //    if (tag != null)
            //    {
            //        var encoderDescr = (VideoEncoderDescription)tag;
            //        VideoSettings.EncoderSettings.EncoderId = encoderDescr.Id;
            //        VideoSettings.EncoderSettings.EncoderFormat = encoderDescr.Format; //(VideoCodingFormat)this.encoderComboBox.SelectedItem;
            //    }
            //}

            var encoderDescr = GetEncoderDescr();

            if (encoderDescr != null)
            {
                VideoSettings.EncoderSettings.EncoderId     = encoderDescr.Id;
                VideoSettings.EncoderSettings.EncoderFormat = encoderDescr.Format; //(VideoCodingFormat)this.encoderComboBox.SelectedItem;
            }

            //VideoSettings.EncoderSettings.Profile = (H264Profile)this.encProfileComboBox.SelectedItem;
            //VideoSettings.EncoderSettings.BitrateMode = (BitrateControlMode)this.bitrateModeComboBox.SelectedItem;
            //VideoSettings.EncoderSettings.MaxBitrate = (int)this.MaxBitrateNumeric.Value;
            //VideoSettings.EncoderSettings.Bitrate = (int)this.bitrateNumeric.Value;
            //VideoSettings.EncoderSettings.FrameRate = (int)this.fpsNumeric.Value;
            //VideoSettings.EncoderSettings.LowLatency = this.latencyModeCheckBox.Checked;

            //TODO: Validate settings...

            this.Close();
        }