libcamera  v0.0.0
Supporting cameras in Linux since 2019
formats.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2019, Google Inc.
4  *
5  * formats.h - libcamera image formats
6  */
7 
8 #ifndef __LIBCAMERA_INTERNAL_FORMATS_H__
9 #define __LIBCAMERA_INTERNAL_FORMATS_H__
10 
11 #include <map>
12 #include <vector>
13 
14 #include <libcamera/geometry.h>
15 #include <libcamera/pixel_format.h>
16 
18 
19 namespace libcamera {
20 
22 {
23 public:
24  int addFormat(unsigned int format, const std::vector<SizeRange> &sizes);
25 
26  bool isEmpty() const;
27  std::vector<unsigned int> formats() const;
28  const std::vector<SizeRange> &sizes(unsigned int format) const;
29  const std::map<unsigned int, std::vector<SizeRange>> &data() const;
30 
31 private:
32  std::map<unsigned int, std::vector<SizeRange>> data_;
33 };
34 
36 {
37 public:
42  };
43 
44  bool isValid() const { return format.isValid(); }
45 
46  static const PixelFormatInfo &info(const PixelFormat &format);
47 
48  /* \todo Add support for non-contiguous memory planes */
49  const char *name;
52  unsigned int bitsPerPixel;
54  bool packed;
55 };
56 
57 } /* namespace libcamera */
58 
59 #endif /* __LIBCAMERA_INTERNAL_FORMATS_H__ */
Describe V4L2Device and V4L2SubDevice image formats.
Definition: formats.h:22
int addFormat(unsigned int format, const std::vector< SizeRange > &sizes)
Add a format and corresponding sizes to the description.
Definition: formats.cpp:48
bool isEmpty() const
Check if the list of devices supported formats is empty.
Definition: formats.cpp:62
const std::map< unsigned int, std::vector< SizeRange > > & data() const
Retrieve the map that associates formats to image sizes.
Definition: formats.cpp:108
std::vector< unsigned int > formats() const
Retrieve a list of all supported image formats.
Definition: formats.cpp:71
const std::vector< SizeRange > & sizes(unsigned int format) const
Retrieve all sizes for a specific format.
Definition: formats.cpp:93
Information about pixel formats.
Definition: formats.h:36
ColourEncoding
The colour encoding type.
Definition: formats.h:38
@ ColourEncodingRGB
RGB colour encoding.
Definition: formats.h:39
@ ColourEncodingYUV
YUV colour encoding.
Definition: formats.h:40
@ ColourEncodingRAW
RAW colour encoding.
Definition: formats.h:41
const char * name
The format name as a human-readable string, used as the test representation of the PixelFormat.
Definition: formats.h:49
V4L2PixelFormat v4l2Format
The V4L2 pixel format corresponding to the PixelFormat.
Definition: formats.h:51
PixelFormat format
The PixelFormat described by this instance.
Definition: formats.h:50
enum ColourEncoding colourEncoding
The colour encoding type.
Definition: formats.h:53
static const PixelFormatInfo & info(const PixelFormat &format)
Retrieve information about a pixel format.
Definition: formats.cpp:537
bool isValid() const
Check if the pixel format info is valid.
Definition: formats.h:44
unsigned int bitsPerPixel
The average number of bits per pixel.
Definition: formats.h:52
bool packed
Tell if multiple pixels are packed in the same bytes.
Definition: formats.h:54
libcamera image pixel format
Definition: pixel_format.h:17
constexpr bool isValid() const
Check if the pixel format is valid.
Definition: pixel_format.h:33
V4L2 pixel format FourCC wrapper.
Definition: v4l2_pixelformat.h:21
Data structures related to geometric objects.
libcamera pixel format
V4L2 Pixel Format.