[{"id":4073,"web_url":"https://patchwork.libcamera.org/comment/4073/","msgid":"<20200318125935.GJ4733@pendragon.ideasonboard.com>","date":"2020-03-18T12:59:35","subject":"Re: [libcamera-devel] [PATCH v3 5/8] libcamera: pipeline: uvcvideo:\n\tTranslate from V4L2 to DRM pixel formats","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Wed, Mar 18, 2020 at 04:31:57AM +0100, Niklas Söderlund wrote:\n> When generating a camera configuration pixel formats directly from the\n> video device are used that contains V4L2 pixel formats. Translate the\n> pixel formats to DRM before using them in the camera configuration.\n\nI find the first sentence a bit hard to read. How about the following ?\n\nWhen generating a camera configuration, pixel formats from the video\ndevice are used directly. They however contain V4L2 pixel format\nFourCCs, not DRM pixel format FourCCs. Translate the pixel formats to\nDRM before using them in the camera configuration.\n\n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/libcamera/pipeline/uvcvideo.cpp | 15 +++++++++++++--\n>  1 file changed, 13 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index 320da2685795c041..1de091e0c0e57f7c 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -153,8 +153,19 @@ CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,\n>  \tif (roles.empty())\n>  \t\treturn config;\n>  \n> -\tImageFormats v4l2formats = data->video_->formats();\n> -\tStreamFormats formats(v4l2formats.data());\n> +\tstd::map<unsigned int, std::vector<SizeRange>> v4l2Formats =\n> +\t\tdata->video_->formats().data();\n> +\tstd::map<PixelFormat, std::vector<SizeRange>> deviceFormats;\n> +\tstd::transform(v4l2Formats.begin(), v4l2Formats.end(),\n> +\t\t       std::inserter(deviceFormats, deviceFormats.begin()),\n> +\t\t       [&](const decltype(v4l2Formats)::value_type &format) {\n> +\t\t\t       return decltype(deviceFormats)::value_type{\n> +\t\t\t\t       data->video_->toPixelFormat(format.first),\n> +\t\t\t\t       format.second\n> +\t\t\t       };\n> +\t\t       });\n> +\n> +\tStreamFormats formats(deviceFormats);\n>  \tStreamConfiguration cfg(formats);\n>  \n>  \tcfg.pixelFormat = formats.pixelformats().front();","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F390760418\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Mar 2020 13:59:40 +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 68CD2F9;\n\tWed, 18 Mar 2020 13:59:40 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1584536380;\n\tbh=ulpVQM7PUG7k0cXZJo36e6r5MkdL5OO3vTNqaTbmZnQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=ryTBIbWgP+7Nc9nZlSsYct/HT2jVgMfKoQa/FyUH3Ku7bZmr5UqDqW5DxwknviAwU\n\tVYatHmzPsjzZw0kk+0FIkiPE+BOx4JOI6x96KTE7QWAIs1Aui9faBqJzXhlWubswdm\n\tnvW9e7D3BZm6p6AjIgEBJy2BF6ujUBxHkWGRWyE0=","Date":"Wed, 18 Mar 2020 14:59:35 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20200318125935.GJ4733@pendragon.ideasonboard.com>","References":"<20200318033200.3042855-1-niklas.soderlund@ragnatech.se>\n\t<20200318033200.3042855-6-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20200318033200.3042855-6-niklas.soderlund@ragnatech.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH v3 5/8] libcamera: pipeline: uvcvideo:\n\tTranslate from V4L2 to DRM pixel formats","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","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":"Wed, 18 Mar 2020 12:59:41 -0000"}}]