summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;