The libcamera starts

This commit is contained in:
Kamil Trzcinski
2022-04-11 10:01:18 +02:00
parent 95c7b06e1e
commit 4783fe31a5
9 changed files with 180 additions and 7 deletions

View File

@ -4,18 +4,43 @@ int libcamera_device_open(device_t *dev)
{
dev->libcamera = new device_libcamera_t{};
auto camera_manager = std::make_unique<libcamera::CameraManager>();
int ret = camera_manager->start();
dev->libcamera->camera_manager = std::make_shared<libcamera::CameraManager>();
int ret = dev->libcamera->camera_manager->start();
if (ret < 0) {
return -1;
E_LOG_ERROR(dev, "Cannot start camera_manager.");
}
dev->libcamera->camera = dev->libcamera->camera_manager->get(dev->path);
if (!dev->libcamera->camera) {
if (dev->libcamera->camera_manager->cameras().size()) {
for(auto const &camera : dev->libcamera->camera_manager->cameras()) {
E_LOG_INFO(dev, "Available Camera: %s", camera->id().c_str());
}
} else {
E_LOG_INFO(dev, "No available cameras");
}
E_LOG_ERROR(dev, "Camera `%s` was not found.", dev->path);
}
if (dev->libcamera->camera->acquire()) {
E_LOG_ERROR(dev, "Failed to acquire `%s` camera.", dev->path);
}
printf("camera manager started, and camera was found: %s\n", dev->libcamera->camera->id().c_str());
return 0;
error:
return -1;
}
void libcamera_device_close(device_t *dev)
{
if (dev->libcamera) {
if (dev->libcamera->camera) {
dev->libcamera->camera->stop();
dev->libcamera->camera->release();
}
delete dev->libcamera;
dev->libcamera = NULL;
}