[{"id":11284,"web_url":"https://patchwork.libcamera.org/comment/11284/","msgid":"<20200709133224.GL3875643@oden.dyn.berto.se>","date":"2020-07-09T13:32:24","subject":"Re: [libcamera-devel] [PATCH v2 09/20] libcamera: camera: Zero\n\tstreams before validate()","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 2020-07-09 10:41:17 +0200, Jacopo Mondi wrote:\n> The current implementation of the Camera::configure() method zeroes the\n> stream pointers assigned to the StreamConfiguration items before calling\n> the pipeline handler configure() operation, just after the\n> CameraConfiguration has been validated.\n> \n> This discards the stream assignment performed at pipeline hander\n> validation time, requiring platforms that need to perform that early\n> assignment to maintain the association in place with custom data\n> structures.\n> \n> To allow pipeline handlers to use StreamConfiguration::setStream() at\n> validate() time, zero the stream assignment before calling validate().\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/camera.cpp | 4 +++-\n>  1 file changed, 3 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index 69a1b4428e3f..ca88c48b2830 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -753,6 +753,9 @@ int Camera::configure(CameraConfiguration *config)\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>  \n> +\tfor (auto it : *config)\n> +\t\tit.setStream(nullptr);\n> +\n>  \tif (config->validate() != CameraConfiguration::Valid) {\n>  \t\tLOG(Camera, Error)\n>  \t\t\t<< \"Can't configure camera with invalid configuration\";\n> @@ -763,7 +766,6 @@ int Camera::configure(CameraConfiguration *config)\n>  \n>  \tfor (unsigned int index = 0; index < config->size(); ++index) {\n>  \t\tStreamConfiguration &cfg = config->at(index);\n> -\t\tcfg.setStream(nullptr);\n>  \t\tmsg << \" (\" << index << \") \" << cfg.toString();\n>  \t}\n>  \n> -- \n> 2.27.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":"<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 508B1BD790\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  9 Jul 2020 13:32:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D2E7E611BA;\n\tThu,  9 Jul 2020 15:32:27 +0200 (CEST)","from mail-lj1-x242.google.com (mail-lj1-x242.google.com\n\t[IPv6:2a00:1450:4864:20::242])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E1589611B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  9 Jul 2020 15:32:25 +0200 (CEST)","by mail-lj1-x242.google.com with SMTP id q4so2424842lji.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 09 Jul 2020 06:32:25 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tr22sm935269lfm.30.2020.07.09.06.32.24\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 09 Jul 2020 06:32:24 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"jxLTc3/O\"; dkim-atps=neutral","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\tbh=gd8FLgCfnVWdhTCn+l8p7V93KtsLpPHnlI6POSfgfQM=;\n\tb=jxLTc3/ODIYukzpLdk0yyUU403YeoesHA2UAxAFljJU4WwAo/fk/w298g1q1Cf6v1r\n\tdvPPncJest4asPXW0GO72NMBQtxZPUWutXG8UaDU+dC+pBSPBau7+S8hq3+/8WWDN02h\n\taHmqTVUfUIwWwQdjj0N3w7ZeJKqSl/Zz9BbWa6yK4LSK+IyXsdtWj0gc2WXyUlH4GwRv\n\tB6EFioFZ9cs7lvL8ytoqh6415yaFLfXQ2S2Ik2W3afpRIRImLS1sdXQmBUbKp+/vmzMd\n\tguRnKGZ43oW4vVPtcjJ8pI0T5iwJ9xermW9Gw7QpWKjbx2KNjVrR5faWNyOOLKaUlOF0\n\tPInA==","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;\n\tbh=gd8FLgCfnVWdhTCn+l8p7V93KtsLpPHnlI6POSfgfQM=;\n\tb=syLPjk9T8b9hbz7tIFcnNJsLkDnObwJ0gW7S0AMObRwrGfTytThurW2nawnnfWLZOn\n\tAfKRXwnoDYX83J7z5OZPqqw9Y7ufZGKqRQQdCwulPH3rmAtTeRvQfwki9bAFtbVivb7F\n\teawXlRsA5I56KAh0Ovjsy6j6e1vpfHyI6vrQgHxXRVH3Se8ia5pJ7HIq02ZHSek8J2Hv\n\tWiuKSPx3cGdrO3IMpI3VUzjQ66p3H2nez/PhJ6vtXaMIfDskD5lG+li5DkQeaLcdJ1Yx\n\tIPjGoNR19w82XPm3b6DzhS/J0OueWd7ppjLvtBTbYk2g3wKZuV/BS70w7vYinKD+ZPMU\n\tRaiQ==","X-Gm-Message-State":"AOAM531p8jQqSZyJ1LG+jCK/KISyUQuweQOqMtbTb+bGXhBa64uODCGI\n\tMev4K++e6rJjvF/IypR2FTiWIA==","X-Google-Smtp-Source":"ABdhPJzAQ6rxvXdtRrbH4/ycBWrl73RpBxKwQbCJLvwV1Jmne3umfrl/y9a9ixGhDCnBMKV59/75tg==","X-Received":"by 2002:a2e:9891:: with SMTP id\n\tb17mr33925639ljj.22.1594301545312; \n\tThu, 09 Jul 2020 06:32:25 -0700 (PDT)","Date":"Thu, 9 Jul 2020 15:32:24 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200709133224.GL3875643@oden.dyn.berto.se>","References":"<20200709084128.5316-1-jacopo@jmondi.org>\n\t<20200709084128.5316-10-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200709084128.5316-10-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH v2 09/20] libcamera: camera: Zero\n\tstreams before validate()","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=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11316,"web_url":"https://patchwork.libcamera.org/comment/11316/","msgid":"<20200710085748.GG5964@pendragon.ideasonboard.com>","date":"2020-07-10T08:57:48","subject":"Re: [libcamera-devel] [PATCH v2 09/20] libcamera: camera: Zero\n\tstreams before validate()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Thu, Jul 09, 2020 at 10:41:17AM +0200, Jacopo Mondi wrote:\n> The current implementation of the Camera::configure() method zeroes the\n> stream pointers assigned to the StreamConfiguration items before calling\n> the pipeline handler configure() operation, just after the\n> CameraConfiguration has been validated.\n> \n> This discards the stream assignment performed at pipeline hander\n> validation time, requiring platforms that need to perform that early\n> assignment to maintain the association in place with custom data\n> structures.\n> \n> To allow pipeline handlers to use StreamConfiguration::setStream() at\n> validate() time, zero the stream assignment before calling validate().\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/libcamera/camera.cpp | 4 +++-\n>  1 file changed, 3 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index 69a1b4428e3f..ca88c48b2830 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -753,6 +753,9 @@ int Camera::configure(CameraConfiguration *config)\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>  \n> +\tfor (auto it : *config)\n> +\t\tit.setStream(nullptr);\n> +\n>  \tif (config->validate() != CameraConfiguration::Valid) {\n>  \t\tLOG(Camera, Error)\n>  \t\t\t<< \"Can't configure camera with invalid configuration\";\n> @@ -763,7 +766,6 @@ int Camera::configure(CameraConfiguration *config)\n>  \n>  \tfor (unsigned int index = 0; index < config->size(); ++index) {\n>  \t\tStreamConfiguration &cfg = config->at(index);\n> -\t\tcfg.setStream(nullptr);\n>  \t\tmsg << \" (\" << index << \") \" << cfg.toString();\n>  \t}\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 0E259BD790\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 10 Jul 2020 08:58:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D0EFD613B3;\n\tFri, 10 Jul 2020 10:58:19 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8205761396\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 10 Jul 2020 10:58:18 +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 18B732C0;\n\tFri, 10 Jul 2020 10:58:18 +0200 (CEST)"],"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=\"fE/0Kc5s\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1594371498;\n\tbh=beA3xuKpMXXCIQyjUflCOUT54gVI7TaNpxTeE/8YxHc=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=fE/0Kc5sBmDgktcIkxBIhqFvyien5QqPMNbmge9gDPUsAw/7xzZKP5z7ZsAy0Z20Y\n\t4/l3c/UrEuyFUoU3kuQz+UCRg06DjzqxgkMgp/mBEZW3Ck95xnL6ZNi7mk5mlvUDwx\n\tkQZUofSFgztJZ1lq9fVvxzd0Ih0TRX1KbwdgaPwY=","Date":"Fri, 10 Jul 2020 11:57:48 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200710085748.GG5964@pendragon.ideasonboard.com>","References":"<20200709084128.5316-1-jacopo@jmondi.org>\n\t<20200709084128.5316-10-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200709084128.5316-10-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH v2 09/20] libcamera: camera: Zero\n\tstreams before validate()","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>"}}]