summaryrefslogtreecommitdiff
path: root/src/libcamera/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/include')
-rw-r--r--src/libcamera/include/geometry.h12
-rw-r--r--src/libcamera/include/v4l2_subdevice.h11
2 files changed, 21 insertions, 2 deletions
diff --git a/src/libcamera/include/geometry.h b/src/libcamera/include/geometry.h
index cc146da7..eadc4ed4 100644
--- a/src/libcamera/include/geometry.h
+++ b/src/libcamera/include/geometry.h
@@ -17,6 +17,18 @@ struct Rectangle {
unsigned int h;
};
+struct SizeRange {
+ SizeRange(unsigned int minW, unsigned int minH,
+ unsigned int maxW, unsigned int maxH)
+ : minWidth(minW), minHeight(minH), maxWidth(maxW),
+ maxHeight(maxH) {}
+
+ unsigned int minWidth;
+ unsigned int minHeight;
+ unsigned int maxWidth;
+ unsigned int maxHeight;
+};
+
} /* namespace libcamera */
#endif /* __LIBCAMERA_GEOMETRY_H__ */
diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h
index 669e79f9..1cc0fab7 100644
--- a/src/libcamera/include/v4l2_subdevice.h
+++ b/src/libcamera/include/v4l2_subdevice.h
@@ -7,15 +7,16 @@
#ifndef __LIBCAMERA_V4L2_SUBDEVICE_H__
#define __LIBCAMERA_V4L2_SUBDEVICE_H__
+#include <map>
#include <string>
+#include <vector>
+#include "geometry.h"
#include "log.h"
#include "media_object.h"
namespace libcamera {
-struct Rectangle;
-
struct V4L2SubdeviceFormat {
uint32_t mbus_code;
uint32_t width;
@@ -39,6 +40,9 @@ public:
int setCrop(unsigned int pad, Rectangle *rect);
int setCompose(unsigned int pad, Rectangle *rect);
+ const std::map<unsigned int, std::vector<SizeRange>>
+ formats(unsigned int pad);
+
int getFormat(unsigned int pad, V4L2SubdeviceFormat *format);
int setFormat(unsigned int pad, V4L2SubdeviceFormat *format);
@@ -46,6 +50,9 @@ protected:
std::string logPrefix() const;
private:
+ int enumPadSizes(unsigned int pad, unsigned int code,
+ std::vector<SizeRange> *size);
+
int setSelection(unsigned int pad, unsigned int target,
Rectangle *rect);