[{"id":994,"web_url":"https://patchwork.libcamera.org/comment/994/","msgid":"<20190301130136.GI26239@pendragon.ideasonboard.com>","date":"2019-03-01T13:01:36","subject":"Re: [libcamera-devel] [PATCH v6 5/5] libcamera: v4l2_device:\n\tCosmetic update","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Fri, Mar 01, 2019 at 12:51:39PM +0100, Jacopo Mondi wrote:\n> Cosmetic update of V4L2Device class:\n> - remove the return type from Doxygen documentation of inline functions\n> - re-sort methods implementation to reflect the declaration order in the\n> class definition\n> \n> Cosmetic update, no functional changes intended.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/libcamera/v4l2_device.cpp | 412 +++++++++++++++++-----------------\n>  1 file changed, 206 insertions(+), 206 deletions(-)\n> \n> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\n> index b19cf9f78029..5f2cf4846c65 100644\n> --- a/src/libcamera/v4l2_device.cpp\n> +++ b/src/libcamera/v4l2_device.cpp\n> @@ -37,56 +37,56 @@ LOG_DEFINE_CATEGORY(V4L2)\n>   */\n>  \n>  /**\n> - * \\fn const char *V4L2Capability::driver()\n> + * \\fn V4L2Capability::driver()\n>   * \\brief Retrieve the driver module name\n>   * \\return The string containing the name of the driver module\n>   */\n>  \n>  /**\n> - * \\fn const char *V4L2Capability::card()\n> + * \\fn V4L2Capability::card()\n>   * \\brief Retrieve the device card name\n>   * \\return The string containing the device name\n>   */\n>  \n>  /**\n> - * \\fn const char *V4L2Capability::bus_info()\n> + * \\fn V4L2Capability::bus_info()\n>   * \\brief Retrieve the location of the device in the system\n>   * \\return The string containing the device location\n>   */\n>  \n>  /**\n> - * \\fn unsigned int V4L2Capability::device_caps()\n> + * \\fn V4L2Capability::device_caps()\n>   * \\brief Retrieve the capabilities of the device\n>   * \\return The device specific capabilities if V4L2_CAP_DEVICE_CAPS is set or\n>   * \t   driver capabilities otherwise\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isMultiplanar()\n> + * \\fn V4L2Capability::isMultiplanar()\n>   * \\brief Identify if the device implements the V4L2 multiplanar APIs\n>   * \\return True if the device supports multiplanar APIs\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isCapture()\n> + * \\fn V4L2Capability::isCapture()\n>   * \\brief Identify if the device captures data\n>   * \\return True if the device can capture data\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isOutput()\n> + * \\fn V4L2Capability::isOutput()\n>   * \\brief Identify if the device outputs data\n>   * \\return True if the device can output data\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isVideo()\n> + * \\fn V4L2Capability::isVideo()\n>   * \\brief Identify if the device captures or outputs images\n>   * \\return True if the device can capture or output images\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isMeta()\n> + * \\fn V4L2Capability::isMeta()\n>   * \\brief Identify if the device captures or outputs image meta-data\n>   *\n>   * \\todo Add support for META_CAPTURE introduced in Linux v5.0\n> @@ -95,25 +95,25 @@ LOG_DEFINE_CATEGORY(V4L2)\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isVideoCapture()\n> + * \\fn V4L2Capability::isVideoCapture()\n>   * \\brief Identify if the device captures images\n>   * \\return True if the device can capture images\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isVideoOutput()\n> + * \\fn V4L2Capability::isVideoOutput()\n>   * \\brief Identify if the device outputs images\n>   * \\return True if the device can output images\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::isMetaCapture()\n> + * \\fn V4L2Capability::isMetaCapture()\n>   * \\brief Identify if the device captures image meta-data\n>   * \\return True if the device can capture image meta-data\n>   */\n>  \n>  /**\n> - * \\fn bool V4L2Capability::hasStreaming()\n> + * \\fn V4L2Capability::hasStreaming()\n>   * \\brief Determine if the device can perform Streaming I/O\n>   * \\return True if the device provides Streaming I/O IOCTLs\n>   */\n> @@ -371,19 +371,19 @@ void V4L2Device::close()\n>  }\n>  \n>  /**\n> - * \\fn const char *V4L2Device::driverName()\n> + * \\fn V4L2Device::driverName()\n>   * \\brief Retrieve the name of the V4L2 device driver\n>   * \\return The string containing the driver name\n>   */\n>  \n>  /**\n> - * \\fn const char *V4L2Device::deviceName()\n> + * \\fn V4L2Device::deviceName()\n>   * \\brief Retrieve the name of the V4L2 device\n>   * \\return The string containing the device name\n>   */\n>  \n>  /**\n> - * \\fn const char *V4L2Device::busName()\n> + * \\fn V4L2Device::busName()\n>   * \\brief Retrieve the location of the device in the system\n>   * \\return The string containing the device location\n>   */\n> @@ -394,11 +394,6 @@ void V4L2Device::close()\n>   * \\return The video device device node path\n>   */\n>  \n> -std::string V4L2Device::logPrefix() const\n> -{\n> -\treturn deviceNode_;\n> -}\n> -\n>  /**\n>   * \\brief Retrieve the image format set on the V4L2 device\n>   * \\param[out] format The image format applied on the device\n> @@ -426,155 +421,6 @@ int V4L2Device::setFormat(V4L2DeviceFormat *format)\n>  \t\t\t\t       setFormatSingleplane(format);\n>  }\n>  \n> -int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> -{\n> -\tstruct v4l2_format v4l2Format = {};\n> -\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> -\tint ret;\n> -\n> -\tv4l2Format.type = bufferType_;\n> -\tret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);\n> -\tif (ret) {\n> -\t\tret = -errno;\n> -\t\tLOG(V4L2, Error) << \"Unable to get format: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\tformat->width = pix->width;\n> -\tformat->height = pix->height;\n> -\tformat->fourcc = pix->pixelformat;\n> -\tformat->planesCount = 1;\n> -\tformat->planes[0].bpl = pix->bytesperline;\n> -\tformat->planes[0].size = pix->sizeimage;\n> -\n> -\treturn 0;\n> -}\n> -\n> -int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> -{\n> -\tstruct v4l2_format v4l2Format = {};\n> -\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> -\tint ret;\n> -\n> -\tv4l2Format.type = bufferType_;\n> -\tpix->width = format->width;\n> -\tpix->height = format->height;\n> -\tpix->pixelformat = format->fourcc;\n> -\tpix->bytesperline = format->planes[0].bpl;\n> -\tpix->field = V4L2_FIELD_NONE;\n> -\n> -\tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> -\tif (ret) {\n> -\t\tret = -errno;\n> -\t\tLOG(V4L2, Error) << \"Unable to set format: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\t/*\n> -\t * Return to caller the format actually applied on the device,\n> -\t * which might differ from the requested one.\n> -\t */\n> -\tformat->width = pix->width;\n> -\tformat->height = pix->height;\n> -\tformat->fourcc = pix->pixelformat;\n> -\tformat->planesCount = 1;\n> -\tformat->planes[0].bpl = pix->bytesperline;\n> -\tformat->planes[0].size = pix->sizeimage;\n> -\n> -\treturn 0;\n> -}\n> -\n> -int V4L2Device::getFormatMultiplane(V4L2DeviceFormat *format)\n> -{\n> -\tstruct v4l2_format v4l2Format = {};\n> -\tstruct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;\n> -\tint ret;\n> -\n> -\tv4l2Format.type = bufferType_;\n> -\tret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);\n> -\tif (ret) {\n> -\t\tret = -errno;\n> -\t\tLOG(V4L2, Error) << \"Unable to get format: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\tformat->width = pix->width;\n> -\tformat->height = pix->height;\n> -\tformat->fourcc = pix->pixelformat;\n> -\tformat->planesCount = pix->num_planes;\n> -\n> -\tfor (unsigned int i = 0; i < format->planesCount; ++i) {\n> -\t\tformat->planes[i].bpl = pix->plane_fmt[i].bytesperline;\n> -\t\tformat->planes[i].size = pix->plane_fmt[i].sizeimage;\n> -\t}\n> -\n> -\treturn 0;\n> -}\n> -\n> -int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)\n> -{\n> -\tstruct v4l2_format v4l2Format = {};\n> -\tstruct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;\n> -\tint ret;\n> -\n> -\tv4l2Format.type = bufferType_;\n> -\tpix->width = format->width;\n> -\tpix->height = format->height;\n> -\tpix->pixelformat = format->fourcc;\n> -\tpix->num_planes = format->planesCount;\n> -\tpix->field = V4L2_FIELD_NONE;\n> -\n> -\tfor (unsigned int i = 0; i < pix->num_planes; ++i) {\n> -\t\tpix->plane_fmt[i].bytesperline = format->planes[i].bpl;\n> -\t\tpix->plane_fmt[i].sizeimage = format->planes[i].size;\n> -\t}\n> -\n> -\tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> -\tif (ret) {\n> -\t\tret = -errno;\n> -\t\tLOG(V4L2, Error) << \"Unable to set format: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\t/*\n> -\t * Return to caller the format actually applied on the device,\n> -\t * which might differ from the requested one.\n> -\t */\n> -\tformat->width = pix->width;\n> -\tformat->height = pix->height;\n> -\tformat->fourcc = pix->pixelformat;\n> -\tformat->planesCount = pix->num_planes;\n> -\tfor (unsigned int i = 0; i < format->planesCount; ++i) {\n> -\t\tformat->planes[i].bpl = pix->plane_fmt[i].bytesperline;\n> -\t\tformat->planes[i].size = pix->plane_fmt[i].sizeimage;\n> -\t}\n> -\n> -\treturn 0;\n> -}\n\nThose four methods were deliberately put here to be grouped with the\nget/setFormat() methods. The consensus was that methods should be\nordered the same way in .h and .cpp files, but exceptions are allowed to\ngroup related methods together, as long as the ordering within each\naccess group (public, protected, private) is identical between .h and\n.cpp.\n\nYou can have my\n\nAcked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nfor the part of this patch that removes return types.\n\n> -\n> -int V4L2Device::requestBuffers(unsigned int count)\n> -{\n> -\tstruct v4l2_requestbuffers rb = {};\n> -\tint ret;\n> -\n> -\trb.count = count;\n> -\trb.type = bufferType_;\n> -\trb.memory = memoryType_;\n> -\n> -\tret = ioctl(fd_, VIDIOC_REQBUFS, &rb);\n> -\tif (ret < 0) {\n> -\t\tret = -errno;\n> -\t\tLOG(V4L2, Error)\n> -\t\t\t<< \"Unable to request \" << count << \" buffers: \"\n> -\t\t\t<< strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\tLOG(V4L2, Debug) << rb.count << \" buffers requested.\";\n> -\n> -\treturn rb.count;\n> -}\n> -\n>  /**\n>   * \\brief Request buffers to be allocated from the device and stored in the\n>   *  buffer pool provided.\n> @@ -649,37 +495,6 @@ int V4L2Device::exportBuffers(BufferPool *pool)\n>  \treturn 0;\n>  }\n>  \n> -int V4L2Device::createPlane(Buffer *buffer, unsigned int planeIndex,\n> -\t\t\t    unsigned int length)\n> -{\n> -\tstruct v4l2_exportbuffer expbuf = {};\n> -\tint ret;\n> -\n> -\tLOG(V4L2, Debug)\n> -\t\t<< \"Buffer \" << buffer->index()\n> -\t\t<< \" plane \" << planeIndex\n> -\t\t<< \": length=\" << length;\n> -\n> -\texpbuf.type = bufferType_;\n> -\texpbuf.index = buffer->index();\n> -\texpbuf.plane = planeIndex;\n> -\texpbuf.flags = O_RDWR;\n> -\n> -\tret = ioctl(fd_, VIDIOC_EXPBUF, &expbuf);\n> -\tif (ret < 0) {\n> -\t\tret = -errno;\n> -\t\tLOG(V4L2, Error)\n> -\t\t\t<< \"Failed to export buffer: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\tbuffer->planes().emplace_back();\n> -\tPlane &plane = buffer->planes().back();\n> -\tplane.setDmabuf(expbuf.fd, length);\n> -\n> -\treturn 0;\n> -}\n> -\n>  /**\n>   * \\brief Import the externally allocated \\a pool of buffers\n>   * \\param[in] pool BufferPool of buffers to import\n> @@ -790,6 +605,11 @@ int V4L2Device::queueBuffer(Buffer *buffer)\n>  \treturn 0;\n>  }\n>  \n> +/**\n> + * \\var V4L2Device::bufferReady\n> + * \\brief A Signal emitted when a buffer completes\n> + */\n> +\n>  /**\n>   * \\brief Dequeue the next available buffer from the device\n>   *\n> @@ -860,11 +680,6 @@ void V4L2Device::bufferAvailable(EventNotifier *notifier)\n>  \tbuffer->completed.emit(buffer);\n>  }\n>  \n> -/**\n> - * \\var V4L2Device::bufferReady\n> - * \\brief A Signal emitted when a buffer completes\n> - */\n> -\n>  /**\n>   * \\brief Start the video stream\n>   *\n> @@ -910,4 +725,189 @@ int V4L2Device::streamOff()\n>  \treturn 0;\n>  }\n>  \n> +std::string V4L2Device::logPrefix() const\n> +{\n> +\treturn deviceNode_;\n> +}\n> +\n> +int V4L2Device::getFormatSingleplane(V4L2DeviceFormat *format)\n> +{\n> +\tstruct v4l2_format v4l2Format = {};\n> +\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> +\tint ret;\n> +\n> +\tv4l2Format.type = bufferType_;\n> +\tret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);\n> +\tif (ret) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error) << \"Unable to get format: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tformat->width = pix->width;\n> +\tformat->height = pix->height;\n> +\tformat->fourcc = pix->pixelformat;\n> +\tformat->planesCount = 1;\n> +\tformat->planes[0].bpl = pix->bytesperline;\n> +\tformat->planes[0].size = pix->sizeimage;\n> +\n> +\treturn 0;\n> +}\n> +\n> +int V4L2Device::setFormatSingleplane(V4L2DeviceFormat *format)\n> +{\n> +\tstruct v4l2_format v4l2Format = {};\n> +\tstruct v4l2_pix_format *pix = &v4l2Format.fmt.pix;\n> +\tint ret;\n> +\n> +\tv4l2Format.type = bufferType_;\n> +\tpix->width = format->width;\n> +\tpix->height = format->height;\n> +\tpix->pixelformat = format->fourcc;\n> +\tpix->bytesperline = format->planes[0].bpl;\n> +\tpix->field = V4L2_FIELD_NONE;\n> +\n> +\tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> +\tif (ret) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error) << \"Unable to set format: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\t/*\n> +\t * Return to caller the format actually applied on the device,\n> +\t * which might differ from the requested one.\n> +\t */\n> +\tformat->width = pix->width;\n> +\tformat->height = pix->height;\n> +\tformat->fourcc = pix->pixelformat;\n> +\tformat->planesCount = 1;\n> +\tformat->planes[0].bpl = pix->bytesperline;\n> +\tformat->planes[0].size = pix->sizeimage;\n> +\n> +\treturn 0;\n> +}\n> +\n> +int V4L2Device::getFormatMultiplane(V4L2DeviceFormat *format)\n> +{\n> +\tstruct v4l2_format v4l2Format = {};\n> +\tstruct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;\n> +\tint ret;\n> +\n> +\tv4l2Format.type = bufferType_;\n> +\tret = ioctl(fd_, VIDIOC_G_FMT, &v4l2Format);\n> +\tif (ret) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error) << \"Unable to get format: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tformat->width = pix->width;\n> +\tformat->height = pix->height;\n> +\tformat->fourcc = pix->pixelformat;\n> +\tformat->planesCount = pix->num_planes;\n> +\n> +\tfor (unsigned int i = 0; i < format->planesCount; ++i) {\n> +\t\tformat->planes[i].bpl = pix->plane_fmt[i].bytesperline;\n> +\t\tformat->planes[i].size = pix->plane_fmt[i].sizeimage;\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +\n> +int V4L2Device::setFormatMultiplane(V4L2DeviceFormat *format)\n> +{\n> +\tstruct v4l2_format v4l2Format = {};\n> +\tstruct v4l2_pix_format_mplane *pix = &v4l2Format.fmt.pix_mp;\n> +\tint ret;\n> +\n> +\tv4l2Format.type = bufferType_;\n> +\tpix->width = format->width;\n> +\tpix->height = format->height;\n> +\tpix->pixelformat = format->fourcc;\n> +\tpix->num_planes = format->planesCount;\n> +\tpix->field = V4L2_FIELD_NONE;\n> +\n> +\tfor (unsigned int i = 0; i < pix->num_planes; ++i) {\n> +\t\tpix->plane_fmt[i].bytesperline = format->planes[i].bpl;\n> +\t\tpix->plane_fmt[i].sizeimage = format->planes[i].size;\n> +\t}\n> +\n> +\tret = ioctl(fd_, VIDIOC_S_FMT, &v4l2Format);\n> +\tif (ret) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error) << \"Unable to set format: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\t/*\n> +\t * Return to caller the format actually applied on the device,\n> +\t * which might differ from the requested one.\n> +\t */\n> +\tformat->width = pix->width;\n> +\tformat->height = pix->height;\n> +\tformat->fourcc = pix->pixelformat;\n> +\tformat->planesCount = pix->num_planes;\n> +\tfor (unsigned int i = 0; i < format->planesCount; ++i) {\n> +\t\tformat->planes[i].bpl = pix->plane_fmt[i].bytesperline;\n> +\t\tformat->planes[i].size = pix->plane_fmt[i].sizeimage;\n> +\t}\n> +\n> +\treturn 0;\n> +}\n> +\n> +int V4L2Device::requestBuffers(unsigned int count)\n> +{\n> +\tstruct v4l2_requestbuffers rb = {};\n> +\tint ret;\n> +\n> +\trb.count = count;\n> +\trb.type = bufferType_;\n> +\trb.memory = memoryType_;\n> +\n> +\tret = ioctl(fd_, VIDIOC_REQBUFS, &rb);\n> +\tif (ret < 0) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error)\n> +\t\t\t<< \"Unable to request \" << count << \" buffers: \"\n> +\t\t\t<< strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tLOG(V4L2, Debug) << rb.count << \" buffers requested.\";\n> +\n> +\treturn rb.count;\n> +}\n> +\n> +int V4L2Device::createPlane(Buffer *buffer, unsigned int planeIndex,\n> +\t\t\t    unsigned int length)\n> +{\n> +\tstruct v4l2_exportbuffer expbuf = {};\n> +\tint ret;\n> +\n> +\tLOG(V4L2, Debug)\n> +\t\t<< \"Buffer \" << buffer->index()\n> +\t\t<< \" plane \" << planeIndex\n> +\t\t<< \": length=\" << length;\n> +\n> +\texpbuf.type = bufferType_;\n> +\texpbuf.index = buffer->index();\n> +\texpbuf.plane = planeIndex;\n> +\texpbuf.flags = O_RDWR;\n> +\n> +\tret = ioctl(fd_, VIDIOC_EXPBUF, &expbuf);\n> +\tif (ret < 0) {\n> +\t\tret = -errno;\n> +\t\tLOG(V4L2, Error)\n> +\t\t\t<< \"Failed to export buffer: \" << strerror(-ret);\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tbuffer->planes().emplace_back();\n> +\tPlane &plane = buffer->planes().back();\n> +\tplane.setDmabuf(expbuf.fd, length);\n> +\n> +\treturn 0;\n> +}\n> +\n>  } /* namespace libcamera */","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BF0C8610BF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  1 Mar 2019 14:01:42 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 18FC249;\n\tFri,  1 Mar 2019 14:01:42 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1551445302;\n\tbh=53tCQj7b3mV8SA9ZLtufMoSBpHnoMAnJKFWtz0YgalY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=DcBI+nRzn4xbqkM67tX0NWQ82aD68K1HWbYlRkJEx5J3lhQk1xexraUQtP+GJZ2YE\n\tNXIz1TRQu0JGeKPGwBkzc7O4IsAdk0diOgRO+g9aWJJMT308XNO5f6RgdzM+T5R2Ln\n\tfBrhFayPKAXOVFTQkVrLmpsHM9zUTvw67U8bS5tc=","Date":"Fri, 1 Mar 2019 15:01:36 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190301130136.GI26239@pendragon.ideasonboard.com>","References":"<20190301115139.11060-1-jacopo@jmondi.org>\n\t<20190301115139.11060-6-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20190301115139.11060-6-jacopo@jmondi.org>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v6 5/5] libcamera: v4l2_device:\n\tCosmetic update","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Fri, 01 Mar 2019 13:01:43 -0000"}}]