Ejemplo n.º 1
0
        public ImageFrame Create(PixelFormat format, int width, int height)
        {
            if (width <= 0)
            {
                throw new ArgumentException("Must be > 0", nameof(width));
            }
            if (height <= 0)
            {
                throw new ArgumentException("Must be > 0", nameof(height));
            }

            var memory = Buffer.Allocate(VideoFormatHelper.GetBufferSize(format, width, height, 1));

            return(new ImageFrame(format, width, height, memory));

            // Strides = VideoFormatHelper.GetStrides(format, width);
        }
Ejemplo n.º 2
0
        private void cbxCaptureDevices_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Release COM objects
            if (theDevice != null)
            {
                Marshal.ReleaseComObject(theDevice);
                theDevice = null;
            }

            if (cbxCaptureDevices.SelectedIndex != -1)
            {
                //Create the filter for the selected video input device
                string deviceName = cbxCaptureDevices.SelectedItem.ToString();
                theDevice = CreateFilter(FilterCategory.VideoInputDevice, deviceName);

                if (!string.IsNullOrEmpty(deviceName))
                {
                    Cursor = Cursors.WaitCursor;
                    Update();

                    cbxCrossbarInput.Items.Clear();
                    cbxCrossbarInput.SelectedIndexChanged -= new EventHandler(cbxCrossbarInput_SelectedIndexChanged);
                    try
                    {
                        crossbarHelper.LoadCrossbarSources(deviceName, cbxCrossbarInput);
                        // TODO: Save the settings
                    }
                    finally
                    {
                        cbxCrossbarInput.SelectedIndexChanged += new EventHandler(cbxCrossbarInput_SelectedIndexChanged);
                        Cursor = Cursors.Default;
                    }

                    cbxVideoFormats.Items.Clear();
                    cbxVideoFormats.SelectedIndexChanged -= new EventHandler(cbxVideoFormats_SelectedIndexChanged);
                    try
                    {
                        VideoFormatHelper.LoadSupportedVideoFormats(deviceName, cbxVideoFormats);
                    }
                    finally
                    {
                        cbxVideoFormats.SelectedIndexChanged += new EventHandler(cbxVideoFormats_SelectedIndexChanged);
                        Cursor = Cursors.Default;
                    }

                    VideoFormatHelper.SupportedVideoFormat selectedVideoFormat = null;
                    foreach (VideoFormatHelper.SupportedVideoFormat format in cbxVideoFormats.Items)
                    {
                        if (settings.SelectedVideoFormat == format.AsSerialized())
                        {
                            selectedVideoFormat = format;
                            break;
                        }
                    }

                    if (selectedVideoFormat != null)
                    {
                        cbxVideoFormats.SelectedItem = selectedVideoFormat;
                    }
                    else
                    {
                        cbxVideoFormats.SelectedIndex = 0;
                    }
                }
            }
        }