private void PopulateVideoDeviceProperties(MediaStreamType streamType, ComboBox comboBox, bool showFrameRate = true) { // query all properties of the specified video stream type IEnumerable <StreamPropertiesHelper> allStreamProperties = mediaCapture.VideoDeviceController.GetAvailableMediaStreamProperties(streamType) .Select(x => new StreamPropertiesHelper(x)); // order them by resolution then frame rate allStreamProperties = allStreamProperties .OrderByDescending(x => x.Height * x.Width) .ThenByDescending(x => x.FrameRate); // populate the combo box with the entries foreach (var property in allStreamProperties) { var comboBoxItem = new ComboBoxItem(); comboBoxItem.Content = property.GetFriendlyName(showFrameRate); comboBoxItem.Tag = property; comboBox.Items.Add(comboBoxItem); } var settings = AppSettingsContainer.GetCachedSettings(); comboBox.SelectedItem = WebcamComboBox.Items.Where(x => (x as ComboBoxItem).Content.ToString() == settings.WebcamQuality).FirstOrDefault(); }
private async Task LoadSettings() { var settings = AppSettingsContainer.GetCachedSettings(); // load quality settings var names = new List <string> { nameof(VideoEncodingQuality.HD1080p), nameof(VideoEncodingQuality.HD720p), nameof(VideoEncodingQuality.Uhd2160p) }; QualityComboBox.ItemsSource = names; QualityComboBox.SelectedIndex = names.IndexOf(settings.Quality.ToString()); var frameRates = new List <string> { "15fps", "30fps", "60fps" }; FrameRateComboBox.ItemsSource = frameRates; FrameRateComboBox.SelectedIndex = frameRates.IndexOf($"{settings.FrameRate}fps"); UseCaptureItemSizeCheckBox.IsChecked = settings.UseSourceSize; AdaptBitrateCheckBox.IsChecked = settings.AdaptBitrate; // load default storage path if (!string.IsNullOrEmpty(settings.StorageFolder)) { try { storageFolder = await StorageFolder.GetFolderFromPathAsync(settings.StorageFolder); FolderName.Text = settings.StorageFolder; } catch { var dialog = new MessageDialog( "Previous storage directory does not exist anymore. Please select a new directory.", "Directory not found or not enough permissions"); await dialog.ShowAsync(); } } // set first webcam device WebcamDeviceComboBox.SelectedItem = WebcamDeviceComboBox.Items.Where(x => (x as ComboBoxItem).Tag.ToString() == settings.WebcamDeviceId).FirstOrDefault(); AudioDeviceComboBox.SelectedItem = AudioDeviceComboBox.Items.Where(x => (x as ComboBoxItem).Tag.ToString() == settings.AudioDeviceId).FirstOrDefault(); }
private async void WebcamComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { var selectedItem = (sender as ComboBox).SelectedItem as ComboBoxItem; if (selectedItem == null) { return; } var encodingProperties = (selectedItem.Tag as StreamPropertiesHelper).EncodingProperties; await mediaCapture.VideoDeviceController.SetMediaStreamPropertiesAsync(MediaStreamType.VideoRecord, encodingProperties); SetExposureControls(); SetWhiteBalanceControl(); // load settings var settings = AppSettingsContainer.GetCachedSettings(); if (ExposureAutoCheckBox.Visibility == Visibility.Visible && ExposureSlider.Visibility == Visibility.Visible) { ExposureSlider.Value = settings.WebcamExposure; ExposureAutoCheckBox.IsChecked = settings.WebcamExposureAuto; } if (WbSlider.Visibility == Visibility.Visible) { WbSlider.Value = settings.WebcamWhiteBalance; } if (WbAutoCheckBox.Visibility == Visibility.Visible) { WbAutoCheckBox.IsChecked = settings.WebcamWhiteBalanceAuto; } } catch (Exception ex) { var msg = new MessageDialog("The device is not ready."); await msg.ShowAsync(); } }