summaryrefslogtreecommitdiff
path: root/src/libcamera/v4l2_videodevice.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-11-04 09:06:43 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-11-07 20:24:31 +0200
commit2d43b8bcd8571dbce1969fa1fd50c655585f780b (patch)
tree2962b4cbd675c35813eb5cf54e2b4492e0bc277d /src/libcamera/v4l2_videodevice.cpp
parent9e10811bb5ec1cdace2041714f3235e94446738c (diff)
libcamera: v4l2_videodevice: Zero-initialize planes in V4L2DeviceFormat
The V4L2DeviceFormat class doesn't have a default constructor, neither does it specifies default member initializers for the plane-related members. This results in the planes array and planesCount members being uninitialized by default, leading to undefined behaviour if the user of the class doesn't initialize it explicitly. Most users initialize V4L2DeviceFormat instances, but some don't. We could fix them, but that would likely turn into a game of whack-a-mole. As there's no use case for instantiating a large number of V4L2DeviceFormat instances in a performance-critical code path, let's instead add default initializers to avoid future issues. While at it, define a type of the structures containing plane information, and use an std::array. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/libcamera/v4l2_videodevice.cpp')
-rw-r--r--src/libcamera/v4l2_videodevice.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index 36d7d9a0..d07c3530 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -352,6 +352,15 @@ bool V4L2BufferCache::Entry::operator==(const FrameBuffer &buffer) const
*/
/**
+ * \struct V4L2DeviceFormat::Plane
+ * \brief Per-plane memory size information
+ * \var V4L2DeviceFormat::Plane::size
+ * \brief The plane total memory size (in bytes)
+ * \var V4L2DeviceFormat::Plane::bpl
+ * \brief The plane line stride (in bytes)
+ */
+
+/**
* \var V4L2DeviceFormat::size
* \brief The image size in pixels
*/