[{"id":4961,"web_url":"https://patchwork.libcamera.org/comment/4961/","msgid":"<9539b12d-5b16-54e1-7c43-17251d7a286f@ideasonboard.com>","date":"2020-06-02T10:35:43","subject":"Re: [libcamera-devel] [PATCH v4] libcamera: PixelFormat: Replace\n\thex with fourcc and modifiers","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Kaaira,\n\nOn 28/05/2020 14:05, Kaaira Gupta wrote:\n> Print fourCC characters instead of the hex values in toString() as they\n> are easier to comprehend. Also, print the corresponding modifiers for\n> MIPI vendor as it is mostly used in libcamera.\n> \n> Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>\n> ---\n> \n> Changes since v3:\n> \t-shortened the texts.\n> \t-Removed default case as well.\n> \t-changed commit message and tests to reflect the changes.\n> \n> Changes since v2:\n>         - Remove description for all vendors except for MIPI\n>         - Change commit message to reflect this change.\n>         - Change tests accordingly.\n> \n> Changes since v1:\n>         - Replaced magic numbers with expressive values.\n>         - Re-wrote ARM vendor's modifiers\n>         - Re-wrote the vendors' map with a macro.\n>         - Changed the copyrights in test file.\n>         - Changed the tests.\n> \n>  src/libcamera/pixelformats.cpp | 28 +++++++++++++++++---\n>  test/meson.build               |  1 +\n>  test/pixel-format.cpp          | 47 ++++++++++++++++++++++++++++++++++\n>  3 files changed, 73 insertions(+), 3 deletions(-)\n>  create mode 100644 test/pixel-format.cpp\n> \n> diff --git a/src/libcamera/pixelformats.cpp b/src/libcamera/pixelformats.cpp\n> index 1330dc5..16aa7e4 100644\n> --- a/src/libcamera/pixelformats.cpp\n> +++ b/src/libcamera/pixelformats.cpp\n> @@ -6,6 +6,7 @@\n>   */\n>  \n>  #include <libcamera/pixelformats.h>\n> +#include <string.h>\n>  \n>  /**\n>   * \\file pixelformats.h\n> @@ -108,9 +109,30 @@ bool PixelFormat::operator<(const PixelFormat &other) const\n>   */\n>  std::string PixelFormat::toString() const\n>  {\n> -\tchar str[11];\n> -\tsnprintf(str, 11, \"0x%08x\", fourcc_);\n> -\treturn str;\n> +\tif (fourcc_ == DRM_FORMAT_INVALID)\n> +\t\treturn \"<INVALID>\";\n> +\n> +\tchar fourcc[5] = { static_cast<char>(fourcc_ & 0x7f),\n> +\t\t\t   static_cast<char>((fourcc_ >> 8) & 0x7f),\n> +\t\t\t   static_cast<char>((fourcc_ >> 16) & 0x7f),\n> +\t\t\t   static_cast<char>((fourcc_ >> 24) & 0x7f) };\n> +\n> +\tfor (unsigned int i = 0; i < 4; i++) {\n> +\t\tif (!isprint(fourcc[i]))\n> +\t\t\tfourcc[i] = '.';\n> +\t}\n> +\n> +\tstd::string formatString(fourcc);\n> +\n> +\tif (fourcc_ & (1 << 31))\n> +\t\tformatString += \"-BE\";\n> +\n> +\tif (modifier_ == DRM_FORMAT_MOD_INVALID)\n> +\t\tformatString += \":<INVALID> modifier\";\n\nI think this is the only part I find slightly distasteful, as I don't\nthink we need to explicitly mention the \" modifier\".\n\nWith this removed\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\nSo if you're happy, I can simply remove the extra word when applying.\n\n\n\n> +\telse if (modifier_ == MIPI_FORMAT_MOD_CSI2_PACKED)\n> +\t\tformatString += \":packed\";\n> +\n> +\treturn formatString;\n>  }\n>  \n>  } /* namespace libcamera */\n> diff --git a/test/meson.build b/test/meson.build\n> index bd7da14..591d848 100644\n> --- a/test/meson.build\n> +++ b/test/meson.build\n> @@ -33,6 +33,7 @@ internal_tests = [\n>      ['message',                         'message.cpp'],\n>      ['object',                          'object.cpp'],\n>      ['object-invoke',                   'object-invoke.cpp'],\n> +    ['pixel-format',                    'pixel-format.cpp'],\n>      ['signal-threads',                  'signal-threads.cpp'],\n>      ['threads',                         'threads.cpp'],\n>      ['timer',                           'timer.cpp'],\n> diff --git a/test/pixel-format.cpp b/test/pixel-format.cpp\n> new file mode 100644\n> index 0000000..84062b7\n> --- /dev/null\n> +++ b/test/pixel-format.cpp\n> @@ -0,0 +1,47 @@\n> +/* SPDX-License-Identifier: GPL-2.0-or-later */\n> +/*\n> + * Copyright (C) 2020, Kaaira Gupta\n> + * libcamera pixel format handling test\n> + */\n> +\n> +#include <iostream>\n> +#include <vector>\n> +\n> +#include \"libcamera/pixelformats.h\"\n> +\n> +#include \"test.h\"\n> +\n> +using namespace std;\n> +using namespace libcamera;\n> +\n> +class PixelFormatTest : public Test\n> +{\n> +protected:\n> +\tint run()\n> +\t{\n> +\t\tstd::vector<std::pair<PixelFormat, const char *>> formats{\n> +\t\t\t{ PixelFormat(DRM_FORMAT_SRGGB8, DRM_FORMAT_MOD_INVALID), \"RGGB:<INVALID> modifier\" },\n> +\t\t\t{ PixelFormat(DRM_FORMAT_SRGGB8, DRM_FORMAT_MOD_LINEAR), \"RGGB\" },\n> +\t\t\t{ PixelFormat(DRM_FORMAT_C8, DRM_FORMAT_MOD_SAMSUNG_64_32_TILE), \"C8  \" },\n> +\t\t\t{ PixelFormat(DRM_FORMAT_BIG_ENDIAN, MIPI_FORMAT_MOD_CSI2_PACKED), \"....-BE:packed\" }\n> +\t\t};\n> +\t\tfor (const auto &format : formats) {\n> +\t\t\tif ((format.first).toString() != format.second) {\n> +\t\t\t\tcerr << \"Failed to convert PixelFormat \"\n> +\t\t\t\t     << format.first.fourcc() << \" to string\"\n> +\t\t\t\t     << endl;\n> +\t\t\t\treturn TestFail;\n> +\t\t\t}\n> +\t\t}\n> +\n> +\t\tif (PixelFormat().toString() != \"<INVALID>\") {\n> +\t\t\tcerr << \"Failed to convert default PixelFormat to string\"\n> +\t\t\t     << endl;\n> +\t\t\treturn TestFail;\n> +\t\t}\n> +\n> +\t\treturn TestPass;\n> +\t}\n> +};\n> +\n> +TEST_REGISTER(PixelFormatTest)\n>","headers":{"Return-Path":"<kieran.bingham@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 3EDC6603CB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  2 Jun 2020 12:35:46 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B47B32B3;\n\tTue,  2 Jun 2020 12:35:45 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"VC0XK/jp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1591094145;\n\tbh=0MrLFwwL4vD0JIwMqbbe3yffny+jZfqUe8Qx35MuIog=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=VC0XK/jpj1bvePg47z7Sw4p90lCR8XPzlAKmqWTTwwKfz+89aZEgGeIndbW5cMBnw\n\tZtZarpPyEqprT88dMw6g1yQWgPxUENYDP7q6faiOwod13Lo7mXkZrlMQ+mOi+psMvz\n\tjgCfuLitGjc541U/Y8REvYjOIZn5vdoMTWBE/fDE=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Kaaira Gupta <kgupta@es.iitr.ac.in>, libcamera-devel@lists.libcamera.org","References":"<20200528130545.GA19932@kaaira-HP-Pavilion-Notebook>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<9539b12d-5b16-54e1-7c43-17251d7a286f@ideasonboard.com>","Date":"Tue, 2 Jun 2020 11:35:43 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.7.0","MIME-Version":"1.0","In-Reply-To":"<20200528130545.GA19932@kaaira-HP-Pavilion-Notebook>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH v4] libcamera: PixelFormat: Replace\n\thex with fourcc and modifiers","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":"Tue, 02 Jun 2020 10:35:46 -0000"}},{"id":4976,"web_url":"https://patchwork.libcamera.org/comment/4976/","msgid":"<20200602205122.GE6547@pendragon.ideasonboard.com>","date":"2020-06-02T20:51:22","subject":"Re: [libcamera-devel] [PATCH v4] libcamera: PixelFormat: Replace\n\thex with fourcc and modifiers","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Tue, Jun 02, 2020 at 11:35:43AM +0100, Kieran Bingham wrote:\n> On 28/05/2020 14:05, Kaaira Gupta wrote:\n> > Print fourCC characters instead of the hex values in toString() as they\n> > are easier to comprehend. Also, print the corresponding modifiers for\n> > MIPI vendor as it is mostly used in libcamera.\n> > \n> > Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>\n> > ---\n> > \n> > Changes since v3:\n> > \t-shortened the texts.\n> > \t-Removed default case as well.\n> > \t-changed commit message and tests to reflect the changes.\n> > \n> > Changes since v2:\n> >         - Remove description for all vendors except for MIPI\n> >         - Change commit message to reflect this change.\n> >         - Change tests accordingly.\n> > \n> > Changes since v1:\n> >         - Replaced magic numbers with expressive values.\n> >         - Re-wrote ARM vendor's modifiers\n> >         - Re-wrote the vendors' map with a macro.\n> >         - Changed the copyrights in test file.\n> >         - Changed the tests.\n> > \n> >  src/libcamera/pixelformats.cpp | 28 +++++++++++++++++---\n> >  test/meson.build               |  1 +\n> >  test/pixel-format.cpp          | 47 ++++++++++++++++++++++++++++++++++\n> >  3 files changed, 73 insertions(+), 3 deletions(-)\n> >  create mode 100644 test/pixel-format.cpp\n> > \n> > diff --git a/src/libcamera/pixelformats.cpp b/src/libcamera/pixelformats.cpp\n> > index 1330dc5..16aa7e4 100644\n> > --- a/src/libcamera/pixelformats.cpp\n> > +++ b/src/libcamera/pixelformats.cpp\n> > @@ -6,6 +6,7 @@\n> >   */\n> >  \n> >  #include <libcamera/pixelformats.h>\n> > +#include <string.h>\n> >  \n> >  /**\n> >   * \\file pixelformats.h\n> > @@ -108,9 +109,30 @@ bool PixelFormat::operator<(const PixelFormat &other) const\n> >   */\n> >  std::string PixelFormat::toString() const\n> >  {\n> > -\tchar str[11];\n> > -\tsnprintf(str, 11, \"0x%08x\", fourcc_);\n> > -\treturn str;\n> > +\tif (fourcc_ == DRM_FORMAT_INVALID)\n> > +\t\treturn \"<INVALID>\";\n> > +\n> > +\tchar fourcc[5] = { static_cast<char>(fourcc_ & 0x7f),\n> > +\t\t\t   static_cast<char>((fourcc_ >> 8) & 0x7f),\n> > +\t\t\t   static_cast<char>((fourcc_ >> 16) & 0x7f),\n> > +\t\t\t   static_cast<char>((fourcc_ >> 24) & 0x7f) };\n> > +\n> > +\tfor (unsigned int i = 0; i < 4; i++) {\n> > +\t\tif (!isprint(fourcc[i]))\n> > +\t\t\tfourcc[i] = '.';\n> > +\t}\n> > +\n> > +\tstd::string formatString(fourcc);\n> > +\n> > +\tif (fourcc_ & (1 << 31))\n> > +\t\tformatString += \"-BE\";\n> > +\n> > +\tif (modifier_ == DRM_FORMAT_MOD_INVALID)\n> > +\t\tformatString += \":<INVALID> modifier\";\n> \n> I think this is the only part I find slightly distasteful, as I don't\n> think we need to explicitly mention the \" modifier\".\n> \n> With this removed\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> So if you're happy, I can simply remove the extra word when applying.\n\nI think we need to consider the inverse problem, creating a PixelFormat\nfrom a string, to support passing pixel formats on the command line in\ncam and qcam (Kaaira has also posted a patch for that). If we don't\nconsider the two issues together, there's a high chance this function\nwill need to be changed later (and quite soon). I wonder if, considering\nthe libcamera::formats:: namespace proposal, and the PixelFormatInfo\nstructure, adding the format name to PixelFormatInfo and looking it up\nwouldn't be a good alternative approach. I'm not sure what the best\noption is though (I would otherwise propose it :-)), but I feel we're\nnot there yet.\n\n> > +\telse if (modifier_ == MIPI_FORMAT_MOD_CSI2_PACKED)\n> > +\t\tformatString += \":packed\";\n> > +\n> > +\treturn formatString;\n> >  }\n> >  \n> >  } /* namespace libcamera */\n> > diff --git a/test/meson.build b/test/meson.build\n> > index bd7da14..591d848 100644\n> > --- a/test/meson.build\n> > +++ b/test/meson.build\n> > @@ -33,6 +33,7 @@ internal_tests = [\n> >      ['message',                         'message.cpp'],\n> >      ['object',                          'object.cpp'],\n> >      ['object-invoke',                   'object-invoke.cpp'],\n> > +    ['pixel-format',                    'pixel-format.cpp'],\n> >      ['signal-threads',                  'signal-threads.cpp'],\n> >      ['threads',                         'threads.cpp'],\n> >      ['timer',                           'timer.cpp'],\n> > diff --git a/test/pixel-format.cpp b/test/pixel-format.cpp\n> > new file mode 100644\n> > index 0000000..84062b7\n> > --- /dev/null\n> > +++ b/test/pixel-format.cpp\n> > @@ -0,0 +1,47 @@\n> > +/* SPDX-License-Identifier: GPL-2.0-or-later */\n> > +/*\n> > + * Copyright (C) 2020, Kaaira Gupta\n> > + * libcamera pixel format handling test\n> > + */\n> > +\n> > +#include <iostream>\n> > +#include <vector>\n> > +\n> > +#include \"libcamera/pixelformats.h\"\n> > +\n> > +#include \"test.h\"\n> > +\n> > +using namespace std;\n> > +using namespace libcamera;\n> > +\n> > +class PixelFormatTest : public Test\n> > +{\n> > +protected:\n> > +\tint run()\n> > +\t{\n> > +\t\tstd::vector<std::pair<PixelFormat, const char *>> formats{\n> > +\t\t\t{ PixelFormat(DRM_FORMAT_SRGGB8, DRM_FORMAT_MOD_INVALID), \"RGGB:<INVALID> modifier\" },\n> > +\t\t\t{ PixelFormat(DRM_FORMAT_SRGGB8, DRM_FORMAT_MOD_LINEAR), \"RGGB\" },\n> > +\t\t\t{ PixelFormat(DRM_FORMAT_C8, DRM_FORMAT_MOD_SAMSUNG_64_32_TILE), \"C8  \" },\n> > +\t\t\t{ PixelFormat(DRM_FORMAT_BIG_ENDIAN, MIPI_FORMAT_MOD_CSI2_PACKED), \"....-BE:packed\" }\n> > +\t\t};\n> > +\t\tfor (const auto &format : formats) {\n> > +\t\t\tif ((format.first).toString() != format.second) {\n> > +\t\t\t\tcerr << \"Failed to convert PixelFormat \"\n> > +\t\t\t\t     << format.first.fourcc() << \" to string\"\n> > +\t\t\t\t     << endl;\n> > +\t\t\t\treturn TestFail;\n> > +\t\t\t}\n> > +\t\t}\n> > +\n> > +\t\tif (PixelFormat().toString() != \"<INVALID>\") {\n> > +\t\t\tcerr << \"Failed to convert default PixelFormat to string\"\n> > +\t\t\t     << endl;\n> > +\t\t\treturn TestFail;\n> > +\t\t}\n> > +\n> > +\t\treturn TestPass;\n> > +\t}\n> > +};\n> > +\n> > +TEST_REGISTER(PixelFormatTest)","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 4F34E603D0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  2 Jun 2020 22:51:38 +0200 (CEST)","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 928532A4;\n\tTue,  2 Jun 2020 22:51:37 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"rhkmWEde\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1591131097;\n\tbh=WxuWglBC9wnBV5XYVwnPOvHCYvjFyPJVj4QouAVnAb4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=rhkmWEdeF/kAvkzAHEZCau7/O8Sted4dmcRhh6BXR2sZn87Ds0OZyx+8nHwehDxv5\n\t8G2Mjd91mWyXz752M17ncqM5rB49JRQJvwHjKc+wWH4g35ups2SMj07iT3eudBf3F7\n\tj4u6fh8MWmmbSKt/5Do9IewUuwc9Nxmy9Yqrt4nk=","Date":"Tue, 2 Jun 2020 23:51:22 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Kaaira Gupta <kgupta@es.iitr.ac.in>, libcamera-devel@lists.libcamera.org","Message-ID":"<20200602205122.GE6547@pendragon.ideasonboard.com>","References":"<20200528130545.GA19932@kaaira-HP-Pavilion-Notebook>\n\t<9539b12d-5b16-54e1-7c43-17251d7a286f@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<9539b12d-5b16-54e1-7c43-17251d7a286f@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v4] libcamera: PixelFormat: Replace\n\thex with fourcc and modifiers","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":"Tue, 02 Jun 2020 20:51:38 -0000"}}]