[libcamera-devel,v3,1/4] libcamera: formats: Add toString() methods

Message ID 20190314155106.30106-2-jacopo@jmondi.org
State Accepted
Headers show
Series
  • libcamera: ipu3: Pre-ImgU support
Related show

Commit Message

Jacopo Mondi March 14, 2019, 3:51 p.m. UTC
Add toString() helpers to pretty print out a V4L2Device or V4L2Subdevice
format.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

---
v2->v3:
- remove planes and mbus code hex code length
- TODO: clarify the format formatting

---
 src/libcamera/include/v4l2_device.h    |  2 ++
 src/libcamera/include/v4l2_subdevice.h |  2 ++
 src/libcamera/v4l2_device.cpp          | 18 ++++++++++++++++++
 src/libcamera/v4l2_subdevice.cpp       | 18 ++++++++++++++++++
 4 files changed, 40 insertions(+)

--
2.21.0

Patch

diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h
index 5c379fac66dc..258deee8d461 100644
--- a/src/libcamera/include/v4l2_device.h
+++ b/src/libcamera/include/v4l2_device.h
@@ -100,6 +100,8 @@  public:
 		uint32_t bpl;
 	} planes[3];
 	unsigned int planesCount;
+
+	const std::string toString() const;
 };

 class V4L2Device : protected Loggable
diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h
index 1cc0fab73103..700e66bcddac 100644
--- a/src/libcamera/include/v4l2_subdevice.h
+++ b/src/libcamera/include/v4l2_subdevice.h
@@ -21,6 +21,8 @@  struct V4L2SubdeviceFormat {
 	uint32_t mbus_code;
 	uint32_t width;
 	uint32_t height;
+
+	const std::string toString() const;
 };

 class V4L2Subdevice : protected Loggable
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index a88a5f5ff036..127140b24314 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -6,6 +6,8 @@ 
  */

 #include <fcntl.h>
+#include <iomanip>
+#include <sstream>
 #include <string.h>
 #include <sys/ioctl.h>
 #include <sys/mman.h>
@@ -223,6 +225,22 @@  LOG_DEFINE_CATEGORY(V4L2)
  * \brief The number of valid data planes
  */

+/**
+ * \brief Assemble and return a string describing the format
+ *
+ * \return A string describing the V4L2DeviceFormat
+ */
+const std::string V4L2DeviceFormat::toString() const
+{
+	std::stringstream ss;
+
+	ss.fill(0);
+	ss << width << "x" << height << "- 0x" << std::hex
+	   << std::setw(8) << fourcc;
+
+	return ss.str();
+}
+
 /**
  * \class V4L2Device
  * \brief V4L2Device object and API
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index 5f58904bf9e6..eb60fe42bb4e 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -6,6 +6,8 @@ 
  */

 #include <fcntl.h>
+#include <iomanip>
+#include <sstream>
 #include <string.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
@@ -69,6 +71,22 @@  LOG_DEFINE_CATEGORY(V4L2Subdev)
  * \brief The image height in pixels
  */

+/**
+ * \brief Assemble and return a string describing the format
+ *
+ * \return A string describing the V4L2SubdeviceFormat
+ */
+const std::string V4L2SubdeviceFormat::toString() const
+{
+	std::stringstream ss;
+
+	ss.fill(0);
+	ss << width << "x" << height << " - 0x" << std::hex << std::setw(4)
+	   << mbus_code;
+
+	return ss.str();
+}
+
 /**
  * \class V4L2Subdevice
  * \brief A V4L2 subdevice as exposed by the Linux kernel