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