SkyLok/main.cpp
2026-05-19 13:28:25 +02:00

68 lines
1.4 KiB
C++

#include <iostream>
#include <memory>
#include <thread>
#include <atomic>
#include <libcamera/libcamera.h>
using namespace libcamera;
using namespace std::chrono_literals;
static std::atomic<bool> capturing{true};
static std::shared_ptr<Camera> camera;
static void requestComplete(Request *request)
{
}
int main()
{
std::unique_ptr<CameraManager> cm = std::make_unique<CameraManager>();
cm->start();
auto cameras = cm->cameras();
if (cameras.empty()) {
std::cerr << "What? No cmaera?" << std::endl;
cameras.clear();
cm->stop();
return 1;
}
camera = cm->get(cameras[0]->id());
cameras.clear();
camera->acquire();
std::unique_ptr<CameraConfiguration> config = camera->generateConfiguration({StreamRole::Viewfinder});
StreamConfiguration &streamConfig = config->at(0);
/*streamConfig.size.width = 640;
streamConfig.size.height = 480;*/
config->validate();
camera->configure(config.get());
camera->requestCompleted.connect(requestCompleted);
camera->start();
for (auto &req : requests) {
camera->queueRequest(req.get());
}
// end the cameras
capturing = false;
camera->stop();
camera->requestCompleted.disconnect();
requests.clear();
allocator->free(streamConfig.stream());
delete allocator;
camera->release();
camera.reset();
cm->stop();
cm.reset();
return 0;
}