Example #1
0
        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);
        }
Example #3
0
 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();
        }
Example #5
0
 private uint GetHertz(MediaRatio ratio)
 {
     return(ratio.Numerator / ratio.Denominator);
 }
 private double GetFrameRate(MediaRatio frameRate)
 {
     return(frameRate.Numerator / frameRate.Denominator);
 }