summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2019-03-12 12:03:22 +0100
committerJacopo Mondi <jacopo@jmondi.org>2019-04-02 11:02:38 +0200
commit8dcd871fec82270c3bd8f0d0d02f39a9cb2ffc14 (patch)
treec364d2b793d0b0b0d59b7a17a13219e178504323 /src
parentee8127523879b2573893545f35c0f94b7d9f5deb (diff)
libcamera: formats: Define FormatEnum type
Add an internal format.h and format.cpp files to collect libcamera image format related types, helpers and structures. Define and document the FormatEnum type, used to enumerate pixel image formats and associated image resolutions. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/formats.cpp27
-rw-r--r--src/libcamera/include/formats.h22
-rw-r--r--src/libcamera/include/v4l2_subdevice.h4
-rw-r--r--src/libcamera/meson.build1
-rw-r--r--src/libcamera/v4l2_subdevice.cpp5
5 files changed, 54 insertions, 5 deletions
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
new file mode 100644
index 00000000..56f4ddb5
--- /dev/null
+++ b/src/libcamera/formats.cpp
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * formats.cpp - Libcamera image formats
+ */
+
+#include "formats.h"
+
+/**
+ * \file formats.h
+ * \brief Types and helper methods to handle libcamera image formats
+ */
+
+namespace libcamera {
+
+/**
+ * \typedef FormatEnum
+ * \brief Type definition for the map of image formats and sizes
+ *
+ * Type definition used to enumerate the supported pixel formats and image
+ * frame sizes. The type associates in a map a pixel format (for memory
+ * formats) or a media bus code (for bus formats), to a vector of image
+ * resolutions represented by SizeRange items.
+ */
+
+} /* namespace libcamera */
diff --git a/src/libcamera/include/formats.h b/src/libcamera/include/formats.h
new file mode 100644
index 00000000..5fcfb113
--- /dev/null
+++ b/src/libcamera/include/formats.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * formats.h - Libcamera image formats
+ */
+
+#ifndef __LIBCAMERA_FORMATS_H__
+#define __LIBCAMERA_FORMATS_H__
+
+#include <map>
+#include <vector>
+
+#include "geometry.h"
+
+namespace libcamera {
+
+typedef std::map<unsigned int, std::vector<SizeRange>> FormatEnum;
+
+} /* namespace libcamera */
+
+#endif /* __LIBCAMERA_FORMATS_H__ */
diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h
index 700e66bc..3ecf0851 100644
--- a/src/libcamera/include/v4l2_subdevice.h
+++ b/src/libcamera/include/v4l2_subdevice.h
@@ -11,6 +11,7 @@
#include <string>
#include <vector>
+#include "formats.h"
#include "geometry.h"
#include "log.h"
#include "media_object.h"
@@ -42,8 +43,7 @@ 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);
+ FormatEnum formats(unsigned int pad);
int getFormat(unsigned int pad, V4L2SubdeviceFormat *format);
int setFormat(unsigned int pad, V4L2SubdeviceFormat *format);
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index 8384cd0a..4433abfc 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -6,6 +6,7 @@ libcamera_sources = files([
'event_dispatcher.cpp',
'event_dispatcher_poll.cpp',
'event_notifier.cpp',
+ 'formats.cpp',
'geometry.cpp',
'log.cpp',
'media_device.cpp',
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index cf873487..8260e6eb 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -210,10 +210,9 @@ int V4L2Subdevice::setCompose(unsigned int pad, Rectangle *rect)
* \return A map of image formats associated with a list of image sizes, or
* an empty map on error or if the pad does not exist
*/
-const std::map<unsigned int, std::vector<SizeRange>>
-V4L2Subdevice::formats(unsigned int pad)
+FormatEnum V4L2Subdevice::formats(unsigned int pad)
{
- std::map<unsigned int, std::vector<SizeRange>> formatMap = {};
+ FormatEnum formatMap = {};
struct v4l2_subdev_mbus_code_enum mbusEnum = {};
int ret;