private void SetPostConnectionOptions() { // Some options only work after the graph is actually connected. // For example logitech exposure. Probably due to a bug in Logitech firmware. SpecificInfo info = summary.Specific as SpecificInfo; // Only do this for Logitech devices. if (!summary.Identifier.Contains("usb#vid_046d") || info == null) { return; } if (info.CameraProperties.ContainsKey("exposure_logitech")) { if (info.CameraProperties["exposure_logitech"].Automatic) { return; } int exposure = int.Parse(info.CameraProperties["exposure_logitech"].CurrentValue, CultureInfo.InvariantCulture); device.Logitech_SetExposure(exposure, true); } else if (info.CameraProperties.ContainsKey("exposure")) { if (info.CameraProperties["exposure"].Automatic) { return; } int exposure = int.Parse(info.CameraProperties["exposure"].CurrentValue, CultureInfo.InvariantCulture); device.SetCameraProperty(CameraControlProperty.Exposure, exposure, CameraControlFlags.Manual); } }
private static void WriteLogitechProperty(VideoCaptureDevice device, CameraProperty value) { if (!value.Supported) { return; } try { int v; bool parsed = int.TryParse(value.CurrentValue, NumberStyles.Any, CultureInfo.InvariantCulture, out v); if (parsed) { device.Logitech_SetExposure(v, !value.Automatic); } else { log.ErrorFormat("Could not parse property {0}, value: {1}.", value.Identifier, value.CurrentValue); } } catch (Exception e) { log.ErrorFormat("Could not write property {0}. {1}.", value.Identifier, e.Message); } }
private static void WriteLogitechProperty(VideoCaptureDevice device, CameraProperty value) { int v = int.Parse(value.CurrentValue, CultureInfo.InvariantCulture); device.Logitech_SetExposure(v, !value.Automatic); }