18#define DUVC_VERSION_MAJOR 1
19#define DUVC_VERSION_MINOR 0
20#define DUVC_VERSION_PATCH 0
21#define DUVC_ABI_VERSION \
22 ((DUVC_VERSION_MAJOR << 16) | (DUVC_VERSION_MINOR << 8) | DUVC_VERSION_PATCH)
152 char property_set_guid[39];
372 size_t buffer_size,
size_t *required);
384 size_t buffer_size,
size_t *required);
396 size_t buffer_size,
size_t *required);
750 size_t *actual_count);
764 size_t *actual_count);
787 int32_t value,
int *valid);
797 int32_t value, int32_t *clamped_value);
823 const char *property_set_guid,
824 uint32_t property_id,
void *data,
826 size_t *bytes_returned);
838 const char *property_set_guid,
839 uint32_t property_id,
const void *data,
851 const char *property_set_guid,
852 uint32_t property_id,
871 size_t *bytes_returned);
883 const void *data,
size_t data_size);
945 size_t buffer_size,
size_t *required);
957 size_t buffer_size,
size_t *required);
969 size_t buffer_size,
size_t *required);
983 size_t *required_size);
994 size_t *required_size);
1030 size_t buffer_size,
size_t *required);
1054 size_t buffer_size,
size_t *required);
1074#define DUVC_LOG_DEBUG(msg) duvc_log_debug(msg)
1075#define DUVC_LOG_INFO(msg) duvc_log_info(msg)
1076#define DUVC_LOG_WARNING(msg) duvc_log_warning(msg)
1077#define DUVC_LOG_ERROR(msg) duvc_log_error(msg)
1078#define DUVC_LOG_CRITICAL(msg) duvc_log_critical(msg)
duvc_result_t
Result codes for duvc operations.
@ DUVC_ERROR_TIMEOUT
Operation timed out.
@ DUVC_ERROR_CONNECTION_FAILED
Failed to establish device connection.
@ DUVC_ERROR_INVALID_ARGUMENT
Invalid function argument provided.
@ DUVC_ERROR_INVALID_VALUE
Property value out of valid range.
@ DUVC_ERROR_NOT_IMPLEMENTED
Feature not implemented on this platform.
@ DUVC_ERROR_DEVICE_BUSY
Device is busy or in use by another process.
@ DUVC_ERROR_PERMISSION_DENIED
Insufficient permissions to access device.
@ DUVC_ERROR_DEVICE_NOT_FOUND
Device not found or disconnected.
@ DUVC_ERROR_BUFFER_TOO_SMALL
Provided buffer is too small for data.
@ DUVC_ERROR_SYSTEM_ERROR
System/platform error occurred.
@ DUVC_ERROR_PROPERTY_NOT_SUPPORTED
Property not supported by device.
@ DUVC_SUCCESS
Operation completed successfully.
duvc_result_t duvc_get_multiple_video_properties(duvc_connection_t *conn, const duvc_vid_prop_t *props, duvc_prop_setting_t *settings, size_t count)
Get multiple video properties.
duvc_result_t duvc_get_supported_video_properties(const duvc_device_capabilities_t *caps, duvc_vid_prop_t *props, size_t max_count, size_t *actual_count)
Get list of supported video properties.
const char * duvc_cam_prop_to_string(duvc_cam_prop_t prop)
Convert camera property to string.
duvc_result_t duvc_set_camera_property(duvc_connection_t *conn, duvc_cam_prop_t prop, const duvc_prop_setting_t *setting)
Set camera property value.
duvc_result_t duvc_get_camera_property_range(duvc_connection_t *conn, duvc_cam_prop_t prop, duvc_prop_range_t *range)
Get camera property range.
duvc_result_t duvc_get_platform_info(char *buffer, size_t buffer_size, size_t *required)
Get platform information.
duvc_result_t duvc_get_video_property_range(duvc_connection_t *conn, duvc_vid_prop_t prop, duvc_prop_range_t *range)
Get video property range.
duvc_result_t duvc_get_device_capabilities(const duvc_device_t *device, duvc_device_capabilities_t **caps)
Get device capabilities snapshot.
duvc_result_t duvc_supports_camera_property(const duvc_device_capabilities_t *caps, duvc_cam_prop_t prop, int *supported)
Check if camera property is supported.
duvc_result_t duvc_set_multiple_camera_properties(duvc_connection_t *conn, const duvc_cam_prop_t *props, const duvc_prop_setting_t *settings, size_t count)
Set multiple camera properties.
duvc_result_t duvc_refresh_device_capabilities(duvc_device_capabilities_t *caps)
Refresh capabilities snapshot.
duvc_result_t duvc_get_hresult_details(int32_t hr, char *buffer, size_t buffer_size, size_t *required)
Get detailed HRESULT information.
duvc_result_t duvc_is_device_connected(const duvc_device_t *device, int *connected)
Check if device is connected.
void duvc_close_camera(duvc_connection_t *conn)
Close camera connection.
duvc_result_t duvc_initialize(void)
Initialize library.
duvc_result_t duvc_decode_hresult(int32_t hr, char *buffer, size_t buffer_size, size_t *required)
Decode HRESULT to string.
void duvc_free_device_list(duvc_device_t **devices, size_t count)
Free device list.
duvc_result_t duvc_set_log_level(duvc_log_level_t level)
Set minimum log level.
duvc_vid_prop_t
Video processing properties.
@ DUVC_VID_PROP_CONTRAST
Image contrast level.
@ DUVC_VID_PROP_GAMMA
Gamma correction value.
@ DUVC_VID_PROP_GAIN
Sensor gain level.
@ DUVC_VID_PROP_BRIGHTNESS
Image brightness level.
@ DUVC_VID_PROP_WHITE_BALANCE
White balance adjustment.
@ DUVC_VID_PROP_SHARPNESS
Image sharpness level.
@ DUVC_VID_PROP_SATURATION
Color saturation level.
@ DUVC_VID_PROP_HUE
Color hue adjustment.
@ DUVC_VID_PROP_COLOR_ENABLE
Color vs.
@ DUVC_VID_PROP_BACKLIGHT_COMPENSATION
Backlight compensation level.
duvc_result_t duvc_supports_video_property(const duvc_device_capabilities_t *caps, duvc_vid_prop_t prop, int *supported)
Check if video property is supported.
duvc_result_t duvc_device_is_valid(const duvc_device_t *device, int *valid)
Check if device is valid.
duvc_result_t duvc_quick_get_camera_property(const duvc_device_t *device, duvc_cam_prop_t prop, duvc_prop_setting_t *setting)
Quick get camera property (creates temporary connection)
duvc_cam_prop_t
Camera control properties.
@ DUVC_CAM_PROP_PAN_RELATIVE
Relative pan movement.
@ DUVC_CAM_PROP_IRIS
Aperture/iris setting.
@ DUVC_CAM_PROP_ROLL_RELATIVE
Relative roll movement.
@ DUVC_CAM_PROP_IRIS_RELATIVE
Relative iris adjustment.
@ DUVC_CAM_PROP_PAN_TILT_RELATIVE
Relative pan/tilt movement.
@ DUVC_CAM_PROP_TILT
Vertical camera rotation.
@ DUVC_CAM_PROP_PRIVACY
Privacy mode on/off.
@ DUVC_CAM_PROP_PAN_TILT
Combined pan/tilt control.
@ DUVC_CAM_PROP_ZOOM_RELATIVE
Relative zoom movement.
@ DUVC_CAM_PROP_DIGITAL_ZOOM
Digital zoom level.
@ DUVC_CAM_PROP_PAN
Horizontal camera rotation.
@ DUVC_CAM_PROP_ZOOM
Optical zoom level.
@ DUVC_CAM_PROP_EXPOSURE
Exposure time.
@ DUVC_CAM_PROP_SCAN_MODE
Scan mode (progressive/interlaced)
@ DUVC_CAM_PROP_FOCUS_RELATIVE
Relative focus adjustment.
@ DUVC_CAM_PROP_ROLL
Camera roll rotation.
@ DUVC_CAM_PROP_TILT_RELATIVE
Relative tilt movement.
@ DUVC_CAM_PROP_DIGITAL_ZOOM_RELATIVE
Relative digital zoom.
@ DUVC_CAM_PROP_FOCUS
Focus position.
@ DUVC_CAM_PROP_BACKLIGHT_COMPENSATION
Backlight compensation.
@ DUVC_CAM_PROP_LAMP
Camera lamp/flash control.
@ DUVC_CAM_PROP_FOCUS_SIMPLE
Simple focus control.
@ DUVC_CAM_PROP_EXPOSURE_RELATIVE
Relative exposure adjustment.
duvc_result_t duvc_has_camera_permissions(int *has_permissions)
Check if current process has camera permissions.
duvc_result_t duvc_get_logitech_property(const duvc_device_t *device, duvc_logitech_prop_t prop, void *data, size_t data_size, size_t *bytes_returned)
Get Logitech vendor property.
duvc_result_t duvc_get_camera_property(duvc_connection_t *conn, duvc_cam_prop_t prop, duvc_prop_setting_t *setting)
Get camera property value.
duvc_result_t duvc_list_devices(duvc_device_t ***devices, size_t *count)
List all connected devices.
void duvc_unregister_device_change_callback(void)
Unregister device change callback.
const char * duvc_get_version_string(void)
Get library version string.
duvc_result_t duvc_get_device_name(const duvc_device_t *device, char *buffer, size_t buffer_size, size_t *required)
Get device name.
duvc_result_t duvc_log_error(const char *message)
Log error message.
duvc_result_t duvc_quick_get_camera_property_range(const duvc_device_t *device, duvc_cam_prop_t prop, duvc_prop_range_t *range)
Quick get camera property range.
duvc_result_t duvc_set_multiple_video_properties(duvc_connection_t *conn, const duvc_vid_prop_t *props, const duvc_prop_setting_t *settings, size_t count)
Set multiple video properties.
duvc_result_t duvc_get_device_capabilities_by_index(int device_index, duvc_device_capabilities_t **caps)
Get device capabilities by index.
duvc_result_t duvc_log_message(duvc_log_level_t level, const char *message)
Log message at specific level.
duvc_result_t duvc_get_device_id(const duvc_device_t *device, char *buffer, size_t buffer_size, size_t *required)
Get device ID.
const char * duvc_cam_mode_to_string(duvc_cam_mode_t mode)
Convert camera mode to string.
duvc_result_t duvc_log_info(const char *message)
Log info message.
duvc_result_t duvc_supports_logitech_properties(const duvc_device_t *device, int *supported)
Check Logitech vendor property support.
duvc_result_t duvc_open_camera(const duvc_device_t *device, duvc_connection_t **conn)
Open camera by device handle.
void(* duvc_log_callback)(duvc_log_level_t level, const char *message, void *user_data)
Log message callback.
#define DUVC_LOG_ERROR(msg)
struct duvc_connection_t duvc_connection_t
Opaque camera connection handle.
duvc_result_t duvc_capabilities_is_device_accessible(const duvc_device_capabilities_t *caps, int *accessible)
Check if device is accessible.
duvc_result_t duvc_set_log_callback(duvc_log_callback callback, void *user_data)
Set log callback.
duvc_result_t duvc_get_supported_camera_properties(const duvc_device_capabilities_t *caps, duvc_cam_prop_t *props, size_t max_count, size_t *actual_count)
Get list of supported camera properties.
duvc_cam_mode_t
Camera control modes.
@ DUVC_CAM_MODE_AUTO
Automatic control by camera.
@ DUVC_CAM_MODE_MANUAL
Manual control by application.
duvc_result_t duvc_find_device_by_path(const char *device_path_utf8, duvc_device_t **device)
Find device by unique Windows device path.
duvc_result_t duvc_cam_prop_to_wstring(duvc_cam_prop_t prop, wchar_t *buffer, size_t buffer_size, size_t *required)
Convert camera property to wide string.
#define DUVC_LOG_WARNING(msg)
int duvc_is_permission_error(duvc_result_t result)
Check if error is permission-related.
void duvc_free_device_capabilities(duvc_device_capabilities_t *caps)
Free device capabilities.
duvc_result_t duvc_prop_range_clamp(const duvc_prop_range_t *range, int32_t value, int32_t *clamped_value)
Clamp value to valid range.
duvc_result_t duvc_log_debug(const char *message)
Log debug message.
duvc_result_t duvc_decode_system_error(unsigned long error_code, char *buffer, size_t buffer_size, size_t *required)
Decode system error code to string.
duvc_result_t duvc_cam_mode_to_wstring(duvc_cam_mode_t mode, wchar_t *buffer, size_t buffer_size, size_t *required)
Convert camera mode to wide string.
duvc_result_t duvc_quick_get_video_property_range(const duvc_device_t *device, duvc_vid_prop_t prop, duvc_prop_range_t *range)
Quick get video property range.
duvc_logitech_prop_t
Logitech vendor-specific properties.
@ DUVC_LOGITECH_PROP_RIGHT_SOUND
RightSound audio processing.
@ DUVC_LOGITECH_PROP_TILT_PAN
Combined tilt/pan control.
@ DUVC_LOGITECH_PROP_LED_INDICATOR
LED indicator control.
@ DUVC_LOGITECH_PROP_FOCUS_ASSIST
Focus assist beam.
@ DUVC_LOGITECH_PROP_RIGHT_LIGHT
RightLight auto-exposure.
@ DUVC_LOGITECH_PROP_RAW_DATA_BITS
Raw data bit depth.
@ DUVC_LOGITECH_PROP_DIGITAL_ZOOM_ROI
Digital zoom region of interest.
@ DUVC_LOGITECH_PROP_PROCESSOR_USAGE
Processor usage optimization.
@ DUVC_LOGITECH_PROP_FACE_TRACKING
Face tracking enable/disable.
@ DUVC_LOGITECH_PROP_VIDEO_STANDARD
Video standard selection.
duvc_result_t duvc_query_vendor_property_support(const duvc_device_t *device, const char *property_set_guid, uint32_t property_id, int *supported)
Query vendor property support.
struct duvc_device_capabilities_t duvc_device_capabilities_t
Opaque device capabilities handle.
duvc_result_t duvc_set_video_property(duvc_connection_t *conn, duvc_vid_prop_t prop, const duvc_prop_setting_t *setting)
Set video property value.
const char DUVC_LOGITECH_PROPERTY_SET_GUID[39]
Logitech property set GUID string.
int duvc_camera_is_valid(const duvc_connection_t *conn)
Check if camera connection is valid.
duvc_result_t duvc_get_diagnostic_info(char *buffer, size_t buffer_size, size_t *required_size)
Get diagnostic information.
duvc_result_t duvc_get_vendor_property(const duvc_device_t *device, const char *property_set_guid, uint32_t property_id, void *data, size_t data_size, size_t *bytes_returned)
Get vendor-specific property.
duvc_result_t duvc_get_multiple_camera_properties(duvc_connection_t *conn, const duvc_cam_prop_t *props, duvc_prop_setting_t *settings, size_t count)
Get multiple camera properties.
int duvc_is_hresult_permission_error(int32_t hr)
Check if HRESULT indicates permission error.
duvc_result_t duvc_quick_set_camera_property(const duvc_device_t *device, duvc_cam_prop_t prop, const duvc_prop_setting_t *setting)
Quick set camera property (creates temporary connection)
uint32_t duvc_get_version(void)
Get library version.
int duvc_is_hresult_device_error(int32_t hr)
Check if HRESULT indicates device error.
void duvc_shutdown(void)
Shutdown library.
duvc_result_t duvc_prop_capability_supports_auto(const duvc_prop_range_t *range, int *supports_auto)
Check if property supports auto mode.
duvc_result_t duvc_quick_get_video_property(const duvc_device_t *device, duvc_vid_prop_t prop, duvc_prop_setting_t *setting)
Quick get video property.
duvc_result_t duvc_log_warning(const char *message)
Log warning message.
duvc_result_t duvc_get_video_capability(const duvc_device_capabilities_t *caps, duvc_vid_prop_t prop, duvc_prop_range_t *range, duvc_prop_setting_t *current)
Get video property capability.
duvc_result_t duvc_set_logitech_property(const duvc_device_t *device, duvc_logitech_prop_t prop, const void *data, size_t data_size)
Set Logitech vendor property.
duvc_result_t duvc_quick_set_video_property(const duvc_device_t *device, duvc_vid_prop_t prop, const duvc_prop_setting_t *setting)
Quick set video property.
struct duvc_device_t duvc_device_t
Opaque device handle.
void duvc_clear_last_error(void)
Clear last error information.
int duvc_check_abi_compatibility(uint32_t compiled_version)
Check ABI compatibility.
const char * duvc_vid_prop_to_string(duvc_vid_prop_t prop)
Convert video property to string.
#define DUVC_LOG_INFO(msg)
duvc_log_level_t
Log levels.
duvc_result_t duvc_prop_range_is_valid(const duvc_prop_range_t *range, int32_t value, int *valid)
Check if value is valid for range.
duvc_result_t duvc_log_critical(const char *message)
Log critical message.
duvc_result_t duvc_set_vendor_property(const duvc_device_t *device, const char *property_set_guid, uint32_t property_id, const void *data, size_t data_size)
Set vendor-specific property.
#define DUVC_LOG_CRITICAL(msg)
duvc_result_t duvc_get_last_error_details(char *buffer, size_t buffer_size, size_t *required_size)
Get last error details.
int duvc_is_device_error(duvc_result_t result)
Check if error is device-related.
duvc_result_t duvc_get_device_path(const duvc_device_t *device, char *buffer, size_t buffer_size, size_t *required)
Get device path.
const char * duvc_error_code_to_string(duvc_result_t code)
Convert error code to string.
void(* duvc_device_change_callback)(int added, const char *device_path, void *user_data)
Device hotplug callback.
duvc_result_t duvc_vid_prop_to_wstring(duvc_vid_prop_t prop, wchar_t *buffer, size_t buffer_size, size_t *required)
Convert video property to wide string.
duvc_result_t duvc_get_log_level(duvc_log_level_t *level)
Get current log level.
duvc_result_t duvc_open_camera_by_index(int device_index, duvc_connection_t **conn)
Open camera by device index.
#define DUVC_LOG_DEBUG(msg)
duvc_result_t duvc_get_video_property(duvc_connection_t *conn, duvc_vid_prop_t prop, duvc_prop_setting_t *setting)
Get video property value.
duvc_result_t duvc_register_device_change_callback(duvc_device_change_callback callback, void *user_data)
Register device change callback.
duvc_result_t duvc_get_camera_capability(const duvc_device_capabilities_t *caps, duvc_cam_prop_t prop, duvc_prop_range_t *range, duvc_prop_setting_t *current)
Get camera property capability.
int duvc_is_initialized(void)
Check if library is initialized.
const char * duvc_log_level_to_string(duvc_log_level_t level)
Convert log level to string.
Property range information.
int32_t max
Maximum supported value.
duvc_cam_mode_t default_mode
Default control mode.
int32_t step
Step size between valid values.
int32_t min
Minimum supported value.
int32_t default_val
Default value.
Property setting with value and mode.
duvc_cam_mode_t mode
Control mode (auto/manual)
int32_t value
Property value.
Vendor property container.
size_t data_size
Size of data in bytes.
uint32_t property_id
Property ID within set.
void * data
Property data payload.