[{"id":14872,"web_url":"https://patchwork.libcamera.org/comment/14872/","msgid":"<20210201094835.f2ecrch2qsj2kj7u@uno.localdomain>","date":"2021-02-01T09:48:35","subject":"Re: [libcamera-devel] [PATCH 1/3] libcamera: camera_sensor: Store\n\tBayer pattern in class member","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Sun, Jan 31, 2021 at 08:17:20PM +0200, Laurent Pinchart wrote:\n> The Bayer pattern is retrieved based on the media bus formats supported\n> by the sensor, when registering camera sensor properties. To prepare for\n> its usage elsewhere in the CameraSensor class, store it in a private\n> member variable.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nLooks good, thank you\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n> ---\n>  include/libcamera/internal/camera_sensor.h |  2 ++\n>  src/libcamera/camera_sensor.cpp            | 22 +++++++++++++---------\n>  2 files changed, 15 insertions(+), 9 deletions(-)\n>\n> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> index bf83d53134bf..a662807ab504 100644\n> --- a/include/libcamera/internal/camera_sensor.h\n> +++ b/include/libcamera/internal/camera_sensor.h\n> @@ -20,6 +20,7 @@\n>\n>  namespace libcamera {\n>\n> +class BayerFormat;\n>  class MediaEntity;\n>\n>  struct CameraSensorInfo {\n> @@ -89,6 +90,7 @@ private:\n>\n>  \tSize pixelArraySize_;\n>  \tRectangle activeArea_;\n> +\tconst BayerFormat *bayerFormat_;\n>\n>  \tControlList properties_;\n>  };\n> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\n> index 2d15043431aa..35312857ff90 100644\n> --- a/src/libcamera/camera_sensor.cpp\n> +++ b/src/libcamera/camera_sensor.cpp\n> @@ -133,7 +133,8 @@ LOG_DEFINE_CATEGORY(CameraSensor)\n>   * Once constructed the instance must be initialized with init().\n>   */\n>  CameraSensor::CameraSensor(const MediaEntity *entity)\n> -\t: entity_(entity), pad_(UINT_MAX), properties_(properties::properties)\n> +\t: entity_(entity), pad_(UINT_MAX), bayerFormat_(nullptr),\n> +\t  properties_(properties::properties)\n>  {\n>  }\n>\n> @@ -223,6 +224,15 @@ int CameraSensor::init()\n>  \t\treturn initProperties();\n>  \t}\n>\n> +\t/* Get the color filter array pattern (only for RAW sensors). */\n> +\tfor (unsigned int mbusCode : mbusCodes_) {\n> +\t\tconst BayerFormat &bayerFormat = BayerFormat::fromMbusCode(mbusCode);\n> +\t\tif (bayerFormat.isValid()) {\n> +\t\t\tbayerFormat_ = &bayerFormat;\n> +\t\t\tbreak;\n> +\t\t}\n> +\t}\n> +\n>  \tret = validateSensorDriver();\n>  \tif (ret)\n>  \t\treturn ret;\n> @@ -405,14 +415,9 @@ int CameraSensor::initProperties()\n>  \tproperties_.set(properties::PixelArrayActiveAreas, { activeArea_ });\n>\n>  \t/* Color filter array pattern, register only for RAW sensors. */\n> -\tfor (const auto &format : formats_) {\n> -\t\tunsigned int mbusCode = format.first;\n> -\t\tBayerFormat bayerFormat = BayerFormat::fromMbusCode(mbusCode);\n> -\t\tif (!bayerFormat.isValid())\n> -\t\t\tcontinue;\n> -\n> +\tif (bayerFormat_) {\n>  \t\tint32_t cfa;\n> -\t\tswitch (bayerFormat.order) {\n> +\t\tswitch (bayerFormat_->order) {\n>  \t\tcase BayerFormat::BGGR:\n>  \t\t\tcfa = properties::draft::BGGR;\n>  \t\t\tbreak;\n> @@ -428,7 +433,6 @@ int CameraSensor::initProperties()\n>  \t\t}\n>\n>  \t\tproperties_.set(properties::draft::ColorFilterArrangement, cfa);\n> -\t\tbreak;\n>  \t}\n>\n>  \treturn 0;\n> --\n> Regards,\n>\n> Laurent Pinchart\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 5AC14C33BB\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  1 Feb 2021 09:48:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DFF5E683FB;\n\tMon,  1 Feb 2021 10:48:15 +0100 (CET)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 15C9A60307\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  1 Feb 2021 10:48:14 +0100 (CET)","from uno.localdomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 86E041BF204;\n\tMon,  1 Feb 2021 09:48:13 +0000 (UTC)"],"X-Originating-IP":"93.61.96.190","Date":"Mon, 1 Feb 2021 10:48:35 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20210201094835.f2ecrch2qsj2kj7u@uno.localdomain>","References":"<20210131181722.5410-1-laurent.pinchart@ideasonboard.com>\n\t<20210131181722.5410-2-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210131181722.5410-2-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 1/3] libcamera: camera_sensor: Store\n\tBayer pattern in class member","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14915,"web_url":"https://patchwork.libcamera.org/comment/14915/","msgid":"<20210203031339.GD42962@pyrite.rasen.tech>","date":"2021-02-03T03:13:39","subject":"Re: [libcamera-devel] [PATCH 1/3] libcamera: camera_sensor: Store\n\tBayer pattern in class member","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Laurent,\n\nOn Sun, Jan 31, 2021 at 08:17:20PM +0200, Laurent Pinchart wrote:\n> The Bayer pattern is retrieved based on the media bus formats supported\n> by the sensor, when registering camera sensor properties. To prepare for\n> its usage elsewhere in the CameraSensor class, store it in a private\n> member variable.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  include/libcamera/internal/camera_sensor.h |  2 ++\n>  src/libcamera/camera_sensor.cpp            | 22 +++++++++++++---------\n>  2 files changed, 15 insertions(+), 9 deletions(-)\n> \n> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> index bf83d53134bf..a662807ab504 100644\n> --- a/include/libcamera/internal/camera_sensor.h\n> +++ b/include/libcamera/internal/camera_sensor.h\n> @@ -20,6 +20,7 @@\n>  \n>  namespace libcamera {\n>  \n> +class BayerFormat;\n>  class MediaEntity;\n>  \n>  struct CameraSensorInfo {\n> @@ -89,6 +90,7 @@ private:\n>  \n>  \tSize pixelArraySize_;\n>  \tRectangle activeArea_;\n> +\tconst BayerFormat *bayerFormat_;\n>  \n>  \tControlList properties_;\n>  };\n> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\n> index 2d15043431aa..35312857ff90 100644\n> --- a/src/libcamera/camera_sensor.cpp\n> +++ b/src/libcamera/camera_sensor.cpp\n> @@ -133,7 +133,8 @@ LOG_DEFINE_CATEGORY(CameraSensor)\n>   * Once constructed the instance must be initialized with init().\n>   */\n>  CameraSensor::CameraSensor(const MediaEntity *entity)\n> -\t: entity_(entity), pad_(UINT_MAX), properties_(properties::properties)\n> +\t: entity_(entity), pad_(UINT_MAX), bayerFormat_(nullptr),\n> +\t  properties_(properties::properties)\n>  {\n>  }\n>  \n> @@ -223,6 +224,15 @@ int CameraSensor::init()\n>  \t\treturn initProperties();\n>  \t}\n>  \n> +\t/* Get the color filter array pattern (only for RAW sensors). */\n> +\tfor (unsigned int mbusCode : mbusCodes_) {\n> +\t\tconst BayerFormat &bayerFormat = BayerFormat::fromMbusCode(mbusCode);\n> +\t\tif (bayerFormat.isValid()) {\n> +\t\t\tbayerFormat_ = &bayerFormat;\n> +\t\t\tbreak;\n> +\t\t}\n> +\t}\n> +\n>  \tret = validateSensorDriver();\n>  \tif (ret)\n>  \t\treturn ret;\n> @@ -405,14 +415,9 @@ int CameraSensor::initProperties()\n>  \tproperties_.set(properties::PixelArrayActiveAreas, { activeArea_ });\n>  \n>  \t/* Color filter array pattern, register only for RAW sensors. */\n> -\tfor (const auto &format : formats_) {\n> -\t\tunsigned int mbusCode = format.first;\n> -\t\tBayerFormat bayerFormat = BayerFormat::fromMbusCode(mbusCode);\n> -\t\tif (!bayerFormat.isValid())\n> -\t\t\tcontinue;\n> -\n> +\tif (bayerFormat_) {\n>  \t\tint32_t cfa;\n> -\t\tswitch (bayerFormat.order) {\n> +\t\tswitch (bayerFormat_->order) {\n>  \t\tcase BayerFormat::BGGR:\n>  \t\t\tcfa = properties::draft::BGGR;\n>  \t\t\tbreak;\n> @@ -428,7 +433,6 @@ int CameraSensor::initProperties()\n>  \t\t}\n>  \n>  \t\tproperties_.set(properties::draft::ColorFilterArrangement, cfa);\n> -\t\tbreak;\n>  \t}\n>  \n>  \treturn 0;\n> -- \n> Regards,\n> \n> Laurent Pinchart\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 2CCCCBD161\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Feb 2021 03:13:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9646C6843A;\n\tWed,  3 Feb 2021 04:13:49 +0100 (CET)","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 D43D160304\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Feb 2021 04:13:47 +0100 (CET)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2E69D580;\n\tWed,  3 Feb 2021 04:13:45 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"bNMQYPXT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1612322027;\n\tbh=AJA3NJB/zMWDttV8UNrRcWd2U2RORyw1kTYP8etVKYk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=bNMQYPXT6S1KpemsztCyKCaHimYTPy2PhzmgBuFGSOIbpK6RgSKN7TQigdDUzb6Se\n\tAD/awaAoseM9BM274rw6IEfI1EXkiSV5ZlWjhHTUbx88yztLuuyZTS4OS/uqRA6LB5\n\tmH1ZY2dWRdwB4JKxXUm3Yo98vEK76mmRopliCZNk=","Date":"Wed, 3 Feb 2021 12:13:39 +0900","From":"paul.elder@ideasonboard.com","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20210203031339.GD42962@pyrite.rasen.tech>","References":"<20210131181722.5410-1-laurent.pinchart@ideasonboard.com>\n\t<20210131181722.5410-2-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210131181722.5410-2-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 1/3] libcamera: camera_sensor: Store\n\tBayer pattern in class member","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]