[{"id":4017,"web_url":"https://patchwork.libcamera.org/comment/4017/","msgid":"<20200316064228.GF4732@pendragon.ideasonboard.com>","date":"2020-03-16T06:42:28","subject":"Re: [libcamera-devel] [PATCH 1/4] libcamera: Use PixelFormat\n\tinstead of unsigned int where appropriate","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 Mon, Mar 16, 2020 at 03:40:33AM +0100, Niklas Söderlund wrote:\n> Use the PixelFormat instead of unsigned int where a pixel format is to\n> be used. PixelFormat is defined as an unsigned int but is about to be\n> turned into a class to add functionality.\n> \n> There is no functional change in this patch.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/cam/main.cpp                     |  2 +-\n>  src/gstreamer/gstlibcamera-utils.cpp | 10 +++++-----\n>  src/libcamera/pipeline/ipu3/ipu3.cpp |  2 +-\n>  src/libcamera/pipeline/uvcvideo.cpp  |  4 ++--\n>  src/libcamera/pipeline/vimc.cpp      |  2 +-\n>  src/qcam/format_converter.cpp        |  2 +-\n>  src/qcam/format_converter.h          |  6 ++++--\n>  src/qcam/viewfinder.cpp              |  2 +-\n>  src/qcam/viewfinder.h                |  6 ++++--\n>  9 files changed, 20 insertions(+), 16 deletions(-)\n> \n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index ea6f7914839c703e..af516f1cbf23974a 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -303,7 +303,7 @@ int CamApp::infoConfiguration()\n>  \t\tstd::cout << index << \": \" << cfg.toString() << std::endl;\n>  \n>  \t\tconst StreamFormats &formats = cfg.formats();\n> -\t\tfor (unsigned int pixelformat : formats.pixelformats()) {\n> +\t\tfor (PixelFormat pixelformat : formats.pixelformats()) {\n>  \t\t\tstd::cout << \" * Pixelformat: 0x\" << std::hex\n>  \t\t\t\t  << std::setw(8) << pixelformat << \" \"\n>  \t\t\t\t  << formats.range(pixelformat).toString()\n> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp\n> index 44a993fa6b6f4da1..3b3973bcea3dc759 100644\n> --- a/src/gstreamer/gstlibcamera-utils.cpp\n> +++ b/src/gstreamer/gstlibcamera-utils.cpp\n> @@ -79,16 +79,16 @@ gst_libcamera_stream_formats_to_caps(const StreamFormats &formats)\n>  {\n>  \tGstCaps *caps = gst_caps_new_empty();\n>  \n> -\tfor (unsigned int fourcc : formats.pixelformats()) {\n> -\t\tg_autoptr(GstStructure) bare_s = bare_structure_from_fourcc(fourcc);\n> +\tfor (PixelFormat pixelformat : formats.pixelformats()) {\n> +\t\tg_autoptr(GstStructure) bare_s = bare_structure_from_fourcc(pixelformat);\n>  \n>  \t\tif (!bare_s) {\n>  \t\t\tGST_WARNING(\"Unsupported DRM format %\" GST_FOURCC_FORMAT,\n> -\t\t\t\t    GST_FOURCC_ARGS(fourcc));\n> +\t\t\t\t    GST_FOURCC_ARGS(pixelformat));\n>  \t\t\tcontinue;\n>  \t\t}\n>  \n> -\t\tfor (const Size &size : formats.sizes(fourcc)) {\n> +\t\tfor (const Size &size : formats.sizes(pixelformat)) {\n>  \t\t\tGstStructure *s = gst_structure_copy(bare_s);\n>  \t\t\tgst_structure_set(s,\n>  \t\t\t\t\t  \"width\", G_TYPE_INT, size.width,\n> @@ -97,7 +97,7 @@ gst_libcamera_stream_formats_to_caps(const StreamFormats &formats)\n>  \t\t\tgst_caps_append_structure(caps, s);\n>  \t\t}\n>  \n> -\t\tconst SizeRange &range = formats.range(fourcc);\n> +\t\tconst SizeRange &range = formats.range(pixelformat);\n>  \t\tif (range.hStep && range.vStep) {\n>  \t\t\tGstStructure *s = gst_structure_copy(bare_s);\n>  \t\t\tGValue val = G_VALUE_INIT;\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 6b93c50978a76630..0c2a217c9ea8f6ba 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -348,7 +348,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()\n>  \n>  \tfor (unsigned int i = 0; i < config_.size(); ++i) {\n>  \t\tStreamConfiguration &cfg = config_[i];\n> -\t\tconst unsigned int pixelFormat = cfg.pixelFormat;\n> +\t\tconst PixelFormat pixelFormat = cfg.pixelFormat;\n>  \t\tconst Size size = cfg.size;\n>  \t\tconst IPU3Stream *stream;\n>  \n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index 40cc3ee7d0987ba9..320da2685795c041 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -105,10 +105,10 @@ CameraConfiguration::Status UVCCameraConfiguration::validate()\n>  \n>  \tStreamConfiguration &cfg = config_[0];\n>  \tconst StreamFormats &formats = cfg.formats();\n> -\tconst unsigned int pixelFormat = cfg.pixelFormat;\n> +\tconst PixelFormat pixelFormat = cfg.pixelFormat;\n>  \tconst Size size = cfg.size;\n>  \n> -\tconst std::vector<unsigned int> pixelFormats = formats.pixelformats();\n> +\tconst std::vector<PixelFormat> pixelFormats = formats.pixelformats();\n>  \tauto iter = std::find(pixelFormats.begin(), pixelFormats.end(), pixelFormat);\n>  \tif (iter == pixelFormats.end()) {\n>  \t\tcfg.pixelFormat = pixelFormats.front();\n> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\n> index eceb16d5586acf09..8792dfe48ed8db31 100644\n> --- a/src/libcamera/pipeline/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc.cpp\n> @@ -175,7 +175,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n>  \n>  \tImageFormats formats;\n>  \n> -\tfor (unsigned int pixelformat : pixelformats) {\n> +\tfor (PixelFormat pixelformat : pixelformats) {\n>  \t\t/* The scaler hardcodes a x3 scale-up ratio. */\n>  \t\tstd::vector<SizeRange> sizes{\n>  \t\t\tSizeRange{ 48, 48, 4096, 2160 }\n> diff --git a/src/qcam/format_converter.cpp b/src/qcam/format_converter.cpp\n> index 383d482231400a44..368cb43fbf17ae4d 100644\n> --- a/src/qcam/format_converter.cpp\n> +++ b/src/qcam/format_converter.cpp\n> @@ -27,7 +27,7 @@\n>  #define CLIP(x)\t\t\tCLAMP(x,0,255)\n>  #endif\n>  \n> -int FormatConverter::configure(unsigned int format, unsigned int width,\n> +int FormatConverter::configure(libcamera::PixelFormat format, unsigned int width,\n>  \t\t\t       unsigned int height)\n>  {\n>  \tswitch (format) {\n> diff --git a/src/qcam/format_converter.h b/src/qcam/format_converter.h\n> index 391e6a44d4ba7d4b..ff488b994ade3c3e 100644\n> --- a/src/qcam/format_converter.h\n> +++ b/src/qcam/format_converter.h\n> @@ -9,12 +9,14 @@\n>  \n>  #include <stddef.h>\n>  \n> +#include <libcamera/pixelformats.h>\n> +\n>  class QImage;\n>  \n>  class FormatConverter\n>  {\n>  public:\n> -\tint configure(unsigned int format, unsigned int width,\n> +\tint configure(libcamera::PixelFormat format, unsigned int width,\n>  \t\t      unsigned int height);\n>  \n>  \tvoid convert(const unsigned char *src, size_t size, QImage *dst);\n> @@ -31,7 +33,7 @@ private:\n>  \tvoid convertRGB(const unsigned char *src, unsigned char *dst);\n>  \tvoid convertYUV(const unsigned char *src, unsigned char *dst);\n>  \n> -\tunsigned int format_;\n> +\tlibcamera::PixelFormat format_;\n>  \tunsigned int width_;\n>  \tunsigned int height_;\n>  \n> diff --git a/src/qcam/viewfinder.cpp b/src/qcam/viewfinder.cpp\n> index d51eebb10aef8663..0ebb8edd49efd1b1 100644\n> --- a/src/qcam/viewfinder.cpp\n> +++ b/src/qcam/viewfinder.cpp\n> @@ -44,7 +44,7 @@ QImage ViewFinder::getCurrentImage()\n>  \treturn image_->copy();\n>  }\n>  \n> -int ViewFinder::setFormat(unsigned int format, unsigned int width,\n> +int ViewFinder::setFormat(libcamera::PixelFormat format, unsigned int width,\n>  \t\t\t  unsigned int height)\n>  {\n>  \tint ret;\n> diff --git a/src/qcam/viewfinder.h b/src/qcam/viewfinder.h\n> index 2ba28b60345b0cb3..2668aa4457657ef9 100644\n> --- a/src/qcam/viewfinder.h\n> +++ b/src/qcam/viewfinder.h\n> @@ -10,6 +10,8 @@\n>  #include <QMutex>\n>  #include <QWidget>\n>  \n> +#include <libcamera/pixelformats.h>\n> +\n>  #include \"format_converter.h\"\n>  \n>  class QImage;\n> @@ -20,7 +22,7 @@ public:\n>  \tViewFinder(QWidget *parent);\n>  \t~ViewFinder();\n>  \n> -\tint setFormat(unsigned int format, unsigned int width,\n> +\tint setFormat(libcamera::PixelFormat format, unsigned int width,\n>  \t\t      unsigned int height);\n>  \tvoid display(const unsigned char *rgb, size_t size);\n>  \n> @@ -31,7 +33,7 @@ protected:\n>  \tQSize sizeHint() const override;\n>  \n>  private:\n> -\tunsigned int format_;\n> +\tlibcamera::PixelFormat format_;\n>  \tunsigned int width_;\n>  \tunsigned int height_;\n>  \n> -- \n> 2.25.1\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 CEDC960417\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Mar 2020 07:42:33 +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 344282D6;\n\tMon, 16 Mar 2020 07:42:33 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1584340953;\n\tbh=HCMKtENDLM1GUmZVsPVM9+foDxzXyTPEn2eIP1BYN8Y=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=eXTk1Kyw/8jn3flPMBGF4JzhStvna0+6cN0MZ3pkh1xgP+XPypptNLiCwCzjtu5Sk\n\tol1bQVm93Yc7CAY5O0o3PzuG6eQ7aS5bxDjfcyZQ+lWh4MuomZI/GQx3j4SwPqKbiM\n\tu9a9+Isf0776spIKECvxkO1LfeDbG7ZAJN1Awmnw=","Date":"Mon, 16 Mar 2020 08:42:28 +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":"<20200316064228.GF4732@pendragon.ideasonboard.com>","References":"<20200316024036.2474307-1-niklas.soderlund@ragnatech.se>\n\t<20200316024036.2474307-2-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":"<20200316024036.2474307-2-niklas.soderlund@ragnatech.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 1/4] libcamera: Use PixelFormat\n\tinstead of unsigned int where appropriate","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":"Mon, 16 Mar 2020 06:42:34 -0000"}}]