libcamera v0.2.0+3-70b69666-nvm
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
bayer_format.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2020, Raspberry Pi Ltd
4 *
5 * bayer_format.h - Bayer Pixel Format
6 */
7
8#pragma once
9
10#include <ostream>
11#include <stdint.h>
12#include <string>
13
15
17
18namespace libcamera {
19
20enum class Transform;
21
23{
24public:
25 enum Order : uint8_t {
26 BGGR = 0,
27 GBRG = 1,
28 GRBG = 2,
29 RGGB = 3,
30 MONO = 4,
31 IGIG_GBGR_IGIG_GRGB = 5,
32 };
33
34 enum class Packing : uint16_t {
35 None = 0,
36 CSI2 = 1,
37 IPU3 = 2,
38 };
39
40 constexpr BayerFormat()
42 {
43 }
44
45 constexpr BayerFormat(Order o, uint8_t b, Packing p)
46 : order(o), bitDepth(b), packing(p)
47 {
48 }
49
50 static const BayerFormat &fromMbusCode(unsigned int mbusCode);
51 bool isValid() const { return bitDepth != 0; }
52
53 std::string toString() const;
54
60
62 uint8_t bitDepth;
63
65};
66
67bool operator==(const BayerFormat &lhs, const BayerFormat &rhs);
68static inline bool operator!=(const BayerFormat &lhs, const BayerFormat &rhs)
69{
70 return !(lhs == rhs);
71}
72
73std::ostream &operator<<(std::ostream &out, const BayerFormat &f);
74
75} /* namespace libcamera */
Class to represent a raw image Bayer format.
Definition bayer_format.h:23
static BayerFormat fromV4L2PixelFormat(V4L2PixelFormat v4l2Format)
Convert v4l2Format to the corresponding BayerFormat.
Definition bayer_format.cpp:335
constexpr BayerFormat()
Construct an empty (and invalid) BayerFormat.
Definition bayer_format.h:40
Packing
Different types of packing that can be applied to a BayerFormat.
Definition bayer_format.h:34
@ CSI2
Format uses MIPI CSI-2 style packing.
@ IPU3
Format uses IPU3 style packing.
uint8_t bitDepth
The bit depth of the samples in the Bayer pattern.
Definition bayer_format.h:62
Order
The order of the colour channels in the Bayer pattern.
Definition bayer_format.h:25
@ GBRG
G then B on the first row, R then G on the second row.
Definition bayer_format.h:27
@ GRBG
G then R on the first row, B then G on the second row.
Definition bayer_format.h:28
@ RGGB
R then G on the first row, G then B on the second row.
Definition bayer_format.h:29
@ MONO
Monochrome image data, there is no colour filter array.
Definition bayer_format.h:30
@ BGGR
B then G on the first row, G then R on the second row.
Definition bayer_format.h:26
Packing packing
Any packing scheme applied to this BayerFormat.
Definition bayer_format.h:64
V4L2PixelFormat toV4L2PixelFormat() const
Convert a BayerFormat into the corresponding V4L2PixelFormat.
Definition bayer_format.cpp:321
static const BayerFormat & fromMbusCode(unsigned int mbusCode)
Retrieve the BayerFormat associated with a media bus code.
Definition bayer_format.cpp:239
PixelFormat toPixelFormat() const
Convert a BayerFormat into the corresponding PixelFormat.
Definition bayer_format.cpp:351
Order order
The order of the colour channels in the Bayer pattern.
Definition bayer_format.h:61
std::string toString() const
Assemble and return a readable string representation of the BayerFormat.
Definition bayer_format.cpp:260
BayerFormat transform(Transform t) const
Apply a transform to this BayerFormat.
Definition bayer_format.cpp:393
static BayerFormat fromPixelFormat(PixelFormat format)
Convert a PixelFormat into the corresponding BayerFormat.
Definition bayer_format.cpp:364
constexpr BayerFormat(Order o, uint8_t b, Packing p)
Construct a BayerFormat from explicit values.
Definition bayer_format.h:45
bool isValid() const
Return whether a BayerFormat is valid.
Definition bayer_format.h:51
libcamera image pixel format
Definition pixel_format.h:18
V4L2 pixel format FourCC wrapper.
Definition v4l2_pixelformat.h:24
Top-level libcamera namespace.
Definition backtrace.h:17
Transform
Enum to represent a 2D plane transform.
Definition transform.h:16
std::ostream & operator<<(std::ostream &out, const Point &p)
Insert a text representation of a Point into an output stream.
Definition geometry.cpp:91
bool operator==(const ColorSpace &lhs, const ColorSpace &rhs)
Compare color spaces for equality.
Definition color_space.cpp:506
libcamera pixel format
V4L2 Pixel Format.