summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/libcamera/internal/bayer_format.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/libcamera/internal/bayer_format.h b/include/libcamera/internal/bayer_format.h
new file mode 100644
index 00000000..4280b76b
--- /dev/null
+++ b/include/libcamera/internal/bayer_format.h
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2020, Raspberry Pi (Trading) Ltd.
+ *
+ * bayer_format.h - Bayer Pixel Format
+ */
+#ifndef __LIBCAMERA_INTERNAL_BAYER_FORMAT_H__
+#define __LIBCAMERA_INTERNAL_BAYER_FORMAT_H__
+
+#include <stdint.h>
+#include <string>
+
+#include "libcamera/internal/v4l2_pixelformat.h"
+
+namespace libcamera {
+
+enum class Transform;
+
+class BayerFormat
+{
+public:
+ enum Order : uint8_t {
+ BGGR = 0,
+ GBRG = 1,
+ GRBG = 2,
+ RGGB = 3
+ };
+
+ enum Packing : uint16_t {
+ None = 0,
+ CSI2Packed = 1,
+ IPU3Packed = 2,
+ };
+
+ constexpr BayerFormat()
+ : order(Order::BGGR), bitDepth(0), packing(Packing::None)
+ {
+ }
+
+ constexpr BayerFormat(Order o, uint8_t b, Packing p)
+ : order(o), bitDepth(b), packing(p)
+ {
+ }
+
+ explicit BayerFormat(V4L2PixelFormat v4l2Format);
+ bool isValid() const { return bitDepth != 0; }
+
+ std::string toString() const;
+
+ V4L2PixelFormat toV4L2PixelFormat() const;
+ BayerFormat transform(Transform t) const;
+
+ Order order;
+ uint8_t bitDepth;
+
+ Packing packing;
+};
+
+} /* namespace libcamera */
+
+#endif /* __LIBCAMERA_INTERNAL_BAYER_FORMAT_H__ */