private void CreateResolutionMap() { ColorResolutions = new Dictionary <string, IEnumerable <Tuple <PXCMImage.ImageInfo, PXCMRangeF32> > >(); var desc = new PXCMSession.ImplDesc { group = PXCMSession.ImplGroup.IMPL_GROUP_SENSOR, subgroup = PXCMSession.ImplSubgroup.IMPL_SUBGROUP_VIDEO_CAPTURE }; for (int i = 0; ; i++) { PXCMSession.ImplDesc desc1; if (Session.QueryImpl(desc, i, out desc1) < pxcmStatus.PXCM_STATUS_NO_ERROR) { break; } PXCMCapture capture; if (Session.CreateImpl(desc1, out capture) < pxcmStatus.PXCM_STATUS_NO_ERROR) { continue; } for (int j = 0; ; j++) { PXCMCapture.DeviceInfo info; if (capture.QueryDeviceInfo(j, out info) < pxcmStatus.PXCM_STATUS_NO_ERROR) { break; } PXCMCapture.Device device = capture.CreateDevice(j); if (device == null) { throw new Exception("PXCMCapture.Device null"); } var deviceResolutions = new List <Tuple <PXCMImage.ImageInfo, PXCMRangeF32> >(); for (int k = 0; k < device.QueryStreamProfileSetNum(PXCMCapture.StreamType.STREAM_TYPE_COLOR); k++) { PXCMCapture.Device.StreamProfileSet profileSet; device.QueryStreamProfileSet(PXCMCapture.StreamType.STREAM_TYPE_COLOR, k, out profileSet); PXCMCapture.DeviceInfo dinfo; device.QueryDeviceInfo(out dinfo); var currentRes = new Tuple <PXCMImage.ImageInfo, PXCMRangeF32>(profileSet.color.imageInfo, profileSet.color.frameRate); if (IsProfileSupported(profileSet, dinfo)) { continue; } if (SupportedColorResolutions.Contains(new Tuple <int, int>(currentRes.Item1.width, currentRes.Item1.height))) { deviceResolutions.Add(currentRes); } } try { ColorResolutions.Add(info.name, deviceResolutions); } catch (Exception e) { WriteLog.WriteError(e.ToString()); throw; } device.Dispose(); } capture.Dispose(); } }