[{"id":3202,"web_url":"https://patchwork.libcamera.org/comment/3202/","msgid":"<20191206222724.GQ28879@bigcity.dyn.berto.se>","date":"2019-12-06T22:27:24","subject":"Re: [libcamera-devel] [PATCH v2 07/10] libcamera: pipeline_handler:\n\tAdd Camera properties","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your work.\n\nOn 2019-12-05 21:43:47 +0100, Jacopo Mondi wrote:\n> Associate to each Camera a ControlList which contains the Camera\n> properties as created by pipeline handlers in the pipeline handler's\n> CameraData and provide an operation to retrieve them.\n> \n> Collect properties from the camera sensor in all pipeline handlers that\n> support one (IPU3, RKISP1 and VIMC).\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/include/pipeline_handler.h |  2 ++\n>  src/libcamera/pipeline/ipu3/ipu3.cpp     |  3 +++\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp |  3 +++\n>  src/libcamera/pipeline/vimc.cpp          |  4 ++++\n>  src/libcamera/pipeline_handler.cpp       | 19 +++++++++++++++++++\n>  5 files changed, 31 insertions(+)\n> \n> diff --git a/src/libcamera/include/pipeline_handler.h b/src/libcamera/include/pipeline_handler.h\n> index a02e6e77dc9c..68761cc473c4 100644\n> --- a/src/libcamera/include/pipeline_handler.h\n> +++ b/src/libcamera/include/pipeline_handler.h\n> @@ -43,6 +43,7 @@ public:\n>  \tPipelineHandler *pipe_;\n>  \tstd::list<Request *> queuedRequests_;\n>  \tControlInfoMap controlInfo_;\n> +\tControlList properties_;\n>  \tstd::unique_ptr<IPAInterface> ipa_;\n>  \n>  private:\n> @@ -64,6 +65,7 @@ public:\n>  \tvoid unlock();\n>  \n>  \tconst ControlInfoMap &controls(Camera *camera);\n> +\tconst ControlList &properties(Camera *camera);\n>  \n>  \tvirtual CameraConfiguration *generateConfiguration(Camera *camera,\n>  \t\tconst StreamRoles &roles) = 0;\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 1c5fccf69428..536a63a30018 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -867,6 +867,9 @@ int PipelineHandlerIPU3::registerCameras()\n>  \t\tif (ret)\n>  \t\t\tcontinue;\n>  \n> +\t\t/* Initialize the camera properties. */\n> +\t\tdata->properties_ = cio2->sensor_->properties();\n> +\n>  \t\t/**\n>  \t\t * \\todo Dynamically assign ImgU and output devices to each\n>  \t\t * stream and camera; as of now, limit support to two cameras\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 4a583a7a1d7e..e9a70755f4c5 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -888,6 +888,9 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor)\n>  \tif (ret)\n>  \t\treturn ret;\n>  \n> +\t/* Initialize the camera properties. */\n> +\tdata->properties_ = data->sensor_->properties();\n> +\n>  \tret = data->loadIPA();\n>  \tif (ret)\n>  \t\treturn ret;\n> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\n> index 06664fed42e7..f043cf55889e 100644\n> --- a/src/libcamera/pipeline/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc.cpp\n> @@ -454,6 +454,10 @@ int VimcCameraData::init(MediaDevice *media)\n>  \t}\n>  \n>  \tcontrolInfo_ = std::move(ctrls);\n> +\n> +\t/* Initialize the camera properties. */\n> +\tproperties_ = sensor_->properties();\n> +\n>  \treturn 0;\n>  }\n>  \n> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\n> index 4349ca8957e4..a023fa1001f5 100644\n> --- a/src/libcamera/pipeline_handler.cpp\n> +++ b/src/libcamera/pipeline_handler.cpp\n> @@ -96,6 +96,14 @@ LOG_DEFINE_CATEGORY(Pipeline)\n>   * creating the camera, and shall not be modified afterwards.\n>   */\n>  \n> +/**\n> + * \\var CameraData::properties_\n> + * \\brief The list of properties supported by the camera\n> + *\n> + * The list of camera properties shall be initialised by the pipeline handler\n> + * when creating the camera, and shall not be modified afterwards.\n> + */\n> +\n>  /**\n>   * \\var CameraData::ipa_\n>   * \\brief The IPA module used by the camera\n> @@ -244,6 +252,17 @@ const ControlInfoMap &PipelineHandler::controls(Camera *camera)\n>  \treturn data->controlInfo_;\n>  }\n>  \n> +/**\n> + * \\brief Retrieve the list of properties for a camera\n> + * \\param[in] camera The camera\n> + * \\return A ControlList of properties supported by \\a camera\n> + */\n> +const ControlList &PipelineHandler::properties(Camera *camera)\n> +{\n> +\tCameraData *data = cameraData(camera);\n> +\treturn data->properties_;\n> +}\n> +\n>  /**\n>   * \\fn PipelineHandler::generateConfiguration()\n>   * \\brief Generate a camera configuration for a specified camera\n> -- \n> 2.23.0\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x241.google.com (mail-lj1-x241.google.com\n\t[IPv6:2a00:1450:4864:20::241])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E88FA60BBC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  6 Dec 2019 23:27:26 +0100 (CET)","by mail-lj1-x241.google.com with SMTP id d20so9248231ljc.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 06 Dec 2019 14:27:26 -0800 (PST)","from localhost (h-93-159.A463.priv.bahnhof.se. [46.59.93.159])\n\tby smtp.gmail.com with ESMTPSA id\n\ty11sm8324959lfc.27.2019.12.06.14.27.25\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 06 Dec 2019 14:27:25 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to\n\t:user-agent; bh=dqDrJ1L4AEtejLJBytkls11xNTY6ruDACp476EmQL14=;\n\tb=LrZWB4jO2X+rb7luHmom+z6coBymi7Yf8TTY46Uc0bounZgKjDFXzsO6SIR0hEOyb8\n\tIiUpg/Om1JztcA1j0MnGsZsL7ydmeAY7jmUCaOree1iAqHzWjGu2/2o1mv2YpTcIXJ9S\n\tB3nUDqSDD1IIzJCC0+ttGYkj587lbcEIMya7Q0CoSIOmLTqRm9gi41rXYYDl+dqtAdxP\n\tRIpIqtssAeUM5ZkoATrsDDVjQ1b3HH0kQD/1o1qMBSYcXpQ96NzmleLvLSwiE+Mn9IZL\n\tZABqDw5cRL/SoNlYf5iy3s9caYzjBF9cpbong2iqMSEQsrUCp6OecE100O3NsxIYfCxG\n\tsBUQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to:user-agent;\n\tbh=dqDrJ1L4AEtejLJBytkls11xNTY6ruDACp476EmQL14=;\n\tb=ce14iQWw+ZXOBTvf1VpzWftXrKBaa77vC7Y+2wje6+b6aJ1+9AEysTEyyUBkdcSWnQ\n\tOLyHYx+bgWjo+so6FS3DaypWmEuVpUnDQ690OsRppUANyKE5Mc9ZQMb9RrakrfN8XPdP\n\t1wGAmE6shUwlXA5Xi6ekb88JvOJulTs6//xkbfGzc1zrPNlt6nXu+o/Sn4Bt8jyxreg8\n\thLnrLGxg+Ql2zVTBCZdLXY44esHZnYJ0qCZM/m8GmAA7oCS99rbayWMcaxdFv4f6LEWo\n\t+7/qSyAII0RZtwn/yfg58Ha6AlSk6Bz8zHvi0LyIOAWMawouWlKhM77CE1Kk0AB842d0\n\t2f+A==","X-Gm-Message-State":"APjAAAU/ndi716eyqwwHlXe3jCLlgJ6EXOaxp/z3cgHQI3sf7EhL6uyK\n\tG5EBUxIP14GycmfzW1EILr10fHzkPCI=","X-Google-Smtp-Source":"APXvYqzno+J///nP1I/Si1xNn6u4Le8+5f/ORgnM+ARop2EzS0M2O0GnkAkJ+RybG3x1dngl/ATQ+A==","X-Received":"by 2002:a2e:585e:: with SMTP id\n\tx30mr10370948ljd.141.1575671246295; \n\tFri, 06 Dec 2019 14:27:26 -0800 (PST)","Date":"Fri, 6 Dec 2019 23:27:24 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191206222724.GQ28879@bigcity.dyn.berto.se>","References":"<20191205204350.28196-1-jacopo@jmondi.org>\n\t<20191205204350.28196-8-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20191205204350.28196-8-jacopo@jmondi.org>","User-Agent":"Mutt/1.12.1 (2019-06-15)","Subject":"Re: [libcamera-devel] [PATCH v2 07/10] libcamera: pipeline_handler:\n\tAdd Camera properties","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":"Fri, 06 Dec 2019 22:27:27 -0000"}}]