duvc-ctl 2.0.0
USB Video Class Camera Control Library
Loading...
Searching...
No Matches
api.h
Go to the documentation of this file.
1#pragma once
9#ifdef __cplusplus
10extern "C" {
11#endif
12#include <stddef.h>
13#include <stdint.h>
14
15/* ========================================================================
16 * Version and ABI Constants
17 * ======================================================================== */
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)
23
24/* ========================================================================
25 * Core Enumerations
26 * ======================================================================== */
45
74
90
98
109
125
126/* ========================================================================
127 * Core Data Structures
128 * ======================================================================== */
132typedef struct {
133 int32_t value;
136
140typedef struct {
141 int32_t min;
142 int32_t max;
143 int32_t step;
144 int32_t default_val;
147
151typedef struct {
152 char property_set_guid[39];
154 uint32_t property_id;
155 void *data;
156 size_t data_size;
158
163
168
173
174/* ========================================================================
175 * Callback Types
176 * ======================================================================== */
183typedef void (*duvc_log_callback)(duvc_log_level_t level, const char *message,
184 void *user_data);
185
192typedef void (*duvc_device_change_callback)(int added, const char *device_path,
193 void *user_data);
194
195/* ========================================================================
196 * Constants
197 * ======================================================================== */
201extern const char DUVC_LOGITECH_PROPERTY_SET_GUID[39];
202
203/* ========================================================================
204 * Version and ABI Management
205 * ======================================================================== */
210uint32_t duvc_get_version(void);
211
217const char *duvc_get_version_string(void);
218
225int duvc_check_abi_compatibility(uint32_t compiled_version);
226
227/* ========================================================================
228 * Library Lifecycle
229 * ======================================================================== */
235
240void duvc_shutdown(void);
241
246int duvc_is_initialized(void);
247
248/* ========================================================================
249 * Logging System
250 * ======================================================================== */
258 void *user_data);
259
266
273
280duvc_result_t duvc_log_message(duvc_log_level_t level, const char *message);
281
287duvc_result_t duvc_log_debug(const char *message);
288
294duvc_result_t duvc_log_info(const char *message);
295
301duvc_result_t duvc_log_warning(const char *message);
302
308duvc_result_t duvc_log_error(const char *message);
309
315duvc_result_t duvc_log_critical(const char *message);
316
317/* ========================================================================
318 * Device Management
319 * ======================================================================== */
328duvc_result_t duvc_list_devices(duvc_device_t ***devices, size_t *count);
329
343duvc_result_t duvc_find_device_by_path(const char *device_path_utf8,
344 duvc_device_t **device);
345
351void duvc_free_device_list(duvc_device_t **devices, size_t count);
352
360 int *connected);
361
371duvc_result_t duvc_get_device_name(const duvc_device_t *device, char *buffer,
372 size_t buffer_size, size_t *required);
373
383duvc_result_t duvc_get_device_path(const duvc_device_t *device, char *buffer,
384 size_t buffer_size, size_t *required);
385
395duvc_result_t duvc_get_device_id(const duvc_device_t *device, char *buffer,
396 size_t buffer_size, size_t *required);
397
404duvc_result_t duvc_device_is_valid(const duvc_device_t *device, int *valid);
405
406/* ========================================================================
407 * Device Change Monitoring
408 * ======================================================================== */
417 void *user_data);
418
424
425/* ========================================================================
426 * Camera Connections
427 * ======================================================================== */
435 duvc_connection_t **conn);
436
444 duvc_connection_t **conn);
445
451
458
459/* ========================================================================
460 * Property Access - Single Properties
461 * ======================================================================== */
470 duvc_cam_prop_t prop,
471 duvc_prop_setting_t *setting);
472
481 duvc_cam_prop_t prop,
482 const duvc_prop_setting_t *setting);
483
492 duvc_cam_prop_t prop,
493 duvc_prop_range_t *range);
494
503 duvc_vid_prop_t prop,
504 duvc_prop_setting_t *setting);
505
514 duvc_vid_prop_t prop,
515 const duvc_prop_setting_t *setting);
516
525 duvc_vid_prop_t prop,
526 duvc_prop_range_t *range);
527
528/* ========================================================================
529 * Property Access - Multiple Properties
530 * ======================================================================== */
540 const duvc_cam_prop_t *props,
541 duvc_prop_setting_t *settings,
542 size_t count);
543
553 duvc_connection_t *conn, const duvc_cam_prop_t *props,
554 const duvc_prop_setting_t *settings, size_t count);
555
565 const duvc_vid_prop_t *props,
566 duvc_prop_setting_t *settings,
567 size_t count);
568
578 duvc_connection_t *conn, const duvc_vid_prop_t *props,
579 const duvc_prop_setting_t *settings, size_t count);
580
581/* ========================================================================
582 * Quick API - Direct Device Access
583 * ======================================================================== */
592 duvc_cam_prop_t prop,
593 duvc_prop_setting_t *setting);
594
604 duvc_cam_prop_t prop,
605 const duvc_prop_setting_t *setting);
606
615 duvc_cam_prop_t prop,
616 duvc_prop_range_t *range);
617
626 duvc_vid_prop_t prop,
627 duvc_prop_setting_t *setting);
628
637 duvc_vid_prop_t prop,
638 const duvc_prop_setting_t *setting);
639
648 duvc_vid_prop_t prop,
649 duvc_prop_range_t *range);
650
651/* ========================================================================
652 * Device Capability Snapshots
653 * ======================================================================== */
662
672
678
686
687/* ========================================================================
688 * Capability Queries
689 * ======================================================================== */
699 duvc_cam_prop_t prop,
700 duvc_prop_range_t *range,
701 duvc_prop_setting_t *current);
702
712 duvc_vid_prop_t prop,
713 duvc_prop_range_t *range,
714 duvc_prop_setting_t *current);
715
725 duvc_cam_prop_t prop, int *supported);
726
736 duvc_vid_prop_t prop, int *supported);
737
749 duvc_cam_prop_t *props, size_t max_count,
750 size_t *actual_count);
751
763 duvc_vid_prop_t *props, size_t max_count,
764 size_t *actual_count);
765
774 int *accessible);
775
776/* ========================================================================
777 * Property Range Utilities
778 * ======================================================================== */
787 int32_t value, int *valid);
788
797 int32_t value, int32_t *clamped_value);
798
806 int *supports_auto);
807
808/* ========================================================================
809 * Generic Vendor Properties
810 * ======================================================================== */
823 const char *property_set_guid,
824 uint32_t property_id, void *data,
825 size_t data_size,
826 size_t *bytes_returned);
827
838 const char *property_set_guid,
839 uint32_t property_id, const void *data,
840 size_t data_size);
841
851 const char *property_set_guid,
852 uint32_t property_id,
853 int *supported);
854
855/* ========================================================================
856 * Logitech Vendor Extensions
857 * ======================================================================== */
869 duvc_logitech_prop_t prop, void *data,
870 size_t data_size,
871 size_t *bytes_returned);
872
883 const void *data, size_t data_size);
884
892 int *supported);
893
894/* ========================================================================
895 * String Conversions
896 * ======================================================================== */
903
910
917
924
931
932/* ========================================================================
933 * Wide String Conversions (Windows Support)
934 * ======================================================================== */
945 size_t buffer_size, size_t *required);
946
957 size_t buffer_size, size_t *required);
958
969 size_t buffer_size, size_t *required);
970
971/* ========================================================================
972 * Error Handling and Diagnostics
973 * ======================================================================== */
982duvc_result_t duvc_get_last_error_details(char *buffer, size_t buffer_size,
983 size_t *required_size);
984
993duvc_result_t duvc_get_diagnostic_info(char *buffer, size_t buffer_size,
994 size_t *required_size);
995
1002
1009
1014void duvc_clear_last_error(void);
1015
1016/* ========================================================================
1017 * Windows-Specific Error Diagnostics
1018 * ======================================================================== */
1019#ifdef _WIN32
1029duvc_result_t duvc_decode_system_error(unsigned long error_code, char *buffer,
1030 size_t buffer_size, size_t *required);
1031
1041duvc_result_t duvc_decode_hresult(int32_t hr, char *buffer, size_t buffer_size,
1042 size_t *required);
1043
1054 size_t buffer_size, size_t *required);
1055
1062
1069#endif
1070
1071/* ========================================================================
1072 * Convenience Macros for Logging
1073 * ======================================================================== */
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)
1079
1080/* ========================================================================
1081 * Additional Platform Utilities
1082 * ======================================================================== */
1089
1098duvc_result_t duvc_get_platform_info(char *buffer, size_t buffer_size,
1099 size_t *required);
1100
1101#ifdef __cplusplus
1102}
1103#endif
duvc_result_t
Result codes for duvc operations.
Definition api.h:30
@ DUVC_ERROR_TIMEOUT
Operation timed out.
Definition api.h:42
@ DUVC_ERROR_CONNECTION_FAILED
Failed to establish device connection.
Definition api.h:41
@ DUVC_ERROR_INVALID_ARGUMENT
Invalid function argument provided.
Definition api.h:33
@ DUVC_ERROR_INVALID_VALUE
Property value out of valid range.
Definition api.h:37
@ DUVC_ERROR_NOT_IMPLEMENTED
Feature not implemented on this platform.
Definition api.h:32
@ DUVC_ERROR_DEVICE_BUSY
Device is busy or in use by another process.
Definition api.h:35
@ DUVC_ERROR_PERMISSION_DENIED
Insufficient permissions to access device.
Definition api.h:38
@ DUVC_ERROR_DEVICE_NOT_FOUND
Device not found or disconnected.
Definition api.h:34
@ DUVC_ERROR_BUFFER_TOO_SMALL
Provided buffer is too small for data.
Definition api.h:43
@ DUVC_ERROR_SYSTEM_ERROR
System/platform error occurred.
Definition api.h:40
@ DUVC_ERROR_PROPERTY_NOT_SUPPORTED
Property not supported by device.
Definition api.h:36
@ DUVC_SUCCESS
Operation completed successfully.
Definition api.h:31
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.
Definition api.cpp:1138
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.
Definition api.cpp:1683
const char * duvc_cam_prop_to_string(duvc_cam_prop_t prop)
Convert camera property to string.
Definition api.cpp:372
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.
Definition api.cpp:907
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.
Definition api.cpp:935
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.
Definition api.cpp:1027
duvc_result_t duvc_get_device_capabilities(const duvc_device_t *device, duvc_device_capabilities_t **caps)
Get device capabilities snapshot.
Definition api.cpp:1412
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.
Definition api.cpp:1602
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.
Definition api.cpp:1101
duvc_result_t duvc_refresh_device_capabilities(duvc_device_capabilities_t *caps)
Refresh capabilities snapshot.
Definition api.cpp:1500
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.
Definition api.cpp:600
void duvc_close_camera(duvc_connection_t *conn)
Close camera connection.
Definition api.cpp:838
duvc_result_t duvc_initialize(void)
Initialize library.
Definition api.cpp:261
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.
Definition api.cpp:590
duvc_result_t duvc_set_log_level(duvc_log_level_t level)
Set minimum log level.
Definition api.cpp:432
duvc_vid_prop_t
Video processing properties.
Definition api.h:78
@ DUVC_VID_PROP_CONTRAST
Image contrast level.
Definition api.h:80
@ DUVC_VID_PROP_GAMMA
Gamma correction value.
Definition api.h:84
@ DUVC_VID_PROP_GAIN
Sensor gain level.
Definition api.h:88
@ DUVC_VID_PROP_BRIGHTNESS
Image brightness level.
Definition api.h:79
@ DUVC_VID_PROP_WHITE_BALANCE
White balance adjustment.
Definition api.h:86
@ DUVC_VID_PROP_SHARPNESS
Image sharpness level.
Definition api.h:83
@ DUVC_VID_PROP_SATURATION
Color saturation level.
Definition api.h:82
@ DUVC_VID_PROP_HUE
Color hue adjustment.
Definition api.h:81
@ DUVC_VID_PROP_COLOR_ENABLE
Color vs.
Definition api.h:85
@ DUVC_VID_PROP_BACKLIGHT_COMPENSATION
Backlight compensation level.
Definition api.h:87
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.
Definition api.cpp:1625
duvc_result_t duvc_device_is_valid(const duvc_device_t *device, int *valid)
Check if device is valid.
Definition api.cpp:690
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)
Definition api.cpp:1217
duvc_cam_prop_t
Camera control properties.
Definition api.h:49
@ DUVC_CAM_PROP_PAN_RELATIVE
Relative pan movement.
Definition api.h:59
@ DUVC_CAM_PROP_IRIS
Aperture/iris setting.
Definition api.h:55
@ DUVC_CAM_PROP_ROLL_RELATIVE
Relative roll movement.
Definition api.h:61
@ DUVC_CAM_PROP_IRIS_RELATIVE
Relative iris adjustment.
Definition api.h:64
@ DUVC_CAM_PROP_PAN_TILT_RELATIVE
Relative pan/tilt movement.
Definition api.h:67
@ DUVC_CAM_PROP_TILT
Vertical camera rotation.
Definition api.h:51
@ DUVC_CAM_PROP_PRIVACY
Privacy mode on/off.
Definition api.h:58
@ DUVC_CAM_PROP_PAN_TILT
Combined pan/tilt control.
Definition api.h:66
@ DUVC_CAM_PROP_ZOOM_RELATIVE
Relative zoom movement.
Definition api.h:62
@ DUVC_CAM_PROP_DIGITAL_ZOOM
Digital zoom level.
Definition api.h:69
@ DUVC_CAM_PROP_PAN
Horizontal camera rotation.
Definition api.h:50
@ DUVC_CAM_PROP_ZOOM
Optical zoom level.
Definition api.h:53
@ DUVC_CAM_PROP_EXPOSURE
Exposure time.
Definition api.h:54
@ DUVC_CAM_PROP_SCAN_MODE
Scan mode (progressive/interlaced)
Definition api.h:57
@ DUVC_CAM_PROP_FOCUS_RELATIVE
Relative focus adjustment.
Definition api.h:65
@ DUVC_CAM_PROP_ROLL
Camera roll rotation.
Definition api.h:52
@ DUVC_CAM_PROP_TILT_RELATIVE
Relative tilt movement.
Definition api.h:60
@ DUVC_CAM_PROP_DIGITAL_ZOOM_RELATIVE
Relative digital zoom.
Definition api.h:70
@ DUVC_CAM_PROP_FOCUS
Focus position.
Definition api.h:56
@ DUVC_CAM_PROP_BACKLIGHT_COMPENSATION
Backlight compensation.
Definition api.h:71
@ DUVC_CAM_PROP_LAMP
Camera lamp/flash control.
Definition api.h:72
@ DUVC_CAM_PROP_FOCUS_SIMPLE
Simple focus control.
Definition api.h:68
@ DUVC_CAM_PROP_EXPOSURE_RELATIVE
Relative exposure adjustment.
Definition api.h:63
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.
Definition api.cpp:875
duvc_result_t duvc_list_devices(duvc_device_t ***devices, size_t *count)
List all connected devices.
Definition api.cpp:510
void duvc_unregister_device_change_callback(void)
Unregister device change callback.
Definition api.cpp:752
const char * duvc_get_version_string(void)
Get library version string.
Definition api.cpp:236
duvc_result_t duvc_get_device_name(const duvc_device_t *device, char *buffer, size_t buffer_size, size_t *required)
Get device name.
Definition api.cpp:626
duvc_result_t duvc_log_error(const char *message)
Log error message.
Definition api.cpp:498
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.
Definition api.cpp:1280
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.
Definition api.cpp:1176
duvc_result_t duvc_get_device_capabilities_by_index(int device_index, duvc_device_capabilities_t **caps)
Get device capabilities by index.
Definition api.cpp:1446
duvc_result_t duvc_log_message(duvc_log_level_t level, const char *message)
Log message at specific level.
Definition api.cpp:467
duvc_result_t duvc_get_device_id(const duvc_device_t *device, char *buffer, size_t buffer_size, size_t *required)
Get device ID.
Definition api.cpp:668
const char * duvc_cam_mode_to_string(duvc_cam_mode_t mode)
Convert camera mode to string.
Definition api.cpp:381
duvc_result_t duvc_log_info(const char *message)
Log info message.
Definition api.cpp:490
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.
Definition api.cpp:806
void(* duvc_log_callback)(duvc_log_level_t level, const char *message, void *user_data)
Log message callback.
Definition api.h:183
#define DUVC_LOG_ERROR(msg)
Definition api.h:1077
struct duvc_connection_t duvc_connection_t
Opaque camera connection handle.
Definition api.h:167
duvc_result_t duvc_capabilities_is_device_accessible(const duvc_device_capabilities_t *caps, int *accessible)
Check if device is accessible.
Definition api.cpp:1718
duvc_result_t duvc_set_log_callback(duvc_log_callback callback, void *user_data)
Set log callback.
Definition api.cpp:406
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.
Definition api.cpp:1648
duvc_cam_mode_t
Camera control modes.
Definition api.h:94
@ DUVC_CAM_MODE_AUTO
Automatic control by camera.
Definition api.h:95
@ DUVC_CAM_MODE_MANUAL
Manual control by application.
Definition api.h:96
duvc_result_t duvc_find_device_by_path(const char *device_path_utf8, duvc_device_t **device)
Find device by unique Windows device path.
Definition api.cpp:556
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)
Definition api.h:1076
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.
Definition api.cpp:1477
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.
Definition api.cpp:1774
duvc_result_t duvc_log_debug(const char *message)
Log debug message.
Definition api.cpp:486
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.
Definition api.cpp:1375
duvc_logitech_prop_t
Logitech vendor-specific properties.
Definition api.h:113
@ DUVC_LOGITECH_PROP_RIGHT_SOUND
RightSound audio processing.
Definition api.h:115
@ DUVC_LOGITECH_PROP_TILT_PAN
Combined tilt/pan control.
Definition api.h:123
@ DUVC_LOGITECH_PROP_LED_INDICATOR
LED indicator control.
Definition api.h:117
@ DUVC_LOGITECH_PROP_FOCUS_ASSIST
Focus assist beam.
Definition api.h:120
@ DUVC_LOGITECH_PROP_RIGHT_LIGHT
RightLight auto-exposure.
Definition api.h:114
@ DUVC_LOGITECH_PROP_RAW_DATA_BITS
Raw data bit depth.
Definition api.h:119
@ DUVC_LOGITECH_PROP_DIGITAL_ZOOM_ROI
Digital zoom region of interest.
Definition api.h:122
@ DUVC_LOGITECH_PROP_PROCESSOR_USAGE
Processor usage optimization.
Definition api.h:118
@ DUVC_LOGITECH_PROP_FACE_TRACKING
Face tracking enable/disable.
Definition api.h:116
@ DUVC_LOGITECH_PROP_VIDEO_STANDARD
Video standard selection.
Definition api.h:121
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.
Definition api.h:172
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.
Definition api.cpp:999
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.
Definition api.cpp:854
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.
Definition api.cpp:1063
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)
Definition api.cpp:1251
uint32_t duvc_get_version(void)
Get library version.
Definition api.cpp:234
int duvc_is_hresult_device_error(int32_t hr)
Check if HRESULT indicates device error.
void duvc_shutdown(void)
Shutdown library.
Definition api.cpp:293
duvc_result_t duvc_prop_capability_supports_auto(const duvc_prop_range_t *range, int *supports_auto)
Check if property supports auto mode.
Definition api.cpp:1818
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.
Definition api.cpp:1313
duvc_result_t duvc_log_warning(const char *message)
Log warning message.
Definition api.cpp:494
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.
Definition api.cpp:1563
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.
Definition api.cpp:1347
struct duvc_device_t duvc_device_t
Opaque device handle.
Definition api.h:162
void duvc_clear_last_error(void)
Clear last error information.
Definition api.cpp:1845
int duvc_check_abi_compatibility(uint32_t compiled_version)
Check ABI compatibility.
Definition api.cpp:238
const char * duvc_vid_prop_to_string(duvc_vid_prop_t prop)
Convert video property to string.
Definition api.cpp:377
#define DUVC_LOG_INFO(msg)
Definition api.h:1075
duvc_log_level_t
Log levels.
Definition api.h:102
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.
Definition api.cpp:1743
duvc_result_t duvc_log_critical(const char *message)
Log critical message.
Definition api.cpp:502
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)
Definition api.h:1078
duvc_result_t duvc_get_last_error_details(char *buffer, size_t buffer_size, size_t *required_size)
Get last error details.
Definition api.cpp:1839
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.
Definition api.cpp:647
const char * duvc_error_code_to_string(duvc_result_t code)
Convert error code to string.
Definition api.cpp:341
void(* duvc_device_change_callback)(int added, const char *device_path, void *user_data)
Device hotplug callback.
Definition api.h:192
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.
Definition api.cpp:449
duvc_result_t duvc_open_camera_by_index(int device_index, duvc_connection_t **conn)
Open camera by device index.
Definition api.cpp:775
#define DUVC_LOG_DEBUG(msg)
Definition api.h:1074
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.
Definition api.cpp:967
duvc_result_t duvc_register_device_change_callback(duvc_device_change_callback callback, void *user_data)
Register device change callback.
Definition api.cpp:715
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.
Definition api.cpp:1525
int duvc_is_initialized(void)
Check if library is initialized.
Definition api.cpp:335
const char * duvc_log_level_to_string(duvc_log_level_t level)
Convert log level to string.
Definition api.cpp:385
Property range information.
Definition api.h:140
int32_t max
Maximum supported value.
Definition api.h:142
duvc_cam_mode_t default_mode
Default control mode.
Definition api.h:145
int32_t step
Step size between valid values.
Definition api.h:143
int32_t min
Minimum supported value.
Definition api.h:141
int32_t default_val
Default value.
Definition api.h:144
Property setting with value and mode.
Definition api.h:132
duvc_cam_mode_t mode
Control mode (auto/manual)
Definition api.h:134
int32_t value
Property value.
Definition api.h:133
Vendor property container.
Definition api.h:151
size_t data_size
Size of data in bytes.
Definition api.h:156
uint32_t property_id
Property ID within set.
Definition api.h:154
void * data
Property data payload.
Definition api.h:155