diff options
Diffstat (limited to 'include/libcamera/camera.h')
-rw-r--r-- | include/libcamera/camera.h | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index 5bb06584..ae35792d 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -7,7 +7,9 @@ #pragma once +#include <initializer_list> #include <memory> +#include <optional> #include <set> #include <stdint.h> #include <string> @@ -18,9 +20,10 @@ #include <libcamera/base/signal.h> #include <libcamera/controls.h> +#include <libcamera/geometry.h> +#include <libcamera/orientation.h> #include <libcamera/request.h> #include <libcamera/stream.h> -#include <libcamera/transform.h> namespace libcamera { @@ -29,6 +32,30 @@ class FrameBufferAllocator; class PipelineHandler; class Request; +class SensorConfiguration +{ +public: + unsigned int bitDepth = 0; + + Rectangle analogCrop; + + struct { + unsigned int binX = 1; + unsigned int binY = 1; + } binning; + + struct { + unsigned int xOddInc = 1; + unsigned int xEvenInc = 1; + unsigned int yOddInc = 1; + unsigned int yEvenInc = 1; + } skipping; + + Size outputSize; + + bool isValid() const; +}; + class CameraConfiguration { public: @@ -65,7 +92,8 @@ public: bool empty() const; std::size_t size() const; - Transform transform; + std::optional<SensorConfiguration> sensorConfig; + Orientation orientation; protected: CameraConfiguration(); @@ -105,7 +133,16 @@ public: const ControlList &properties() const; const std::set<Stream *> &streams() const; - std::unique_ptr<CameraConfiguration> generateConfiguration(const StreamRoles &roles = {}); + + std::unique_ptr<CameraConfiguration> + generateConfiguration(Span<const StreamRole> roles = {}); + + std::unique_ptr<CameraConfiguration> + generateConfiguration(std::initializer_list<StreamRole> roles) + { + return generateConfiguration(Span(roles.begin(), roles.end())); + } + int configure(CameraConfiguration *config); std::unique_ptr<Request> createRequest(uint64_t cookie = 0); |