private void EnumeratedSupportedFrameSizes(VideoCaptureDevice videoDevice)
{
this.Cursor = Cursors.WaitCursor;
videoResolutionsCombo.Items.Clear();
snapshotResolutionsCombo.Items.Clear();
videoInputsCombo.Items.Clear();
videoCapabilitiesDictionary.Clear();
snapshotCapabilitiesDictionary.Clear();
try
{
// collect video capabilities
VideoCapabilities[] videoCapabilities = videoDevice.VideoCapabilities;
int videoResolutionIndex = 0;
foreach (VideoCapabilities capabilty in videoCapabilities)
{
string item = string.Format(
"{0} x {1}", capabilty.FrameSize.Width, capabilty.FrameSize.Height);
if (!videoResolutionsCombo.Items.Contains(item))
{
if (captureSize == capabilty.FrameSize)
{
videoResolutionIndex = videoResolutionsCombo.Items.Count;
}
videoResolutionsCombo.Items.Add(item);
}
if (!videoCapabilitiesDictionary.ContainsKey(item))
{
videoCapabilitiesDictionary.Add(item, capabilty);
}
}
if (videoCapabilities.Length == 0)
{
videoResolutionsCombo.Items.Add("Not supported");
}
videoResolutionsCombo.SelectedIndex = videoResolutionIndex;
if (configureSnapshots)
{
// collect snapshot capabilities
VideoCapabilities[] snapshotCapabilities = videoDevice.SnapshotCapabilities;
int snapshotResolutionIndex = 0;
foreach (VideoCapabilities capabilty in snapshotCapabilities)
{
string item = string.Format(
"{0} x {1}", capabilty.FrameSize.Width, capabilty.FrameSize.Height);
if (!snapshotResolutionsCombo.Items.Contains(item))
{
if (snapshotSize == capabilty.FrameSize)
{
snapshotResolutionIndex = snapshotResolutionsCombo.Items.Count;
}
snapshotResolutionsCombo.Items.Add(item);
snapshotCapabilitiesDictionary.Add(item, capabilty);
}
}
if (snapshotCapabilities.Length == 0)
{
snapshotResolutionsCombo.Items.Add("Not supported");
}
snapshotResolutionsCombo.SelectedIndex = snapshotResolutionIndex;
}
// get video inputs
availableVideoInputs = videoDevice.AvailableCrossbarVideoInputs;
int videoInputIndex = 0;
foreach (VideoInput input in availableVideoInputs)
{
string item = string.Format("{0}: {1}", input.Index, input.Type);
if ((input.Index == videoInput.Index) && (input.Type == videoInput.Type))
{
videoInputIndex = videoInputsCombo.Items.Count;
}
videoInputsCombo.Items.Add(item);
}
if (availableVideoInputs.Length == 0)
{
videoInputsCombo.Items.Add("Not supported");
}
videoInputsCombo.SelectedIndex = videoInputIndex;
}
finally
{
this.Cursor = Cursors.Default;
}
}
}