| Webcam Library Reference Documentation | ![]() |
Webcam library interface definition. More...
Go to the source code of this file.
Data Structures | |
| struct | _CUSBInfo |
| USB specific information about a device. More... | |
| struct | _CDevice |
| Webcam device information. More... | |
| struct | _CControlRawValue |
| A raw control value. More... | |
| struct | _CControlValue |
| A value of a control. More... | |
| struct | _CControlChoice |
| A list of choices for a choice type of control. More... | |
| struct | _CControl |
| A description of a camera control. More... | |
| struct | _CPixelFormat |
| A description of a pixel format. More... | |
| struct | _CFrameSize |
| A description of one or multiple frame sizes. More... | |
| struct | _CFrameInterval |
| A description of one or multiple frame intervals. More... | |
| struct | _CEvent |
| An event descriptor. More... | |
| struct | _CDynctrlMessage |
| Message returned by the dynamic control configuration parser. More... | |
| struct | _CVersionNumber |
| Version number in the "major.minor" format. More... | |
| struct | _CDynctrlInfoListStats |
| Statistics on the number of list elements that were processed. More... | |
| struct | _CDynctrlInfo |
| Input flags and output data used/returned by the control configuration parser. More... | |
Typedefs | |
| typedef unsigned int | CHandle |
| Device handle for libwebcam. | |
| typedef unsigned int | CResult |
| Function return type for libwebcam. | |
| typedef enum _CControlId | CControlId |
| Control identifiers. More... | |
| typedef enum _CControlFlags | CControlFlags |
| Flags specifying control properties and capabilities. | |
| typedef enum _CControlType | CControlType |
| Types for controls. More... | |
| typedef enum _CEventId | CEventId |
| Event identifiers. | |
| typedef enum _CEventFlags | CEventFlags |
| Flags specifying properties of events. | |
| typedef enum _CFrameSizeTypes | CFrameSizeTypes |
| Types of frame size specifications. | |
| typedef enum _CFrameIntervalTypes | CFrameIntervalTypes |
| Types of frame interval specification. | |
| typedef enum _CDynctrlFlags | CDynctrlFlags |
| Flags specifying control properties and capabilities. | |
|
typedef enum _CDynctrlMessageSeverity | CDynctrlMessageSeverity |
| Severity levels for messages returned by the dynamic control functions. | |
| typedef struct _CUSBInfo | CUSBInfo |
| USB specific information about a device. | |
| typedef struct _CDevice | CDevice |
| Webcam device information. | |
| typedef struct _CControlRawValue | CControlRawValue |
| A raw control value. | |
| typedef struct _CControlValue | CControlValue |
| A value of a control. | |
| typedef struct _CControlChoice | CControlChoice |
| A list of choices for a choice type of control. More... | |
| typedef struct _CControl | CControl |
| A description of a camera control. | |
| typedef struct _CPixelFormat | CPixelFormat |
| A description of a pixel format. | |
| typedef struct _CFrameSize | CFrameSize |
| A description of one or multiple frame sizes. | |
| typedef struct _CFrameInterval | CFrameInterval |
| A description of one or multiple frame intervals. More... | |
| typedef struct _CEvent | CEvent |
| An event descriptor. | |
| typedef struct _CDynctrlMessage | CDynctrlMessage |
| Message returned by the dynamic control configuration parser. | |
| typedef struct _CVersionNumber | CVersionNumber |
| Version number in the "major.minor" format. | |
|
typedef struct _CDynctrlInfoListStats | CDynctrlInfoListStats |
| Statistics on the number of list elements that were processed. | |
| typedef struct _CDynctrlInfo | CDynctrlInfo |
| Input flags and output data used/returned by the control configuration parser. | |
| typedef void(* | CEventHandler )(CHandle hDevice, CEventId event_id, void *context) |
| Prototype for event handlers. | |
Functions | |
| CResult | c_init (void) |
| Initializes libwebcam. More... | |
| void | c_cleanup (void) |
| Clean up resources. More... | |
| CHandle | c_open_device (const char *device_name) |
| Opens a camera device. More... | |
| void | c_close_device (CHandle hDevice) |
| Closes a device handle. More... | |
| CResult | c_enum_devices (CDevice *devices, unsigned int *size, unsigned int *count) |
| Enumerates all devices available in the system. More... | |
| CResult | c_get_device_info (CHandle hDevice, const char *device_name, CDevice *info, unsigned int *size) |
| Returns information about a given camera device. More... | |
| CResult | c_enum_pixel_formats (CHandle hDevice, CPixelFormat *formats, unsigned int *size, unsigned int *count) |
| Enumerates all pixel formats supported by the given camera. More... | |
| CResult | c_enum_frame_sizes (CHandle hDevice, const CPixelFormat *pixelformat, CFrameSize *sizes, unsigned int *size, unsigned int *count) |
| Enumerates all frame sizes supported for the given pixel format. More... | |
| CResult | c_enum_frame_intervals (CHandle hDevice, const CPixelFormat *pixelformat, const CFrameSize *framesize, CFrameInterval *intervals, unsigned int *size, unsigned int *count) |
| Enumerates all frame intervals supported for the given pixel format and frame size. More... | |
| CResult | c_enum_controls (CHandle hDevice, CControl *controls, unsigned int *size, unsigned int *count) |
| Enumerates all controls supported by the given device. More... | |
| CResult | c_set_control (CHandle hDevice, CControlId control_id, const CControlValue *value) |
| Sets the value of a device control. More... | |
| CResult | c_get_control (CHandle hDevice, CControlId control_id, CControlValue *value) |
| Returns the value of a device control. More... | |
| CResult | c_enum_events (CHandle hDevice, CEvent *events, unsigned int *size, unsigned int *count) |
| Enumerates the events supported by the given device. More... | |
| CResult | c_subscribe_event (CHandle hDevice, CEventId event_id, CEventHandler handler, void *context) |
| Subscribes the caller to receive the given event. More... | |
| CResult | c_unsubscribe_event (CHandle hDevice, CEventId event_id) |
| Unsubscribes the caller from the given event. More... | |
| CResult | c_add_control_mappings_from_file (const char *file_name, CDynctrlInfo *info) |
| Parses a dynamic controls configuration file and adds the contained controls and control mappings to the UVC driver. More... | |
| char * | c_get_error_text (CResult error) |
| Returns the error message associated with a given error code. More... | |
| char * | c_get_handle_error_text (CHandle hDevice, CResult error) |
| Returns the error message associated with a given error code and device handle. More... | |
Webcam library interface definition.
| typedef struct _CControlChoice CControlChoice |
A list of choices for a choice type of control.
| typedef enum _CControlId CControlId |
Control identifiers.
This is an exhaustive list of all controls supported by libwebcam. As new controls appear, these should be added to this list.
| typedef enum _CControlType CControlType |
Types for controls.
These types give both hints to graphical user interfaces on how to display the control to the user as well as to the implementation in terms of data length required to store control values.
| typedef struct _CFrameInterval CFrameInterval |
A description of one or multiple frame intervals.
Each frame interval is described as a fraction of a second.
| enum _CControlFlags |
Flags specifying control properties and capabilities.
| enum _CControlId |
Control identifiers.
This is an exhaustive list of all controls supported by libwebcam. As new controls appear, these should be added to this list.
| enum _CControlType |
Types for controls.
These types give both hints to graphical user interfaces on how to display the control to the user as well as to the implementation in terms of data length required to store control values.
| enum _CDynctrlFlags |
| enum _CFrameIntervalTypes |
| enum _CFrameSizeTypes |
| enum _CResults |
Return values for libwebcam functions.
| CResult c_add_control_mappings_from_file | ( | const char * | file_name, |
| CDynctrlInfo * | info | ||
| ) |
Parses a dynamic controls configuration file and adds the contained controls and control mappings to the UVC driver.
Notes:
| file_name | name of the device to open. |
| info | structure to pass operation flags and retrieve status information. Can be NULL. |
References add_control_mappings(), add_error(), add_info(), C_BUFFER_TOO_SMALL, C_CANNOT_WRITE, c_close_device(), c_enum_devices(), c_get_handle_error_text(), C_INIT_ERROR, C_INVALID_ARG, C_INVALID_DEVICE, C_NO_MEMORY, C_NOT_IMPLEMENTED, c_open_device(), C_SUCCESS, _ParseContext::cd, _ParseContext::constants, _ParseContext::controls, _CDevice::driver, _ParseContext::handle, _UVCXUControl::id, _ParseContext::info, initialized, _Constant::name, _Constant::next, _UVCXUControl::next, parse_dynctrl_file(), and _CDevice::shortName.
| void c_cleanup | ( | void | ) |
Clean up resources.
This method should be called when the library is no longer used.
References cleanup_device_list(), initialized, invalidate_device_list(), lock_mutex(), _DeviceList::mutex, _HandleList::mutex, and unlock_mutex().
Referenced by __attribute__().
| void c_close_device | ( | CHandle | hDevice | ) |
Closes a device handle.
| hDevice | a handle obtained from c_open_device() |
References close_handle(), and initialized.
Referenced by c_add_control_mappings_from_file().
| CResult c_enum_controls | ( | CHandle | hDevice, |
| CControl * | controls, | ||
| unsigned int * | size, | ||
| unsigned int * | count | ||
| ) |
Enumerates all controls supported by the given device.
If the buffer is not large enough, C_BUFFER_TOO_SMALL is returned and the size parameter is modified to contain the required buffer size.
| hDevice | a device handle obtained from c_open_device() |
| controls | a pointer to a buffer that retrieves the list of supported controls. |
| size | a pointer to an integer that contains or receives the size of the controls buffer. |
| count | a pointer to an integer that receives the number of controls supported. Can be NULL. If this argument is not NULL, the control count is returned independent of whether or not the buffer is large enough. |
References C_BUFFER_TOO_SMALL, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_HANDLE, C_NOT_EXIST, C_SUCCESS, C_SYNC_ERROR, CC_TYPE_CHOICE, _Control::control, _Device::controls, _ControlList::count, _ControlList::first, get_control_dynamics_length(), GET_HANDLE, HANDLE_OPEN, HANDLE_VALID, initialized, lock_mutex(), _ControlList::mutex, _CControl::name, _Control::next, _CControl::type, and unlock_mutex().
Enumerates all devices available in the system.
Users must call c_init() prior to using this function.
If the buffer is not large enough, C_BUFFER_TOO_SMALL is returned and the size parameter is modified to contain the required buffer size.
| devices | a pointer to a buffer that retrieves the list of devices |
| size | a pointer to an integer that contains or receives the size of the devices buffer |
| count | a pointer to an integer that receives the number of devices available. Can be NULL. If this argument is not NULL, the device count is returned independent of whether or not the buffer is large enough. |
References C_BUFFER_TOO_SMALL, C_INIT_ERROR, C_INVALID_ARG, C_SUCCESS, C_SYNC_ERROR, copy_string_to_buffer(), _DeviceList::count, _Device::device, _CDevice::driver, _DeviceList::first, get_devices_dynamics_length(), initialized, _CDevice::location, lock_mutex(), _DeviceList::mutex, _CDevice::name, _Device::next, refresh_device_list(), _CDevice::shortName, and unlock_mutex().
Referenced by c_add_control_mappings_from_file().
| CResult c_enum_events | ( | CHandle | hDevice, |
| CEvent * | events, | ||
| unsigned int * | size, | ||
| unsigned int * | count | ||
| ) |
Enumerates the events supported by the given device.
[unimplemented]
References C_INIT_ERROR, C_NOT_IMPLEMENTED, and initialized.
| CResult c_enum_frame_intervals | ( | CHandle | hDevice, |
| const CPixelFormat * | pixelformat, | ||
| const CFrameSize * | framesize, | ||
| CFrameInterval * | intervals, | ||
| unsigned int * | size, | ||
| unsigned int * | count | ||
| ) |
Enumerates all frame intervals supported for the given pixel format and frame size.
If the buffer is not large enough, C_BUFFER_TOO_SMALL is returned and the size parameter is modified to contain the required buffer size.
A list of pixel formats can be obtained from c_enum_pixel_formats(). In a similar manner the list of supported frame sizes for each pixel format can be obtained from c_enum_frame_sizes().
| hDevice | a handle obtained from c_open_device() |
| pixelformat | the pixel format for which the frame intervals should be enumerated |
| framesize | the frame size for which the frame intervals should be enumerated. Note that this frame size's type must be discrete. |
| intervals | a pointer to a buffer that retrieves the list of frame intervals |
| size | a pointer to an integer that contains or receives the size of the intervals buffer |
| count | a pointer to an integer that receives the number of frame intervals supported for the given pixel format and frame size. Can be NULL. If this argument is not NULL, the frame size count is returned independent of whether or not the buffer is large enough. |
References C_BUFFER_TOO_SMALL, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_DEVICE, C_INVALID_HANDLE, C_NO_MEMORY, C_NOT_EXIST, C_SUCCESS, C_V4L2_ERROR, CF_INTERVAL_CONTINUOUS, CF_INTERVAL_DISCRETE, CF_INTERVAL_STEPWISE, CF_SIZE_DISCRETE, _CPixelFormat::fourcc, GET_HANDLE, HANDLE_OPEN, HANDLE_VALID, _CFrameSize::height, initialized, open_v4l2_device(), set_last_error(), _CFrameSize::type, _Device::v4l2_name, and _CFrameSize::width.
| CResult c_enum_frame_sizes | ( | CHandle | hDevice, |
| const CPixelFormat * | pixelformat, | ||
| CFrameSize * | sizes, | ||
| unsigned int * | size, | ||
| unsigned int * | count | ||
| ) |
Enumerates all frame sizes supported for the given pixel format.
If the buffer is not large enough, C_BUFFER_TOO_SMALL is returned and the size parameter is modified to contain the required buffer size.
A list of pixel formats can be obtained from c_enum_pixel_formats().
| hDevice | a handle obtained from c_open_device() |
| pixelformat | the pixel format for which the frame sizes should be enumerated |
| sizes | a pointer to a buffer that retrieves the list of frame sizes |
| size | a pointer to an integer that contains or receives the size of the sizes buffer |
| count | a pointer to an integer that receives the number of frame sizes supported for the given pixel format. Can be NULL. If this argument is not NULL, the frame size count is returned independent of whether or not the buffer is large enough. |
References C_BUFFER_TOO_SMALL, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_DEVICE, C_INVALID_HANDLE, C_NO_MEMORY, C_NOT_EXIST, C_SUCCESS, C_V4L2_ERROR, CF_SIZE_CONTINUOUS, CF_SIZE_DISCRETE, CF_SIZE_STEPWISE, _CPixelFormat::fourcc, GET_HANDLE, HANDLE_OPEN, HANDLE_VALID, initialized, open_v4l2_device(), set_last_error(), and _Device::v4l2_name.
| CResult c_enum_pixel_formats | ( | CHandle | hDevice, |
| CPixelFormat * | formats, | ||
| unsigned int * | size, | ||
| unsigned int * | count | ||
| ) |
Enumerates all pixel formats supported by the given camera.
If the buffer is not large enough, C_BUFFER_TOO_SMALL is returned and the size parameter is modified to contain the required buffer size.
| hDevice | a handle obtained from c_open_device() |
| formats | a pointer to a buffer that retrieves the list of pixel formats |
| size | a pointer to an integer that contains or receives the size of the formats buffer |
| count | a pointer to an integer that receives the number of pixel formats supported. Can be NULL. If this argument is not NULL, the device count is returned independent of whether or not the buffer is large enough. |
References C_BUFFER_TOO_SMALL, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_DEVICE, C_INVALID_HANDLE, C_NO_MEMORY, C_NOT_EXIST, C_SUCCESS, C_V4L2_ERROR, copy_string_to_buffer(), GET_HANDLE, get_mimetype_from_fourcc(), HANDLE_OPEN, HANDLE_VALID, initialized, _CPixelFormat::mimeType, _CPixelFormat::name, open_v4l2_device(), set_last_error(), and _Device::v4l2_name.
| CResult c_get_control | ( | CHandle | hDevice, |
| CControlId | control_id, | ||
| CControlValue * | value | ||
| ) |
Returns the value of a device control.
| hDevice | a device handle obtained from c_open_device() |
| control_id | the ID of the control whose value shall be read |
| value | a pointer to receive the value read |
References C_CANNOT_READ, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_HANDLE, C_NOT_EXIST, C_NOT_FOUND, C_SUCCESS, CC_CAN_READ, _Control::control, find_control_by_id(), _CControl::flags, GET_HANDLE, HANDLE_OPEN, HANDLE_VALID, initialized, read_v4l2_control(), and _Control::v4l2_control.
| CResult c_get_device_info | ( | CHandle | hDevice, |
| const char * | device_name, | ||
| CDevice * | info, | ||
| unsigned int * | size | ||
| ) |
Returns information about a given camera device.
The function returns information about a device specified using a device handle obtained from c_open_device() or a string that would be recognized by the same function. The hDevice and device_name arguments are mutually exclusive. If both are specified, the handle is used. If the device name should be used, hDevice should be set to zero.
If the buffer is not large enough, C_BUFFER_TOO_SMALL is returned and the size parameter is modified to contain the required buffer size.
Specifying a size of sizeof(CDevice) + strlen(device_name) + 84 will usually be enough. This information can be used to try receiving device information in a statically allocated buffer first. The number comes from the field lengths that V4L2 uses internally. There is no guarantee, however, that this does not change in the future, so applications must be prepared to allocate more memory if indicated by a return value of C_BUFFER_TOO_SMALL.
| hDevice | a handle obtained from c_open_device() |
| device_name | a device name as accepted by c_open_device() |
| info | a pointer to a buffer to receive the device information |
| size | a pointer to an integer that contains or receives the size of the info buffer |
References C_BUFFER_TOO_SMALL, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_HANDLE, C_NOT_EXIST, C_NOT_FOUND, C_SUCCESS, copy_string_to_buffer(), _Device::device, _CDevice::driver, find_device_by_name(), get_device_dynamics_length(), GET_HANDLE, HANDLE_OPEN, HANDLE_VALID, initialized, _CDevice::location, _CDevice::name, and _CDevice::shortName.
| char* c_get_error_text | ( | CResult | error | ) |
Returns the error message associated with a given error code.
Note that the caller must free the buffer returned by this function.
| error | error code for which the message should be retrieved |
References c_get_handle_error_text().
Referenced by print_libwebcam_c_error().
Returns the error message associated with a given error code and device handle.
Note that the caller must free the buffer returned by this function. Compared to the c_get_error_text() function, this function can take the handle's last system error into account.
| hDevice | an open device handle. If this parameter is 0, the function behaves exactly like c_get_error_text(). |
| error | error code for which the message should be retrieved |
References C_BUFFER_TOO_SMALL, C_CANNOT_READ, C_CANNOT_WRITE, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_DEVICE, C_INVALID_HANDLE, C_NO_HANDLES, C_NO_MEMORY, C_NOT_FOUND, C_NOT_IMPLEMENTED, C_PARSE_ERROR, C_SUCCESS, C_SYNC_ERROR, C_SYSFS_ERROR, C_V4L2_ERROR, GET_HANDLE, and HANDLE_OPEN.
Referenced by c_add_control_mappings_from_file(), and c_get_error_text().
| CResult c_init | ( | void | ) |
Initializes libwebcam.
This method must be called prior to using most of the other methods. To release resources allocated during initialization, users should make a call to c_cleanup() when the library is no longer used.
References C_INIT_ERROR, C_SUCCESS, _DeviceList::count, _DeviceList::first, _HandleList::first_free, initialized, _DeviceList::mutex, _HandleList::mutex, and refresh_device_list().
| CHandle c_open_device | ( | const char * | device_name | ) |
Opens a camera device.
The function returns a handle that can be used for all functions that require a device handle.
| device_name | Name of the device to open. Two different naming schemes are accepted: Full device names (e.g. '/dev/video0') and short names (e.g. 'video0') as returned by c_enum_devices(). |
References create_handle(), find_device_by_name(), initialized, and print_libwebcam_error().
Referenced by c_add_control_mappings_from_file().
| CResult c_set_control | ( | CHandle | hDevice, |
| CControlId | control_id, | ||
| const CControlValue * | value | ||
| ) |
Sets the value of a device control.
| hDevice | a device handle obtained from c_open_device() |
| control_id | the ID of the control whose value shall be set |
| value | the value to which the control shall be set |
References C_CANNOT_WRITE, C_INIT_ERROR, C_INVALID_ARG, C_INVALID_HANDLE, C_NOT_EXIST, C_NOT_FOUND, C_SUCCESS, CC_CAN_WRITE, _Control::control, find_control_by_id(), _CControl::flags, GET_HANDLE, HANDLE_OPEN, HANDLE_VALID, initialized, _Control::v4l2_control, and write_v4l2_control().
| CResult c_subscribe_event | ( | CHandle | hDevice, |
| CEventId | event_id, | ||
| CEventHandler | handler, | ||
| void * | context | ||
| ) |
Subscribes the caller to receive the given event.
[unimplemented]
References C_INIT_ERROR, C_NOT_IMPLEMENTED, and initialized.
Unsubscribes the caller from the given event.
[unimplemented]
References C_INIT_ERROR, C_NOT_IMPLEMENTED, and initialized.