[libcamera-devel,v6,5/5] libcamera: v4l2_device: Cosmetic update

Message ID 20190301115139.11060-6-jacopo@jmondi.org
State Superseded
Headers show
Series
  • v4l2_(sub)dev: improvements and tests
Related show

Commit Message

Jacopo Mondi March 1, 2019, 11:51 a.m. UTC
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@jmondi.org>
---
 src/libcamera/v4l2_device.cpp | 412 +++++++++++++++++-----------------
 1 file changed, 206 insertions(+), 206 deletions(-)

Comments

Laurent Pinchart March 1, 2019, 1:01 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Fri, Mar 01, 2019 at 12:51:39PM +0100, Jacopo Mondi wrote:
> 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@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;
> -}

Those four methods were deliberately put here to be grouped with the
get/setFormat() methods. The consensus was that methods should be
ordered the same way in .h and .cpp files, but exceptions are allowed to
group related methods together, as long as the ordering within each
access group (public, protected, private) is identical between .h and
.cpp.

You can have my

Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

for the part of this patch that removes return types.

> -
> -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 */

Patch

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 */