diff options
Diffstat (limited to 'include/libcamera_c/camera_c.h')
-rw-r--r-- | include/libcamera_c/camera_c.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/libcamera_c/camera_c.h b/include/libcamera_c/camera_c.h new file mode 100644 index 00000000..74c5fbea --- /dev/null +++ b/include/libcamera_c/camera_c.h @@ -0,0 +1,61 @@ +#pragma once + +#include "request_c.h" + +enum stream_roles { + RAW, + STILL_CAPTURE, + VIDEO_RECORDING, + VIEWFINDER, +}; + +#ifdef __cplusplus +#include <memory> + +#include <libcamera.h> + +typedef std::unique_ptr<libcamera::CameraConfiguration> camera_configuration_t; +typedef libcamera::Camera * camera_t; +typedef std::shared_ptr<libcamera::Camera> managed_camera_t; + +extern "C" { + +#else /* __cplusplus */ +#include <stddef.h> + +typedef struct camera_configuration { +#define LIBCAMERA_UNIQUE_PTR 8 + char padding[LIBCAMERA_UNIQUE_PTR]; +} camera_configuration_t; + +/* pointer to Camera */ +typedef void * camera_t; + +/* Camera wrapped in a shared_ptr*/ +struct managed_camera { +#define LIBCAMERA_SHARED_PTR 16 + char padding[LIBCAMERA_SHARED_PTR]; +}; +typedef struct managed_camera managed_camera_t; +#endif + +const char *camera_id(camera_t); +const char *shared_ptr_camera_id(const managed_camera_t *); + +void camera_put(managed_camera_t *); + +void camera_generate_configuration(managed_camera_t *, enum stream_roles *, + size_t, camera_configuration_t *); + +void camera_drop_configuration(camera_configuration_t *); + +void camera_acquire(managed_camera_t *); +void camera_release(managed_camera_t *); + +void camera_configure(managed_camera_t *, camera_configuration_t *); + +void camera_create_request(managed_camera_t *, request_t *); + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */
\ No newline at end of file |