[{"id":17061,"web_url":"https://patchwork.libcamera.org/comment/17061/","msgid":"<40d71be0-3083-1bc6-23cd-ce19526dcf0e@ideasonboard.com>","date":"2021-05-21T09:02:10","subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","submitter":{"id":75,"url":"https://patchwork.libcamera.org/api/people/75/","name":"Jean-Michel Hautbois","email":"jeanmichel.hautbois@ideasonboard.com"},"content":"Hi Umang and Paul,\n\nOn 19/05/2021 12:19, Umang Jain wrote:\n> CameraSensorInfo structure is designed to pass in camera sensor related\n> information from pipeline-handler to IPA. Since the pipeline-handler\n> and IPA are connected via mojom IPC IPA interface, the interface\n> itself provides a more suitable placement of CameraSensorInfo,\n> instead of camera_sensor.h (which is a libcamera internal header\n> ultimately, at this point).\n> \n> As CameraSensorInfo is already defined in core.mojom, it is just\n> a matter of removing [skipHeader] tag to allow code-generation\n> of CameraSensorInfo.\n> \n> Finally, update header paths to include CameraSensorInfo definition\n> from IPA interfaces instead of \"libcamera/internal/camera_sensor.h\".\n> \n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> ---\n>  include/libcamera/internal/camera_sensor.h |  17 +--\n>  include/libcamera/ipa/core.mojom           |   2 +-\n>  include/libcamera/ipa/ipa_interface.h      |   2 -\n>  src/ipa/raspberrypi/raspberrypi.cpp        |   1 -\n>  src/libcamera/camera_sensor.cpp            | 111 -----------------\n>  src/libcamera/ipa/core_ipa_interface.cpp   | 131 +++++++++++++++++++++\n>  6 files changed, 133 insertions(+), 131 deletions(-)\n> \n> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> index 2a5c51a1..0905ebfa 100644\n> --- a/include/libcamera/internal/camera_sensor.h\n> +++ b/include/libcamera/internal/camera_sensor.h\n> @@ -14,6 +14,7 @@\n>  #include <libcamera/class.h>\n>  #include <libcamera/controls.h>\n>  #include <libcamera/geometry.h>\n> +#include <libcamera/ipa/core_ipa_interface.h>\n>  \n>  #include \"libcamera/internal/formats.h\"\n>  #include \"libcamera/internal/log.h\"\n> @@ -24,22 +25,6 @@ namespace libcamera {\n>  class BayerFormat;\n>  class MediaEntity;\n>  \n> -struct CameraSensorInfo {\n> -\tstd::string model;\n> -\n> -\tuint32_t bitsPerPixel;\n> -\n> -\tSize activeAreaSize;\n> -\tRectangle analogCrop;\n> -\tSize outputSize;\n> -\n> -\tuint64_t pixelRate;\n> -\tuint32_t lineLength;\n> -\n> -\tuint32_t minFrameLength;\n> -\tuint32_t maxFrameLength;\n> -};\n> -\n>  class CameraSensor : protected Loggable\n>  {\n>  public:\n> diff --git a/include/libcamera/ipa/core.mojom b/include/libcamera/ipa/core.mojom\n> index e49815d8..b95b3dc4 100644\n> --- a/include/libcamera/ipa/core.mojom\n> +++ b/include/libcamera/ipa/core.mojom\n> @@ -78,7 +78,7 @@ module libcamera;\n>  \tuint32 height;\n>  };\n>  \n> -[skipHeader] struct CameraSensorInfo {\n> +struct CameraSensorInfo {\n>  \tstring model;\n>  \n>  \tuint32 bitsPerPixel;\n> diff --git a/include/libcamera/ipa/ipa_interface.h b/include/libcamera/ipa/ipa_interface.h\n> index dfe1b40a..4aefaa71 100644\n> --- a/include/libcamera/ipa/ipa_interface.h\n> +++ b/include/libcamera/ipa/ipa_interface.h\n> @@ -18,8 +18,6 @@\n>  #include <libcamera/geometry.h>\n>  #include <libcamera/signal.h>\n>  \n> -#include \"libcamera/internal/camera_sensor.h\"\n> -\n>  namespace libcamera {\n>  \n>  /*\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 52d91db2..87774500 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -25,7 +25,6 @@\n>  #include <libcamera/span.h>\n>  \n>  #include \"libcamera/internal/buffer.h\"\n> -#include \"libcamera/internal/camera_sensor.h\"\n>  #include \"libcamera/internal/log.h\"\n>  \n>  #include <linux/bcm2835-isp.h>\n> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\n> index eb84d9eb..170de827 100644\n> --- a/src/libcamera/camera_sensor.cpp\n> +++ b/src/libcamera/camera_sensor.cpp\n> @@ -33,117 +33,6 @@ namespace libcamera {\n>  \n>  LOG_DEFINE_CATEGORY(CameraSensor)\n>  \n> -/**\n> - * \\struct CameraSensorInfo\n> - * \\brief Report the image sensor characteristics\n> - *\n> - * The structure reports image sensor characteristics used by IPA modules to\n> - * tune their algorithms based on the image sensor model currently in use and\n> - * its configuration.\n> - *\n> - * The reported information describes the sensor's intrinsics characteristics,\n> - * such as its pixel array size and the sensor model name, as well as\n> - * information relative to the currently configured mode, such as the produced\n> - * image size and the bit depth of the requested image format.\n> - *\n> - * Instances of this structure are meant to be assembled by the CameraSensor\n> - * class by inspecting the sensor static properties as well as information\n> - * relative to the current configuration.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::model\n> - * \\brief The image sensor model name\n> - *\n> - * The sensor model name is a free-formed string that uniquely identifies the\n> - * sensor model.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::bitsPerPixel\n> - * \\brief The number of bits per pixel of the image format produced by the\n> - * image sensor\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::activeAreaSize\n> - * \\brief The size of the pixel array active area of the sensor\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::analogCrop\n> - * \\brief The portion of the pixel array active area which is read-out and\n> - * processed\n> - *\n> - * The analog crop rectangle top-left corner is defined as the displacement\n> - * from the top-left corner of the pixel array active area. The rectangle\n> - * horizontal and vertical sizes define the portion of the pixel array which\n> - * is read-out and provided to the sensor's internal processing pipeline, before\n> - * any pixel sub-sampling method, such as pixel binning, skipping and averaging\n> - * take place.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::outputSize\n> - * \\brief The size of the images produced by the camera sensor\n> - *\n> - * The output image size defines the horizontal and vertical sizes of the images\n> - * produced by the image sensor. The output image size is defined as the end\n> - * result of the sensor's internal image processing pipeline stages, applied on\n> - * the pixel array portion defined by the analog crop rectangle. Each image\n> - * processing stage that performs pixel sub-sampling techniques, such as pixel\n> - * binning or skipping, or perform any additional digital scaling concur in the\n> - * definition of the output image size.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::pixelRate\n> - * \\brief The number of pixels produced in a second\n> - *\n> - * To obtain the read-out time in seconds of a full line:\n> - *\n> - * \\verbatim\n> -\tlineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)\n> -   \\endverbatim\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::lineLength\n> - * \\brief Total line length in pixels\n> - *\n> - * The total line length in pixel clock periods, including blanking.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::minFrameLength\n> - * \\brief The minimum allowable frame length in units of lines\n> - *\n> - * The sensor frame length comprises of active output lines and blanking lines\n> - * in a frame. The minimum frame length value dictates the minimum allowable\n> - * frame duration of the sensor mode.\n> - *\n> - * To obtain the minimum frame duration:\n> - *\n> - * \\verbatim\n> -\tframeDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> -   \\endverbatim\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::maxFrameLength\n> - * \\brief The maximum allowable frame length in units of lines\n> - *\n> - * The sensor frame length comprises of active output lines and blanking lines\n> - * in a frame. The maximum frame length value dictates the maximum allowable\n> - * frame duration of the sensor mode.\n> - *\n> - * To obtain the maximum frame duration:\n> - *\n> - * \\verbatim\n> -\tframeDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> -   \\endverbatim\n> - */\n> -\n>  /**\n>   * \\class CameraSensor\n>   * \\brief A camera sensor based on V4L2 subdevices\n> diff --git a/src/libcamera/ipa/core_ipa_interface.cpp b/src/libcamera/ipa/core_ipa_interface.cpp\n> index fe1ecce6..def8d184 100644\n> --- a/src/libcamera/ipa/core_ipa_interface.cpp\n> +++ b/src/libcamera/ipa/core_ipa_interface.cpp\n> @@ -102,4 +102,135 @@ namespace libcamera {\n>   * \\brief The stream size in pixels\n>   */\n>  \n> +/**\n> + * \\struct CameraSensorInfo\n> + * \\brief Report the image sensor characteristics\n> + *\n> + * The structure reports image sensor characteristics used by IPA modules to\n> + * tune their algorithms based on the image sensor model currently in use and\n> + * its configuration.\n> + *\n> + * The reported information describes the sensor's intrinsics characteristics,\n> + * such as its pixel array size and the sensor model name, as well as\n> + * information relative to the currently configured mode, such as the produced\n> + * image size and the bit depth of the requested image format.\n> + *\n> + * Instances of this structure are meant to be assembled by the CameraSensor\n> + * class by inspecting the sensor static properties as well as information\n> + * relative to the current configuration.\n> + */\n> +\n> +/**\n> + * \\fn CameraSensorInfo::CameraSensorInfo(const std::string &model,\n> +\t\t\t\t\t  uint32_t bitsPerPixel,\n> +\t\t\t\t\t  const Size &activeAreaSize,\n> +\t\t\t\t\t  const Rectangle &analogCrop,\n> +\t\t\t\t\t  const Size &outputSize,\n> +\t\t\t\t\t  uint64_t pixelRate,\n> +\t\t\t\t\t  uint32_t lineLength,\n> +\t\t\t\t\t  uint32_t minFrameLength,\n> +\t\t\t\t\t  uint32_t maxFrameLength)\n> + * \\param[in] model\n> + * \\param[in] bitsPerPixel\n> + * \\param[in] activeAreaSize\n> + * \\param[in] analogCrop\n> + * \\param[in] outputSize\n> + * \\param[in] pixelRate\n> + * \\param[in] lineLength\n> + * \\param[in] minFrameLength\n> + * \\param[in] maxFrameLength\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::model\n> + * \\brief The image sensor model name\n> + *\n> + * The sensor model name is a free-formed string that uniquely identifies the\n> + * sensor model.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::bitsPerPixel\n> + * \\brief The number of bits per pixel of the image format produced by the\n> + * image sensor\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::activeAreaSize\n> + * \\brief The size of the pixel array active area of the sensor\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::analogCrop\n> + * \\brief The portion of the pixel array active area which is read-out and\n> + * processed\n> + *\n> + * The analog crop rectangle top-left corner is defined as the displacement\n> + * from the top-left corner of the pixel array active area. The rectangle\n> + * horizontal and vertical sizes define the portion of the pixel array which\n> + * is read-out and provided to the sensor's internal processing pipeline, before\n> + * any pixel sub-sampling method, such as pixel binning, skipping and averaging\n> + * take place.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::outputSize\n> + * \\brief The size of the images produced by the camera sensor\n> + *\n> + * The output image size defines the horizontal and vertical sizes of the images\n> + * produced by the image sensor. The output image size is defined as the end\n> + * result of the sensor's internal image processing pipeline stages, applied on\n> + * the pixel array portion defined by the analog crop rectangle. Each image\n> + * processing stage that performs pixel sub-sampling techniques, such as pixel\n> + * binning or skipping, or perform any additional digital scaling concur in the\n> + * definition of the output image size.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::pixelRate\n> + * \\brief The number of pixels produced in a second\n> + *\n> + * To obtain the read-out time in seconds of a full line:\n> + *\n> + * \\verbatim\n> +       lineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::lineLength\n> + * \\brief Total line length in pixels\n> + *\n> + * The total line length in pixel clock periods, including blanking.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::minFrameLength\n> + * \\brief The minimum allowable frame length in units of lines\n> + *\n> + * The sensor frame length comprises of active output lines and blanking lines\n> + * in a frame. The minimum frame length value dictates the minimum allowable\n> + * frame duration of the sensor mode.\n> + *\n> + * To obtain the minimum frame duration:\n> + *\n> + * \\verbatim\n> +       frameDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::maxFrameLength\n> + * \\brief The maximum allowable frame length in units of lines\n> + *\n> + * The sensor frame length comprises of active output lines and blanking lines\n> + * in a frame. The maximum frame length value dictates the maximum allowable\n> + * frame duration of the sensor mode.\n> + *\n> + * To obtain the maximum frame duration:\n> + *\n> + * \\verbatim\n> +       frameDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n>  } /* namespace libcamera */\n>","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 D1136C31FF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 May 2021 09:02:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 93D4B6891B;\n\tFri, 21 May 2021 11:02:12 +0200 (CEST)","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 0CEE568918\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 May 2021 11:02:11 +0200 (CEST)","from [IPv6:2a01:e0a:169:7140:54a2:6f99:9b15:64bc] (unknown\n\t[IPv6:2a01:e0a:169:7140:54a2:6f99:9b15:64bc])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id AC837ACC;\n\tFri, 21 May 2021 11:02:10 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"TxcMKc3F\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621587730;\n\tbh=vJT+DBYDcfqXW0TM1YhHsoiPoLaCoYro1J9o9AoaPWo=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=TxcMKc3Fr4CsdxpbBmgUqkSS9AOZbRYcM35OvhKzf/244cYsja38JM7euqZXvzJ3c\n\tQBRhjSDUtxK3dfGX1l93r+hTa4LJnbHCV2pQwdkTdWyyCYbBGCw+QgofRUDZyjX1Yk\n\tp4YpqPPNFgDcWHSn2Nk0hz7a1wejGI1j31jmPS1g=","To":"Umang Jain <umang.jain@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210519101954.77711-1-umang.jain@ideasonboard.com>\n\t<20210519101954.77711-3-umang.jain@ideasonboard.com>","From":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>","Message-ID":"<40d71be0-3083-1bc6-23cd-ce19526dcf0e@ideasonboard.com>","Date":"Fri, 21 May 2021 11:02:10 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.8.1","MIME-Version":"1.0","In-Reply-To":"<20210519101954.77711-3-umang.jain@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17067,"web_url":"https://patchwork.libcamera.org/comment/17067/","msgid":"<1ab78d75-6ef5-b14d-267b-1f9861903c34@ideasonboard.com>","date":"2021-05-21T09:11:57","subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Umang,\n\nOn 19/05/2021 11:19, Umang Jain wrote:\n> CameraSensorInfo structure is designed to pass in camera sensor related\n> information from pipeline-handler to IPA. Since the pipeline-handler\n> and IPA are connected via mojom IPC IPA interface, the interface\n> itself provides a more suitable placement of CameraSensorInfo,\n> instead of camera_sensor.h (which is a libcamera internal header\n> ultimately, at this point).\n> \n> As CameraSensorInfo is already defined in core.mojom, it is just\n> a matter of removing [skipHeader] tag to allow code-generation\n> of CameraSensorInfo.\n> \n> Finally, update header paths to include CameraSensorInfo definition\n> from IPA interfaces instead of \"libcamera/internal/camera_sensor.h\".\n> \n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  include/libcamera/internal/camera_sensor.h |  17 +--\n>  include/libcamera/ipa/core.mojom           |   2 +-\n>  include/libcamera/ipa/ipa_interface.h      |   2 -\n>  src/ipa/raspberrypi/raspberrypi.cpp        |   1 -\n>  src/libcamera/camera_sensor.cpp            | 111 -----------------\n>  src/libcamera/ipa/core_ipa_interface.cpp   | 131 +++++++++++++++++++++\n>  6 files changed, 133 insertions(+), 131 deletions(-)\n> \n> diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\n> index 2a5c51a1..0905ebfa 100644\n> --- a/include/libcamera/internal/camera_sensor.h\n> +++ b/include/libcamera/internal/camera_sensor.h\n> @@ -14,6 +14,7 @@\n>  #include <libcamera/class.h>\n>  #include <libcamera/controls.h>\n>  #include <libcamera/geometry.h>\n> +#include <libcamera/ipa/core_ipa_interface.h>\n>  \n>  #include \"libcamera/internal/formats.h\"\n>  #include \"libcamera/internal/log.h\"\n> @@ -24,22 +25,6 @@ namespace libcamera {\n>  class BayerFormat;\n>  class MediaEntity;\n>  \n> -struct CameraSensorInfo {\n> -\tstd::string model;\n> -\n> -\tuint32_t bitsPerPixel;\n> -\n> -\tSize activeAreaSize;\n> -\tRectangle analogCrop;\n> -\tSize outputSize;\n> -\n> -\tuint64_t pixelRate;\n> -\tuint32_t lineLength;\n> -\n> -\tuint32_t minFrameLength;\n> -\tuint32_t maxFrameLength;\n> -};\n> -\n>  class CameraSensor : protected Loggable\n>  {\n>  public:\n> diff --git a/include/libcamera/ipa/core.mojom b/include/libcamera/ipa/core.mojom\n> index e49815d8..b95b3dc4 100644\n> --- a/include/libcamera/ipa/core.mojom\n> +++ b/include/libcamera/ipa/core.mojom\n> @@ -78,7 +78,7 @@ module libcamera;\n>  \tuint32 height;\n>  };\n>  \n> -[skipHeader] struct CameraSensorInfo {\n> +struct CameraSensorInfo {\n>  \tstring model;\n>  \n>  \tuint32 bitsPerPixel;\n> diff --git a/include/libcamera/ipa/ipa_interface.h b/include/libcamera/ipa/ipa_interface.h\n> index dfe1b40a..4aefaa71 100644\n> --- a/include/libcamera/ipa/ipa_interface.h\n> +++ b/include/libcamera/ipa/ipa_interface.h\n> @@ -18,8 +18,6 @@\n>  #include <libcamera/geometry.h>\n>  #include <libcamera/signal.h>\n>  \n> -#include \"libcamera/internal/camera_sensor.h\"\n> -\n>  namespace libcamera {\n>  \n>  /*\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 52d91db2..87774500 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -25,7 +25,6 @@\n>  #include <libcamera/span.h>\n>  \n>  #include \"libcamera/internal/buffer.h\"\n> -#include \"libcamera/internal/camera_sensor.h\"\n>  #include \"libcamera/internal/log.h\"\n>  \n>  #include <linux/bcm2835-isp.h>\n> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\n> index eb84d9eb..170de827 100644\n> --- a/src/libcamera/camera_sensor.cpp\n> +++ b/src/libcamera/camera_sensor.cpp\n> @@ -33,117 +33,6 @@ namespace libcamera {\n>  \n>  LOG_DEFINE_CATEGORY(CameraSensor)\n>  \n> -/**\n> - * \\struct CameraSensorInfo\n> - * \\brief Report the image sensor characteristics\n> - *\n> - * The structure reports image sensor characteristics used by IPA modules to\n> - * tune their algorithms based on the image sensor model currently in use and\n> - * its configuration.\n> - *\n> - * The reported information describes the sensor's intrinsics characteristics,\n> - * such as its pixel array size and the sensor model name, as well as\n> - * information relative to the currently configured mode, such as the produced\n> - * image size and the bit depth of the requested image format.\n> - *\n> - * Instances of this structure are meant to be assembled by the CameraSensor\n> - * class by inspecting the sensor static properties as well as information\n> - * relative to the current configuration.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::model\n> - * \\brief The image sensor model name\n> - *\n> - * The sensor model name is a free-formed string that uniquely identifies the\n> - * sensor model.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::bitsPerPixel\n> - * \\brief The number of bits per pixel of the image format produced by the\n> - * image sensor\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::activeAreaSize\n> - * \\brief The size of the pixel array active area of the sensor\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::analogCrop\n> - * \\brief The portion of the pixel array active area which is read-out and\n> - * processed\n> - *\n> - * The analog crop rectangle top-left corner is defined as the displacement\n> - * from the top-left corner of the pixel array active area. The rectangle\n> - * horizontal and vertical sizes define the portion of the pixel array which\n> - * is read-out and provided to the sensor's internal processing pipeline, before\n> - * any pixel sub-sampling method, such as pixel binning, skipping and averaging\n> - * take place.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::outputSize\n> - * \\brief The size of the images produced by the camera sensor\n> - *\n> - * The output image size defines the horizontal and vertical sizes of the images\n> - * produced by the image sensor. The output image size is defined as the end\n> - * result of the sensor's internal image processing pipeline stages, applied on\n> - * the pixel array portion defined by the analog crop rectangle. Each image\n> - * processing stage that performs pixel sub-sampling techniques, such as pixel\n> - * binning or skipping, or perform any additional digital scaling concur in the\n> - * definition of the output image size.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::pixelRate\n> - * \\brief The number of pixels produced in a second\n> - *\n> - * To obtain the read-out time in seconds of a full line:\n> - *\n> - * \\verbatim\n> -\tlineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)\n> -   \\endverbatim\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::lineLength\n> - * \\brief Total line length in pixels\n> - *\n> - * The total line length in pixel clock periods, including blanking.\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::minFrameLength\n> - * \\brief The minimum allowable frame length in units of lines\n> - *\n> - * The sensor frame length comprises of active output lines and blanking lines\n> - * in a frame. The minimum frame length value dictates the minimum allowable\n> - * frame duration of the sensor mode.\n> - *\n> - * To obtain the minimum frame duration:\n> - *\n> - * \\verbatim\n> -\tframeDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> -   \\endverbatim\n> - */\n> -\n> -/**\n> - * \\var CameraSensorInfo::maxFrameLength\n> - * \\brief The maximum allowable frame length in units of lines\n> - *\n> - * The sensor frame length comprises of active output lines and blanking lines\n> - * in a frame. The maximum frame length value dictates the maximum allowable\n> - * frame duration of the sensor mode.\n> - *\n> - * To obtain the maximum frame duration:\n> - *\n> - * \\verbatim\n> -\tframeDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> -   \\endverbatim\n> - */\n> -\n>  /**\n>   * \\class CameraSensor\n>   * \\brief A camera sensor based on V4L2 subdevices\n> diff --git a/src/libcamera/ipa/core_ipa_interface.cpp b/src/libcamera/ipa/core_ipa_interface.cpp\n> index fe1ecce6..def8d184 100644\n> --- a/src/libcamera/ipa/core_ipa_interface.cpp\n> +++ b/src/libcamera/ipa/core_ipa_interface.cpp\n> @@ -102,4 +102,135 @@ namespace libcamera {\n>   * \\brief The stream size in pixels\n>   */\n>  \n> +/**\n> + * \\struct CameraSensorInfo\n> + * \\brief Report the image sensor characteristics\n> + *\n> + * The structure reports image sensor characteristics used by IPA modules to\n> + * tune their algorithms based on the image sensor model currently in use and\n> + * its configuration.\n> + *\n> + * The reported information describes the sensor's intrinsics characteristics,\n> + * such as its pixel array size and the sensor model name, as well as\n> + * information relative to the currently configured mode, such as the produced\n> + * image size and the bit depth of the requested image format.\n> + *\n> + * Instances of this structure are meant to be assembled by the CameraSensor\n> + * class by inspecting the sensor static properties as well as information\n> + * relative to the current configuration.\n> + */\n> +\n> +/**\n> + * \\fn CameraSensorInfo::CameraSensorInfo(const std::string &model,\n> +\t\t\t\t\t  uint32_t bitsPerPixel,\n> +\t\t\t\t\t  const Size &activeAreaSize,\n> +\t\t\t\t\t  const Rectangle &analogCrop,\n> +\t\t\t\t\t  const Size &outputSize,\n> +\t\t\t\t\t  uint64_t pixelRate,\n> +\t\t\t\t\t  uint32_t lineLength,\n> +\t\t\t\t\t  uint32_t minFrameLength,\n> +\t\t\t\t\t  uint32_t maxFrameLength)\n> + * \\param[in] model\n> + * \\param[in] bitsPerPixel\n> + * \\param[in] activeAreaSize\n> + * \\param[in] analogCrop\n> + * \\param[in] outputSize\n> + * \\param[in] pixelRate\n> + * \\param[in] lineLength\n> + * \\param[in] minFrameLength\n> + * \\param[in] maxFrameLength\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::model\n> + * \\brief The image sensor model name\n> + *\n> + * The sensor model name is a free-formed string that uniquely identifies the\n> + * sensor model.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::bitsPerPixel\n> + * \\brief The number of bits per pixel of the image format produced by the\n> + * image sensor\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::activeAreaSize\n> + * \\brief The size of the pixel array active area of the sensor\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::analogCrop\n> + * \\brief The portion of the pixel array active area which is read-out and\n> + * processed\n> + *\n> + * The analog crop rectangle top-left corner is defined as the displacement\n> + * from the top-left corner of the pixel array active area. The rectangle\n> + * horizontal and vertical sizes define the portion of the pixel array which\n> + * is read-out and provided to the sensor's internal processing pipeline, before\n> + * any pixel sub-sampling method, such as pixel binning, skipping and averaging\n> + * take place.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::outputSize\n> + * \\brief The size of the images produced by the camera sensor\n> + *\n> + * The output image size defines the horizontal and vertical sizes of the images\n> + * produced by the image sensor. The output image size is defined as the end\n> + * result of the sensor's internal image processing pipeline stages, applied on\n> + * the pixel array portion defined by the analog crop rectangle. Each image\n> + * processing stage that performs pixel sub-sampling techniques, such as pixel\n> + * binning or skipping, or perform any additional digital scaling concur in the\n> + * definition of the output image size.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::pixelRate\n> + * \\brief The number of pixels produced in a second\n> + *\n> + * To obtain the read-out time in seconds of a full line:\n> + *\n> + * \\verbatim\n> +       lineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::lineLength\n> + * \\brief Total line length in pixels\n> + *\n> + * The total line length in pixel clock periods, including blanking.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::minFrameLength\n> + * \\brief The minimum allowable frame length in units of lines\n> + *\n> + * The sensor frame length comprises of active output lines and blanking lines\n> + * in a frame. The minimum frame length value dictates the minimum allowable\n> + * frame duration of the sensor mode.\n> + *\n> + * To obtain the minimum frame duration:\n> + *\n> + * \\verbatim\n> +       frameDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::maxFrameLength\n> + * \\brief The maximum allowable frame length in units of lines\n> + *\n> + * The sensor frame length comprises of active output lines and blanking lines\n> + * in a frame. The maximum frame length value dictates the maximum allowable\n> + * frame duration of the sensor mode.\n> + *\n> + * To obtain the maximum frame duration:\n> + *\n> + * \\verbatim\n> +       frameDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n>  } /* namespace libcamera */\n>","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 C2278C31FF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 May 2021 09:12:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8A0E668920;\n\tFri, 21 May 2021 11:12:01 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EBC6068918\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 May 2021 11:12:00 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 91C4CACC;\n\tFri, 21 May 2021 11:12:00 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"TXbtTUi7\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621588320;\n\tbh=0JKjFBeCp7S/TP4g4maMwy1bp7APuP/5WMDipgDaCeU=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=TXbtTUi7dNIuSx5ALsuKDlkPD+5zclULYPxQ8iqlJFXXwltt8pqg59YZqQyoIHGu6\n\t/eGae4LUuKdgeCcVs3pTT90zGSCOaB79x3RdmxHk0wnOqjKRJTAlt/05TFsocKS7sR\n\th6D8Ca/caItAsz9EwZh81P5rGNiB32E0RGg4szjs=","To":"Umang Jain <umang.jain@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210519101954.77711-1-umang.jain@ideasonboard.com>\n\t<20210519101954.77711-3-umang.jain@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Organization":"Ideas on Board","Message-ID":"<1ab78d75-6ef5-b14d-267b-1f9861903c34@ideasonboard.com>","Date":"Fri, 21 May 2021 10:11:57 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.8.1","MIME-Version":"1.0","In-Reply-To":"<20210519101954.77711-3-umang.jain@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","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>","Reply-To":"kieran.bingham@ideasonboard.com","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17073,"web_url":"https://patchwork.libcamera.org/comment/17073/","msgid":"<20210521093117.llyum5uwoo343pga@uno.localdomain>","date":"2021-05-21T09:31:17","subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Umang\n\nOn Wed, May 19, 2021 at 03:49:49PM +0530, Umang Jain wrote:\n> CameraSensorInfo structure is designed to pass in camera sensor related\n> information from pipeline-handler to IPA. Since the pipeline-handler\n> and IPA are connected via mojom IPC IPA interface, the interface\n> itself provides a more suitable placement of CameraSensorInfo,\n> instead of camera_sensor.h (which is a libcamera internal header\n> ultimately, at this point).\n>\n> As CameraSensorInfo is already defined in core.mojom, it is just\n> a matter of removing [skipHeader] tag to allow code-generation\n> of CameraSensorInfo.\n>\n> Finally, update header paths to include CameraSensorInfo definition\n> from IPA interfaces instead of \"libcamera/internal/camera_sensor.h\".\n>\n> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\n[snip]\n\n> +\n> +/**\n> + * \\fn CameraSensorInfo::CameraSensorInfo(const std::string &model,\n> +\t\t\t\t\t  uint32_t bitsPerPixel,\n> +\t\t\t\t\t  const Size &activeAreaSize,\n> +\t\t\t\t\t  const Rectangle &analogCrop,\n> +\t\t\t\t\t  const Size &outputSize,\n> +\t\t\t\t\t  uint64_t pixelRate,\n> +\t\t\t\t\t  uint32_t lineLength,\n> +\t\t\t\t\t  uint32_t minFrameLength,\n> +\t\t\t\t\t  uint32_t maxFrameLength)\n\nWhat's this and why does it have this peculiar style ?\n\n> + * \\param[in] model\n> + * \\param[in] bitsPerPixel\n> + * \\param[in] activeAreaSize\n> + * \\param[in] analogCrop\n> + * \\param[in] outputSize\n> + * \\param[in] pixelRate\n> + * \\param[in] lineLength\n> + * \\param[in] minFrameLength\n> + * \\param[in] maxFrameLength\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::model\n> + * \\brief The image sensor model name\n> + *\n> + * The sensor model name is a free-formed string that uniquely identifies the\n> + * sensor model.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::bitsPerPixel\n> + * \\brief The number of bits per pixel of the image format produced by the\n> + * image sensor\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::activeAreaSize\n> + * \\brief The size of the pixel array active area of the sensor\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::analogCrop\n> + * \\brief The portion of the pixel array active area which is read-out and\n> + * processed\n> + *\n> + * The analog crop rectangle top-left corner is defined as the displacement\n> + * from the top-left corner of the pixel array active area. The rectangle\n> + * horizontal and vertical sizes define the portion of the pixel array which\n> + * is read-out and provided to the sensor's internal processing pipeline, before\n> + * any pixel sub-sampling method, such as pixel binning, skipping and averaging\n> + * take place.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::outputSize\n> + * \\brief The size of the images produced by the camera sensor\n> + *\n> + * The output image size defines the horizontal and vertical sizes of the images\n> + * produced by the image sensor. The output image size is defined as the end\n> + * result of the sensor's internal image processing pipeline stages, applied on\n> + * the pixel array portion defined by the analog crop rectangle. Each image\n> + * processing stage that performs pixel sub-sampling techniques, such as pixel\n> + * binning or skipping, or perform any additional digital scaling concur in the\n> + * definition of the output image size.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::pixelRate\n> + * \\brief The number of pixels produced in a second\n> + *\n> + * To obtain the read-out time in seconds of a full line:\n> + *\n> + * \\verbatim\n> +       lineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::lineLength\n> + * \\brief Total line length in pixels\n> + *\n> + * The total line length in pixel clock periods, including blanking.\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::minFrameLength\n> + * \\brief The minimum allowable frame length in units of lines\n> + *\n> + * The sensor frame length comprises of active output lines and blanking lines\n> + * in a frame. The minimum frame length value dictates the minimum allowable\n> + * frame duration of the sensor mode.\n> + *\n> + * To obtain the minimum frame duration:\n> + *\n> + * \\verbatim\n> +       frameDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n> +\n> +/**\n> + * \\var CameraSensorInfo::maxFrameLength\n> + * \\brief The maximum allowable frame length in units of lines\n> + *\n> + * The sensor frame length comprises of active output lines and blanking lines\n> + * in a frame. The maximum frame length value dictates the maximum allowable\n> + * frame duration of the sensor mode.\n> + *\n> + * To obtain the maximum frame duration:\n> + *\n> + * \\verbatim\n> +       frameDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n> +   \\endverbatim\n> + */\n>  } /* namespace libcamera */\n> --\n> 2.26.2\n>","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 1FF2CC31FB\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 May 2021 09:30:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 90D336891D;\n\tFri, 21 May 2021 11:30:33 +0200 (CEST)","from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net\n\t[217.70.183.194])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7E2C368918\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 May 2021 11:30:32 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay2-d.mail.gandi.net (Postfix) with ESMTPSA id B7B0B40008;\n\tFri, 21 May 2021 09:30:31 +0000 (UTC)"],"Date":"Fri, 21 May 2021 11:31:17 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<20210521093117.llyum5uwoo343pga@uno.localdomain>","References":"<20210519101954.77711-1-umang.jain@ideasonboard.com>\n\t<20210519101954.77711-3-umang.jain@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210519101954.77711-3-umang.jain@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":17086,"web_url":"https://patchwork.libcamera.org/comment/17086/","msgid":"<0f4a9329-db87-846c-988a-2e041577efe1@ideasonboard.com>","date":"2021-05-21T11:25:36","subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Jacopo\n\nOn 5/21/21 3:01 PM, Jacopo Mondi wrote:\n> Hi Umang\n>\n> On Wed, May 19, 2021 at 03:49:49PM +0530, Umang Jain wrote:\n>> CameraSensorInfo structure is designed to pass in camera sensor related\n>> information from pipeline-handler to IPA. Since the pipeline-handler\n>> and IPA are connected via mojom IPC IPA interface, the interface\n>> itself provides a more suitable placement of CameraSensorInfo,\n>> instead of camera_sensor.h (which is a libcamera internal header\n>> ultimately, at this point).\n>>\n>> As CameraSensorInfo is already defined in core.mojom, it is just\n>> a matter of removing [skipHeader] tag to allow code-generation\n>> of CameraSensorInfo.\n>>\n>> Finally, update header paths to include CameraSensorInfo definition\n>> from IPA interfaces instead of \"libcamera/internal/camera_sensor.h\".\n>>\n>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>\n>> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> [snip]\n>\n>> +\n>> +/**\n>> + * \\fn CameraSensorInfo::CameraSensorInfo(const std::string &model,\n>> +\t\t\t\t\t  uint32_t bitsPerPixel,\n>> +\t\t\t\t\t  const Size &activeAreaSize,\n>> +\t\t\t\t\t  const Rectangle &analogCrop,\n>> +\t\t\t\t\t  const Size &outputSize,\n>> +\t\t\t\t\t  uint64_t pixelRate,\n>> +\t\t\t\t\t  uint32_t lineLength,\n>> +\t\t\t\t\t  uint32_t minFrameLength,\n>> +\t\t\t\t\t  uint32_t maxFrameLength)\n> What's this and why does it have this peculiar style ?\nouch, it looked fine to me in vim and checkstyle wasn't able to catch \nthis (I double checked right-now)\nFixing it in next iteration. Thanks for noticing\n>\n>> + * \\param[in] model\n>> + * \\param[in] bitsPerPixel\n>> + * \\param[in] activeAreaSize\n>> + * \\param[in] analogCrop\n>> + * \\param[in] outputSize\n>> + * \\param[in] pixelRate\n>> + * \\param[in] lineLength\n>> + * \\param[in] minFrameLength\n>> + * \\param[in] maxFrameLength\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::model\n>> + * \\brief The image sensor model name\n>> + *\n>> + * The sensor model name is a free-formed string that uniquely identifies the\n>> + * sensor model.\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::bitsPerPixel\n>> + * \\brief The number of bits per pixel of the image format produced by the\n>> + * image sensor\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::activeAreaSize\n>> + * \\brief The size of the pixel array active area of the sensor\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::analogCrop\n>> + * \\brief The portion of the pixel array active area which is read-out and\n>> + * processed\n>> + *\n>> + * The analog crop rectangle top-left corner is defined as the displacement\n>> + * from the top-left corner of the pixel array active area. The rectangle\n>> + * horizontal and vertical sizes define the portion of the pixel array which\n>> + * is read-out and provided to the sensor's internal processing pipeline, before\n>> + * any pixel sub-sampling method, such as pixel binning, skipping and averaging\n>> + * take place.\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::outputSize\n>> + * \\brief The size of the images produced by the camera sensor\n>> + *\n>> + * The output image size defines the horizontal and vertical sizes of the images\n>> + * produced by the image sensor. The output image size is defined as the end\n>> + * result of the sensor's internal image processing pipeline stages, applied on\n>> + * the pixel array portion defined by the analog crop rectangle. Each image\n>> + * processing stage that performs pixel sub-sampling techniques, such as pixel\n>> + * binning or skipping, or perform any additional digital scaling concur in the\n>> + * definition of the output image size.\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::pixelRate\n>> + * \\brief The number of pixels produced in a second\n>> + *\n>> + * To obtain the read-out time in seconds of a full line:\n>> + *\n>> + * \\verbatim\n>> +       lineDuration(s) = lineLength(pixels) / pixelRate(pixels per second)\n>> +   \\endverbatim\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::lineLength\n>> + * \\brief Total line length in pixels\n>> + *\n>> + * The total line length in pixel clock periods, including blanking.\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::minFrameLength\n>> + * \\brief The minimum allowable frame length in units of lines\n>> + *\n>> + * The sensor frame length comprises of active output lines and blanking lines\n>> + * in a frame. The minimum frame length value dictates the minimum allowable\n>> + * frame duration of the sensor mode.\n>> + *\n>> + * To obtain the minimum frame duration:\n>> + *\n>> + * \\verbatim\n>> +       frameDuration(s) = minFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n>> +   \\endverbatim\n>> + */\n>> +\n>> +/**\n>> + * \\var CameraSensorInfo::maxFrameLength\n>> + * \\brief The maximum allowable frame length in units of lines\n>> + *\n>> + * The sensor frame length comprises of active output lines and blanking lines\n>> + * in a frame. The maximum frame length value dictates the maximum allowable\n>> + * frame duration of the sensor mode.\n>> + *\n>> + * To obtain the maximum frame duration:\n>> + *\n>> + * \\verbatim\n>> +       frameDuration(s) = maxFrameLength(lines) * lineLength(pixels) / pixelRate(pixels per second)\n>> +   \\endverbatim\n>> + */\n>>   } /* namespace libcamera */\n>> --\n>> 2.26.2\n>>","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 B83C8C31FF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 May 2021 11:25:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0D1836891D;\n\tFri, 21 May 2021 13:25:44 +0200 (CEST)","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 CDE7768911\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 May 2021 13:25:42 +0200 (CEST)","from localhost.localdomain (unknown [103.251.226.162])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D3A9E8D8;\n\tFri, 21 May 2021 13:25:41 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"EcYxDrYB\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1621596342;\n\tbh=3x4CrLKMw9YUwuGDj3XyKpuA46dVPwVK7SI9M1vyl7M=;\n\th=Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=EcYxDrYBj2s3/GPQC/vHlDwfhkUZXc157MPAlLPuScZbGZNaByOUuE2lOfN4jGnFx\n\t6A9QpoEXMzUj/6f9qk7JHqK1MrebqwpqosOjFHYu1N6/YfcoPJqwo0nDXe1nH7/eZu\n\t3YlGXN8WlpGrRSP4V6dJGaBA52sZAC71ApVv4K2o=","To":"Jacopo Mondi <jacopo@jmondi.org>","References":"<20210519101954.77711-1-umang.jain@ideasonboard.com>\n\t<20210519101954.77711-3-umang.jain@ideasonboard.com>\n\t<20210521093117.llyum5uwoo343pga@uno.localdomain>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<0f4a9329-db87-846c-988a-2e041577efe1@ideasonboard.com>","Date":"Fri, 21 May 2021 16:55:36 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.11.0","MIME-Version":"1.0","In-Reply-To":"<20210521093117.llyum5uwoo343pga@uno.localdomain>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH v2 2/7] ipa: mojom: Move\n\tCameraSensorInfo struct exclusively to IPA IPC","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]