summaryrefslogtreecommitdiff
path: root/include/libcamera/camera.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libcamera/camera.h')
-rw-r--r--include/libcamera/camera.h43
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);