68 lines
1.4 KiB
C++
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;
|
|
}
|