private void applyButton_Click(object sender, EventArgs e) { EncoderSettings.Profile = (H264Profile)this.encProfileComboBox.SelectedItem; EncoderSettings.BitrateMode = (BitrateControlMode)this.bitrateModeComboBox.SelectedItem; EncoderSettings.MaxBitrate = (int)this.MaxBitrateNumeric.Value; EncoderSettings.Bitrate = (int)this.bitrateNumeric.Value; EncoderSettings.FrameRate = new MediaRatio((int)this.fpsNumeric.Value, 1); EncoderSettings.LowLatency = this.latencyModeCheckBox.Checked; EncoderSettings.Quality = (int)qualityNumeric.Value; EncoderSettings.GOPSize = (int)this.gopSizeNumeric.Value; MediaRatio aspectRatio = null; var item = aspectRatioComboBox.SelectedItem; if (item != null) { aspectRatio = item as MediaRatio; } EncoderSettings.AspectRatio = aspectRatio ?? AspectRatio.AspectRatio_1_1; this.Close(); }
static string ToFormattedString(this MediaRatio mediaRatio, string key) { string retVal = string.Empty; if (!String.IsNullOrEmpty(key) && mediaRatio != null) { retVal = key + ":\t" + mediaRatio.Numerator + "/" + mediaRatio.Denominator; } return(retVal); }
public static DtoMediaRatio ToDto(this MediaRatio obj) { if (obj == null) { return(null); } return(new DtoMediaRatio { Numerator = obj.Numerator, Denominator = obj.Denominator }); }
private async Task InitializeCameraAsync() { if (_mediaCapture == null) { _mediaCapture = new MediaCapture(); } if (_allVideoDevices == null) { return; } if (_allVideoDevices.Count == 0) { Debug.WriteLine("ERROR: no webcam found or available"); return; } Object storedVideoDeviceId = _localSettings.Values["CurrentVideoDeviceId"]; if (storedVideoDeviceId == null) { storedVideoDeviceId = _allVideoDevices[0].Id; _localSettings.Values["CurrentVideoDeviceId"] = storedVideoDeviceId; CameraComboBox.SelectedIndex = 0; Debug.WriteLine("INFO: no webcam configured. Choosing the first available: " + _allVideoDevices[0].Name); } else { Debug.WriteLine("Loaded from Settings - CurrentVideoDeviceId: " + storedVideoDeviceId.ToString()); } var mediaFrameSourceGroup = await MediaFrameSourceGroup.FromIdAsync(storedVideoDeviceId.ToString()); MediaFrameSourceInfo selectedMediaFrameSourceInfo = null; foreach (MediaFrameSourceInfo sourceInfo in mediaFrameSourceGroup.SourceInfos) { if (sourceInfo.MediaStreamType == MediaStreamType.VideoRecord) { selectedMediaFrameSourceInfo = sourceInfo; break; } } if (selectedMediaFrameSourceInfo == null) { Debug.WriteLine("no compatible MediaSource found."); return; } MediaCaptureInitializationSettings mediaSettings = new MediaCaptureInitializationSettings(); mediaSettings.VideoDeviceId = storedVideoDeviceId.ToString(); mediaSettings.SourceGroup = mediaFrameSourceGroup; mediaSettings.StreamingCaptureMode = StreamingCaptureMode.Video; mediaSettings.SharingMode = MediaCaptureSharingMode.ExclusiveControl; mediaSettings.MemoryPreference = MediaCaptureMemoryPreference.Cpu; try { await _mediaCapture.InitializeAsync(mediaSettings); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("MediaCapture initialization failed: " + ex.Message); return; } Debug.WriteLine("MediaFrameCapture initialized"); var mediaFrameSource = _mediaCapture.FrameSources[selectedMediaFrameSourceInfo.Id]; imageElement.Source = new SoftwareBitmapSource(); MediaRatio mediaRatio = mediaFrameSource.CurrentFormat.VideoFormat.MediaFrameFormat.FrameRate; _sourceFrameRate = (double)mediaRatio.Numerator / (double)mediaRatio.Denominator; CalculateFrameRate(); _mediaFrameReader = await _mediaCapture.CreateFrameReaderAsync(mediaFrameSource, MediaEncodingSubtypes.Argb32); _mediaFrameReader.AcquisitionMode = MediaFrameReaderAcquisitionMode.Realtime; _mediaFrameReader.FrameArrived += ColorFrameReader_FrameArrivedAsync; await _mediaFrameReader.StartAsync(); Debug.WriteLine("MediaFrameReader StartAsync done "); _isInitialized = true; UpdateCaptureControls(); }
private uint GetHertz(MediaRatio ratio) { return(ratio.Numerator / ratio.Denominator); }
private double GetFrameRate(MediaRatio frameRate) { return(frameRate.Numerator / frameRate.Denominator); }