[libcamera-devel] [PATCH v6 5/5] libcamera: v4l2_device: Cosmetic update
Jacopo Mondi
jacopo at jmondi.org
Fri Mar 1 12:51:39 CET 2019
Cosmetic update of V4L2Device class:
- remove the return type from Doxygen documentation of inline functions
- re-sort methods implementation to reflect the declaration order in the
class definition
Cosmetic update, no functional changes intended.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/libcamera/v4l2_device.cpp | 412 +++++++++++++++++-----------------
1 file changed, 206 insertions(+), 206 deletions(-)
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index b19cf9f78029..5f2cf4846c65 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -37,56 +37,56 @@ LOG_DEFINE_CATEGORY(V4L2)
*/
/**
- * \fn const char *V4L2Capability::driver()
+ * \fn V4L2Capability::driver()
* \brief Retrieve the driver module name
* \return The string containing the name of the driver module
*/
/**
- * \fn const char *V4L2Capability::card()
+ * \fn V4L2Capability::card()
* \brief Retrieve the device card name
* \return The string containing the device name
*/
/**
- * \fn const char *V4L2Capability::bus_info()
+ * \fn V4L2Capability::bus_info()
* \brief Retrieve the location of the device in the system
* \return The string containing the device location
*/
/**
- * \fn unsigned int V4L2Capability::device_caps()
+ * \fn V4L2Capability::device_caps()
* \brief Retrieve the capabilities of the device
* \return The device specific capabilities if V4L2_CAP_DEVICE_CAPS is set or
* driver capabilities otherwise
*/
/**
- * \fn bool V4L2Capability::isMultiplanar()
+ * \fn V4L2Capability::isMultiplanar()
* \brief Identify if the device implements the V4L2 multiplanar APIs
* \return True if the device supports multiplanar APIs
*/
/**
- * \fn bool V4L2Capability::isCapture()
+ * \fn V4L2Capability::isCapture()
* \brief Identify if the device captures data
* \return True if the device can capture data
*/
/**
- * \fn bool V4L2Capability::isOutput()
+ * \fn V4L2Capability::isOutput()
* \brief Identify if the device outputs data
* \return True if the device can output data
*/
/**
- * \fn bool V4L2Capability::isVideo()
+ * \fn V4L2Capability::isVideo()
* \brief Identify if the device captures or outputs images
* \return True if the device can capture or output images
*/
/**
- * \fn bool V4L2Capability::isMeta()
+ * \fn V4L2Capability::isMeta()
* \brief Identify if the device captures or outputs image meta-data
*
* \todo Add support for META_CAPTURE introduced in Linux v5.0
@@ -95,25 +95,25 @@ LOG_DEFINE_CATEGORY(V4L2)
*/
/**
- * \fn bool V4L2Capability::isVideoCapture()
+ * \fn V4L2Capability::isVideoCapture()
* \brief Identify if the device captures images
* \return True if the device can capture images
*/
/**
- * \fn bool V4L2Capability::isVideoOutput()
+ * \fn V4L2Capability::isVideoOutput()
* \brief Identify if the device outputs images
* \return True if the device can output images
*/
/**
- * \fn bool V4L2Capability::isMetaCapture()
+ * \fn V4L2Capability::isMetaCapture()
* \brief Identify if the device captures image meta-data
* \return True if the device can capture image meta-data
*/
/**
- * \fn bool V4L2Capability::hasStreaming()
+ * \fn V4L2Capability::hasStreaming()
* \brief Determine if the device can perform Streaming I/O
* \return True if the device provides Streaming I/O IOCTLs
*/
@@ -371,19 +371,19 @@ void V4L2Device::close()
}
/**
- * \fn const char *V4L2Device::driverName()
+ * \fn V4L2Device::driverName()
* \brief Retrieve the name of the V4L2 device driver
* \return The string containing the driver name
*/
/**
- * \fn const char *V4L2Device::deviceName()
+ * \fn V4L2Device::deviceName()
* \brief Retrieve the name of the V4L2 device
* \return The string containing the device name
*/
/**
- * \fn const char *V4L2Device::busName()
+ * \fn V4L2Device::busName()
* \brief Retrieve the location of the device in the system
* \return The string containing the device location
*/
@@ -394,11 +394,6 @@ void V4L2Device::close()
* \return The video device device node path
*/
-std::string V4L2Device::logPrefix() const
-{
- return deviceNode_;
-}
-
/**
* \brief Retrieve the image format set on the V4L2 device
* \param[out] format The image format applied on the device
@@ -426,155 +421,6 @@ int V4L2Device::setFormat(V4L2DeviceFormat *format)
setFormatSingleplane(format);
}
-int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)
-{
- struct v4l2_format v4l2Format = {};
- struct v4l2_pix_format *pix = &v4l2Format.fmt.pix;
- int ret;
-
- v4l2Format.type = bufferType_;
- ret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);
- if (ret) {
- ret = -errno;
- LOG(V4L2, Error) << "Unable to get format: " << strerror(-ret);
- return ret;
- }
-
- format->width = pix->width;
- format->height = pix->height;
- format->fourcc = pix->pixelformat;
- format->planesCount = 1;
- format->planes[0].bpl = pix->bytesperline;
- format->planes[0].size = pix->sizeimage;
-
- return 0;
-}
-
-int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)
-{
- struct v4l2_format v4l2Format = {};
- struct v4l2_pix_format *pix = &v4l2Format.fmt.pix;
- int ret;
-
- v4l2Format.type = bufferType_;
- pix->width = format->width;
- pix->height = format->height;
- pix->pixelformat = format->fourcc;
- pix->bytesperline = format->planes[0].bpl;
- pix->field = V4L2_FIELD_NONE;
-
- ret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);
- if (ret) {
- ret = -errno;
- LOG(V4L2, Error) << "Unable to set format: " << strerror(-ret);
- return ret;
- }
-
- /*
- * Return to caller the format actually applied on the device,
- * which might differ from the requested one.
- */
- format->width = pix->width;
- format->height = pix->height;
- format->fourcc = pix->pixelformat;
- format->planesCount = 1;
- format->planes[0].bpl = pix->bytesperline;
- format->planes[0].size = pix->sizeimage;
-
- return 0;
-}
-
-int V4L2Device::getFormatMultiplane(V4L2DeviceFormat *format)
-{
- struct v4l2_format v4l2Format = {};
- struct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;
- int ret;
-
- v4l2Format.type = bufferType_;
- ret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);
- if (ret) {
- ret = -errno;
- LOG(V4L2, Error) << "Unable to get format: " << strerror(-ret);
- return ret;
- }
-
- format->width = pix->width;
- format->height = pix->height;
- format->fourcc = pix->pixelformat;
- format->planesCount = pix->num_planes;
-
- for (unsigned int i = 0; i < format->planesCount; ++i) {
- format->planes[i].bpl = pix->plane_fmt[i].bytesperline;
- format->planes[i].size = pix->plane_fmt[i].sizeimage;
- }
-
- return 0;
-}
-
-int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)
-{
- struct v4l2_format v4l2Format = {};
- struct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;
- int ret;
-
- v4l2Format.type = bufferType_;
- pix->width = format->width;
- pix->height = format->height;
- pix->pixelformat = format->fourcc;
- pix->num_planes = format->planesCount;
- pix->field = V4L2_FIELD_NONE;
-
- for (unsigned int i = 0; i < pix->num_planes; ++i) {
- pix->plane_fmt[i].bytesperline = format->planes[i].bpl;
- pix->plane_fmt[i].sizeimage = format->planes[i].size;
- }
-
- ret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);
- if (ret) {
- ret = -errno;
- LOG(V4L2, Error) << "Unable to set format: " << strerror(-ret);
- return ret;
- }
-
- /*
- * Return to caller the format actually applied on the device,
- * which might differ from the requested one.
- */
- format->width = pix->width;
- format->height = pix->height;
- format->fourcc = pix->pixelformat;
- format->planesCount = pix->num_planes;
- for (unsigned int i = 0; i < format->planesCount; ++i) {
- format->planes[i].bpl = pix->plane_fmt[i].bytesperline;
- format->planes[i].size = pix->plane_fmt[i].sizeimage;
- }
-
- return 0;
-}
-
-int V4L2Device::requestBuffers(unsigned int count)
-{
- struct v4l2_requestbuffers rb = {};
- int ret;
-
- rb.count = count;
- rb.type = bufferType_;
- rb.memory = memoryType_;
-
- ret = ioctl(fd_, VIDIOC_REQBUFS, &rb);
- if (ret < 0) {
- ret = -errno;
- LOG(V4L2, Error)
- << "Unable to request " << count << " buffers: "
- << strerror(-ret);
- return ret;
- }
-
- LOG(V4L2, Debug) << rb.count << " buffers requested.";
-
- return rb.count;
-}
-
/**
* \brief Request buffers to be allocated from the device and stored in the
* buffer pool provided.
@@ -649,37 +495,6 @@ int V4L2Device::exportBuffers(BufferPool *pool)
return 0;
}
-int V4L2Device::createPlane(Buffer *buffer, unsigned int planeIndex,
- unsigned int length)
-{
- struct v4l2_exportbuffer expbuf = {};
- int ret;
-
- LOG(V4L2, Debug)
- << "Buffer " << buffer->index()
- << " plane " << planeIndex
- << ": length=" << length;
-
- expbuf.type = bufferType_;
- expbuf.index = buffer->index();
- expbuf.plane = planeIndex;
- expbuf.flags = O_RDWR;
-
- ret = ioctl(fd_, VIDIOC_EXPBUF, &expbuf);
- if (ret < 0) {
- ret = -errno;
- LOG(V4L2, Error)
- << "Failed to export buffer: " << strerror(-ret);
- return ret;
- }
-
- buffer->planes().emplace_back();
- Plane &plane = buffer->planes().back();
- plane.setDmabuf(expbuf.fd, length);
-
- return 0;
-}
-
/**
* \brief Import the externally allocated \a pool of buffers
* \param[in] pool BufferPool of buffers to import
@@ -790,6 +605,11 @@ int V4L2Device::queueBuffer(Buffer *buffer)
return 0;
}
+/**
+ * \var V4L2Device::bufferReady
+ * \brief A Signal emitted when a buffer completes
+ */
+
/**
* \brief Dequeue the next available buffer from the device
*
@@ -860,11 +680,6 @@ void V4L2Device::bufferAvailable(EventNotifier *notifier)
buffer->completed.emit(buffer);
}
-/**
- * \var V4L2Device::bufferReady
- * \brief A Signal emitted when a buffer completes
- */
-
/**
* \brief Start the video stream
*
@@ -910,4 +725,189 @@ int V4L2Device::streamOff()
return 0;
}
+std::string V4L2Device::logPrefix() const
+{
+ return deviceNode_;
+}
+
+int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)
+{
+ struct v4l2_format v4l2Format = {};
+ struct v4l2_pix_format *pix = &v4l2Format.fmt.pix;
+ int ret;
+
+ v4l2Format.type = bufferType_;
+ ret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);
+ if (ret) {
+ ret = -errno;
+ LOG(V4L2, Error) << "Unable to get format: " << strerror(-ret);
+ return ret;
+ }
+
+ format->width = pix->width;
+ format->height = pix->height;
+ format->fourcc = pix->pixelformat;
+ format->planesCount = 1;
+ format->planes[0].bpl = pix->bytesperline;
+ format->planes[0].size = pix->sizeimage;
+
+ return 0;
+}
+
+int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)
+{
+ struct v4l2_format v4l2Format = {};
+ struct v4l2_pix_format *pix = &v4l2Format.fmt.pix;
+ int ret;
+
+ v4l2Format.type = bufferType_;
+ pix->width = format->width;
+ pix->height = format->height;
+ pix->pixelformat = format->fourcc;
+ pix->bytesperline = format->planes[0].bpl;
+ pix->field = V4L2_FIELD_NONE;
+
+ ret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);
+ if (ret) {
+ ret = -errno;
+ LOG(V4L2, Error) << "Unable to set format: " << strerror(-ret);
+ return ret;
+ }
+
+ /*
+ * Return to caller the format actually applied on the device,
+ * which might differ from the requested one.
+ */
+ format->width = pix->width;
+ format->height = pix->height;
+ format->fourcc = pix->pixelformat;
+ format->planesCount = 1;
+ format->planes[0].bpl = pix->bytesperline;
+ format->planes[0].size = pix->sizeimage;
+
+ return 0;
+}
+
+int V4L2Device::getFormatMultiplane(V4L2DeviceFormat *format)
+{
+ struct v4l2_format v4l2Format = {};
+ struct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;
+ int ret;
+
+ v4l2Format.type = bufferType_;
+ ret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);
+ if (ret) {
+ ret = -errno;
+ LOG(V4L2, Error) << "Unable to get format: " << strerror(-ret);
+ return ret;
+ }
+
+ format->width = pix->width;
+ format->height = pix->height;
+ format->fourcc = pix->pixelformat;
+ format->planesCount = pix->num_planes;
+
+ for (unsigned int i = 0; i < format->planesCount; ++i) {
+ format->planes[i].bpl = pix->plane_fmt[i].bytesperline;
+ format->planes[i].size = pix->plane_fmt[i].sizeimage;
+ }
+
+ return 0;
+}
+
+int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)
+{
+ struct v4l2_format v4l2Format = {};
+ struct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;
+ int ret;
+
+ v4l2Format.type = bufferType_;
+ pix->width = format->width;
+ pix->height = format->height;
+ pix->pixelformat = format->fourcc;
+ pix->num_planes = format->planesCount;
+ pix->field = V4L2_FIELD_NONE;
+
+ for (unsigned int i = 0; i < pix->num_planes; ++i) {
+ pix->plane_fmt[i].bytesperline = format->planes[i].bpl;
+ pix->plane_fmt[i].sizeimage = format->planes[i].size;
+ }
+
+ ret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);
+ if (ret) {
+ ret = -errno;
+ LOG(V4L2, Error) << "Unable to set format: " << strerror(-ret);
+ return ret;
+ }
+
+ /*
+ * Return to caller the format actually applied on the device,
+ * which might differ from the requested one.
+ */
+ format->width = pix->width;
+ format->height = pix->height;
+ format->fourcc = pix->pixelformat;
+ format->planesCount = pix->num_planes;
+ for (unsigned int i = 0; i < format->planesCount; ++i) {
+ format->planes[i].bpl = pix->plane_fmt[i].bytesperline;
+ format->planes[i].size = pix->plane_fmt[i].sizeimage;
+ }
+
+ return 0;
+}
+
+int V4L2Device::requestBuffers(unsigned int count)
+{
+ struct v4l2_requestbuffers rb = {};
+ int ret;
+
+ rb.count = count;
+ rb.type = bufferType_;
+ rb.memory = memoryType_;
+
+ ret = ioctl(fd_, VIDIOC_REQBUFS, &rb);
+ if (ret < 0) {
+ ret = -errno;
+ LOG(V4L2, Error)
+ << "Unable to request " << count << " buffers: "
+ << strerror(-ret);
+ return ret;
+ }
+
+ LOG(V4L2, Debug) << rb.count << " buffers requested.";
+
+ return rb.count;
+}
+
+int V4L2Device::createPlane(Buffer *buffer, unsigned int planeIndex,
+ unsigned int length)
+{
+ struct v4l2_exportbuffer expbuf = {};
+ int ret;
+
+ LOG(V4L2, Debug)
+ << "Buffer " << buffer->index()
+ << " plane " << planeIndex
+ << ": length=" << length;
+
+ expbuf.type = bufferType_;
+ expbuf.index = buffer->index();
+ expbuf.plane = planeIndex;
+ expbuf.flags = O_RDWR;
+
+ ret = ioctl(fd_, VIDIOC_EXPBUF, &expbuf);
+ if (ret < 0) {
+ ret = -errno;
+ LOG(V4L2, Error)
+ << "Failed to export buffer: " << strerror(-ret);
+ return ret;
+ }
+
+ buffer->planes().emplace_back();
+ Plane &plane = buffer->planes().back();
+ plane.setDmabuf(expbuf.fd, length);
+
+ return 0;
+}
+
} /* namespace libcamera */
--
2.20.1
More information about the libcamera-devel
mailing list