[{"id":20449,"web_url":"https://patchwork.libcamera.org/comment/20449/","msgid":"<YXbjjwYzmoyBEiL0@pendragon.ideasonboard.com>","date":"2021-10-25T17:04:15","subject":"Re: [libcamera-devel] [PATCH v2 5/6] pipeline: raspberrypi: Account\n\tfor a missing Unicam embedded data node","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nThank you for the patch.\n\nOn Fri, Oct 22, 2021 at 03:39:06PM +0100, Naushir Patuck wrote:\n> The unicam driver no longer regesters an embedded data node if the sensor does\n\ns/regesters/registers/\n\n> not provide this stream. Account for this in the pipeline handler match routine\n> by not assuming it is always present.\n> \n> Add a warning if Unicam and the CamHelper do not agree on the presense of sensor\n> embedded data, and disable its useage in these cases.\n\ns/useage/usage/\n\n> \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> Review-by: David Plowman <david.plowman@raspberrypi.com>\n> ---\n>  .../pipeline/raspberrypi/raspberrypi.cpp         | 16 +++++++++++++---\n>  1 file changed, 13 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> index 2b70b877e70a..c5e9607c7d95 100644\n> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> @@ -984,7 +984,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n>  \tDeviceMatch unicam(\"unicam\");\n>  \tDeviceMatch isp(\"bcm2835-isp\");\n>  \n> -\tunicam.add(\"unicam-embedded\");\n>  \tunicam.add(\"unicam-image\");\n>  \n>  \tisp.add(\"bcm2835-isp0-output0\"); /* Input */\n> @@ -1005,9 +1004,16 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n>  \t\treturn false;\n>  \n>  \t/* Locate and open the unicam video streams. */\n> -\tdata->unicam_[Unicam::Embedded] = RPi::Stream(\"Unicam Embedded\", unicam_->getEntityByName(\"unicam-embedded\"));\n>  \tdata->unicam_[Unicam::Image] = RPi::Stream(\"Unicam Image\", unicam_->getEntityByName(\"unicam-image\"));\n>  \n> +\t/* An embedded data node will not be present if the sensor does not support it. */\n> +\tMediaEntity *embeddedEntity = unicam_->getEntityByName(\"unicam-embedded\");\n> +\tif (embeddedEntity) {\n> +\t\tdata->unicam_[Unicam::Embedded] = RPi::Stream(\"Unicam Embedded\", embeddedEntity);\n> +\t\tdata->unicam_[Unicam::Embedded].dev()->bufferReady.connect(data.get(),\n> +\t\t\t\t\t\t\t\t\t   &RPiCameraData::unicamBufferDequeue);\n\nIt would be nice to keep signal connection uniform, but that's no big\ndeal.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t}\n> +\n>  \t/* Tag the ISP input stream as an import stream. */\n>  \tdata->isp_[Isp::Input] = RPi::Stream(\"ISP Input\", isp_->getEntityByName(\"bcm2835-isp0-output0\"), true);\n>  \tdata->isp_[Isp::Output0] = RPi::Stream(\"ISP Output0\", isp_->getEntityByName(\"bcm2835-isp0-capture1\"));\n> @@ -1017,7 +1023,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n>  \t/* Wire up all the buffer connections. */\n>  \tdata->unicam_[Unicam::Image].dev()->frameStart.connect(data.get(), &RPiCameraData::frameStarted);\n>  \tdata->unicam_[Unicam::Image].dev()->bufferReady.connect(data.get(), &RPiCameraData::unicamBufferDequeue);\n> -\tdata->unicam_[Unicam::Embedded].dev()->bufferReady.connect(data.get(), &RPiCameraData::unicamBufferDequeue);\n>  \tdata->isp_[Isp::Input].dev()->bufferReady.connect(data.get(), &RPiCameraData::ispInputDequeue);\n>  \tdata->isp_[Isp::Output0].dev()->bufferReady.connect(data.get(), &RPiCameraData::ispOutputDequeue);\n>  \tdata->isp_[Isp::Output1].dev()->bufferReady.connect(data.get(), &RPiCameraData::ispOutputDequeue);\n> @@ -1045,6 +1050,11 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n>  \t\treturn false;\n>  \t}\n>  \n> +\tif (sensorConfig.sensorMetadata ^ !!embeddedEntity) {\n> +\t\tLOG(RPI, Warning) << \"Mismatch between Unicam and CamHelper for embedded data usage!\";\n> +\t\tsensorConfig.sensorMetadata = false;\n> +\t}\n> +\n>  \t/*\n>  \t * Open all Unicam and ISP streams. The exception is the embedded data\n>  \t * stream, which only gets opened below if the IPA reports that the sensor","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 6471FBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 25 Oct 2021 17:04:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C16756486C;\n\tMon, 25 Oct 2021 19:04:40 +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 09C2960125\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 25 Oct 2021 19:04:39 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1D354119F;\n\tMon, 25 Oct 2021 19:04:37 +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=\"T5DWLf84\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1635181478;\n\tbh=gp1JZFN2BwlmiWFvMGrVS/Z+1tsO+Oxwh3MkkrCDqcc=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=T5DWLf84WNrxjyc8z8TOqfNX8I7l1jWD76hdaIxu8XtG+X5vtnbNIHYzw0t7obbvr\n\tiPciB1HgBGqHgvkcsaI749KIwY7ZccxbCKENdDxhVoolhLLnsJKobEK1TMhe+dMtQq\n\t+3WgaY77TzM9Wau26+h6OsP5/+pjGwjA5iiBL6Sk=","Date":"Mon, 25 Oct 2021 20:04:15 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<YXbjjwYzmoyBEiL0@pendragon.ideasonboard.com>","References":"<20211022143907.3089419-1-naush@raspberrypi.com>\n\t<20211022143907.3089419-6-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20211022143907.3089419-6-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v2 5/6] pipeline: raspberrypi: Account\n\tfor a missing Unicam embedded data node","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":20511,"web_url":"https://patchwork.libcamera.org/comment/20511/","msgid":"<CAEmqJPon5GA6ycP8d-j17ZX=ZQi8G9Xe5aFx=0L2Fi71DcS=0w@mail.gmail.com>","date":"2021-10-26T07:53:17","subject":"Re: [libcamera-devel] [PATCH v2 5/6] pipeline: raspberrypi: Account\n\tfor a missing Unicam embedded data node","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nThank you for your feedback.\n\nOn Mon, 25 Oct 2021 at 18:04, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Thank you for the patch.\n>\n> On Fri, Oct 22, 2021 at 03:39:06PM +0100, Naushir Patuck wrote:\n> > The unicam driver no longer regesters an embedded data node if the\n> sensor does\n>\n> s/regesters/registers/\n>\n> > not provide this stream. Account for this in the pipeline handler match\n> routine\n> > by not assuming it is always present.\n> >\n> > Add a warning if Unicam and the CamHelper do not agree on the presense\n> of sensor\n> > embedded data, and disable its useage in these cases.\n>\n> s/useage/usage/\n>\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > Review-by: David Plowman <david.plowman@raspberrypi.com>\n> > ---\n> >  .../pipeline/raspberrypi/raspberrypi.cpp         | 16 +++++++++++++---\n> >  1 file changed, 13 insertions(+), 3 deletions(-)\n> >\n> > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > index 2b70b877e70a..c5e9607c7d95 100644\n> > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > @@ -984,7 +984,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator\n> *enumerator)\n> >       DeviceMatch unicam(\"unicam\");\n> >       DeviceMatch isp(\"bcm2835-isp\");\n> >\n> > -     unicam.add(\"unicam-embedded\");\n> >       unicam.add(\"unicam-image\");\n> >\n> >       isp.add(\"bcm2835-isp0-output0\"); /* Input */\n> > @@ -1005,9 +1004,16 @@ bool PipelineHandlerRPi::match(DeviceEnumerator\n> *enumerator)\n> >               return false;\n> >\n> >       /* Locate and open the unicam video streams. */\n> > -     data->unicam_[Unicam::Embedded] = RPi::Stream(\"Unicam Embedded\",\n> unicam_->getEntityByName(\"unicam-embedded\"));\n> >       data->unicam_[Unicam::Image] = RPi::Stream(\"Unicam Image\",\n> unicam_->getEntityByName(\"unicam-image\"));\n> >\n> > +     /* An embedded data node will not be present if the sensor does\n> not support it. */\n> > +     MediaEntity *embeddedEntity =\n> unicam_->getEntityByName(\"unicam-embedded\");\n> > +     if (embeddedEntity) {\n> > +             data->unicam_[Unicam::Embedded] = RPi::Stream(\"Unicam\n> Embedded\", embeddedEntity);\n> > +\n>  data->unicam_[Unicam::Embedded].dev()->bufferReady.connect(data.get(),\n> > +\n> &RPiCameraData::unicamBufferDequeue);\n>\n> It would be nice to keep signal connection uniform, but that's no big\n> deal.\n>\n\nNot sure I understand here.  If the embedded node is absent in cases where\nthe sensor\ndoes not support it, data->unicam_[Unicam::Embedded].dev() will not be\nvalid, so cannot\nconnect to anything?\n\nRegards,\nNaush\n\n\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> > +     }\n> > +\n> >       /* Tag the ISP input stream as an import stream. */\n> >       data->isp_[Isp::Input] = RPi::Stream(\"ISP Input\",\n> isp_->getEntityByName(\"bcm2835-isp0-output0\"), true);\n> >       data->isp_[Isp::Output0] = RPi::Stream(\"ISP Output0\",\n> isp_->getEntityByName(\"bcm2835-isp0-capture1\"));\n> > @@ -1017,7 +1023,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator\n> *enumerator)\n> >       /* Wire up all the buffer connections. */\n> >       data->unicam_[Unicam::Image].dev()->frameStart.connect(data.get(),\n> &RPiCameraData::frameStarted);\n> >\n>  data->unicam_[Unicam::Image].dev()->bufferReady.connect(data.get(),\n> &RPiCameraData::unicamBufferDequeue);\n> > -\n>  data->unicam_[Unicam::Embedded].dev()->bufferReady.connect(data.get(),\n> &RPiCameraData::unicamBufferDequeue);\n> >       data->isp_[Isp::Input].dev()->bufferReady.connect(data.get(),\n> &RPiCameraData::ispInputDequeue);\n> >       data->isp_[Isp::Output0].dev()->bufferReady.connect(data.get(),\n> &RPiCameraData::ispOutputDequeue);\n> >       data->isp_[Isp::Output1].dev()->bufferReady.connect(data.get(),\n> &RPiCameraData::ispOutputDequeue);\n> > @@ -1045,6 +1050,11 @@ bool PipelineHandlerRPi::match(DeviceEnumerator\n> *enumerator)\n> >               return false;\n> >       }\n> >\n> > +     if (sensorConfig.sensorMetadata ^ !!embeddedEntity) {\n> > +             LOG(RPI, Warning) << \"Mismatch between Unicam and\n> CamHelper for embedded data usage!\";\n> > +             sensorConfig.sensorMetadata = false;\n> > +     }\n> > +\n> >       /*\n> >        * Open all Unicam and ISP streams. The exception is the embedded\n> data\n> >        * stream, which only gets opened below if the IPA reports that\n> the sensor\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\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 E75AFBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 26 Oct 2021 07:53:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6569964878;\n\tTue, 26 Oct 2021 09:53:36 +0200 (CEST)","from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com\n\t[IPv6:2a00:1450:4864:20::22c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2A85660123\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Oct 2021 09:53:34 +0200 (CEST)","by mail-lj1-x22c.google.com with SMTP id n7so14544868ljp.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Oct 2021 00:53:34 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"P3QmpKSX\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=LR6bRJiVUhxtWqhVY/0l71+6L69dTFRoU8ioA/0A/UQ=;\n\tb=P3QmpKSXCyU46m4a62SUbONNJY/6u9su3i75HuyKHdyG7WYP+x/CH9slcDXVMoMaFc\n\teFDWm3EVtyviAlLnwos5yoV4l1GTNqBbKJAUQlezIPbON0kpumHTJmYO5eHBo08yq8Yt\n\tA+NU4zPBTDa7cfrPG6x4LLzMcgqD+1iQJiXrF4WJRw+lYT0/Xs5Qhh9U3DXNahdvB55N\n\t/rjc08rV1Jv7UgJ6RRvhHtlDNrwWe8HiQy+f+GhZE88ag+ZxABgWwf+B82mOz6j/1XZ+\n\tfnMZA/7u9laAoG+YW2UDIBSQTUBuzunpYeF2YGSOL+CovXy+wjyrqLBsafbs5L1sQU3S\n\tFzTA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=LR6bRJiVUhxtWqhVY/0l71+6L69dTFRoU8ioA/0A/UQ=;\n\tb=yJqReXQ7vag0OydDB1Mp+OIoONW75op0JoCDQJxkPlFwPRx/hvub0+wP2z/fYZqhpL\n\tGonT0uYwJkA6nNhAFCjTp3kiOcwhcy+TNYkFsAQN+tEbwgZqzEvm3B4P1hAhkJoelpFl\n\tlimYfAfy7+8Np/RSaYy8o8QNv93dycoRr6SJuYgzCQJbWvlSee5UUrD23xVM81h/9j5/\n\ttAfioH3RaP1fSlUUk1h73tufshOMn7wL6LAAotw1BKJauTrdsx8r3eo1ZHr2h8CtWbHU\n\tMb8VnvjPJTGNMFtwb1XJNK+jwNJmC4pxTW7kejomqCX1F+1IzFDrj/16/7InzC4HwPE4\n\t7ZSg==","X-Gm-Message-State":"AOAM531f4UzKU8ax2+hz/MzUiLry4lP5lDkrct9HNescb24KhCIClTRz\n\t/ys4W2kqpOnEsgO1rgBFcrgWUep2KOFmCQX+FkAarZWxeFtkFtVn","X-Google-Smtp-Source":"ABdhPJwKqLLK2cBdBr+YOcelTbLO4oO3ut8H/JHlHeftH1DsF7prEulJyeYnp2rdYTYTgRRXJmuS+8PvXDA9yvT27g0=","X-Received":"by 2002:a2e:a710:: with SMTP id\n\ts16mr24086034lje.444.1635234813520; \n\tTue, 26 Oct 2021 00:53:33 -0700 (PDT)","MIME-Version":"1.0","References":"<20211022143907.3089419-1-naush@raspberrypi.com>\n\t<20211022143907.3089419-6-naush@raspberrypi.com>\n\t<YXbjjwYzmoyBEiL0@pendragon.ideasonboard.com>","In-Reply-To":"<YXbjjwYzmoyBEiL0@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 26 Oct 2021 08:53:17 +0100","Message-ID":"<CAEmqJPon5GA6ycP8d-j17ZX=ZQi8G9Xe5aFx=0L2Fi71DcS=0w@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000002f408405cf3cc658\"","Subject":"Re: [libcamera-devel] [PATCH v2 5/6] pipeline: raspberrypi: Account\n\tfor a missing Unicam embedded data node","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 <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":20525,"web_url":"https://patchwork.libcamera.org/comment/20525/","msgid":"<YXfJVX35WGet4PNZ@pendragon.ideasonboard.com>","date":"2021-10-26T09:24:37","subject":"Re: [libcamera-devel] [PATCH v2 5/6] pipeline: raspberrypi: Account\n\tfor a missing Unicam embedded data node","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nOn Tue, Oct 26, 2021 at 08:53:17AM +0100, Naushir Patuck wrote:\n> On Mon, 25 Oct 2021 at 18:04, Laurent Pinchart wrote:\n> > On Fri, Oct 22, 2021 at 03:39:06PM +0100, Naushir Patuck wrote:\n> > > The unicam driver no longer regesters an embedded data node if the sensor does\n> >\n> > s/regesters/registers/\n> >\n> > > not provide this stream. Account for this in the pipeline handler match routine\n> > > by not assuming it is always present.\n> > >\n> > > Add a warning if Unicam and the CamHelper do not agree on the presense of sensor\n> > > embedded data, and disable its useage in these cases.\n> >\n> > s/useage/usage/\n> >\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > Review-by: David Plowman <david.plowman@raspberrypi.com>\n> > > ---\n> > >  .../pipeline/raspberrypi/raspberrypi.cpp         | 16 +++++++++++++---\n> > >  1 file changed, 13 insertions(+), 3 deletions(-)\n> > >\n> > > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > index 2b70b877e70a..c5e9607c7d95 100644\n> > > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n> > > @@ -984,7 +984,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n> > >       DeviceMatch unicam(\"unicam\");\n> > >       DeviceMatch isp(\"bcm2835-isp\");\n> > >\n> > > -     unicam.add(\"unicam-embedded\");\n> > >       unicam.add(\"unicam-image\");\n> > >\n> > >       isp.add(\"bcm2835-isp0-output0\"); /* Input */\n> > > @@ -1005,9 +1004,16 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n> > >               return false;\n> > >\n> > >       /* Locate and open the unicam video streams. */\n> > > -     data->unicam_[Unicam::Embedded] = RPi::Stream(\"Unicam Embedded\", unicam_->getEntityByName(\"unicam-embedded\"));\n> > >       data->unicam_[Unicam::Image] = RPi::Stream(\"Unicam Image\", unicam_->getEntityByName(\"unicam-image\"));\n> > >\n> > > +     /* An embedded data node will not be present if the sensor does not support it. */\n> > > +     MediaEntity *embeddedEntity = unicam_->getEntityByName(\"unicam-embedded\");\n> > > +     if (embeddedEntity) {\n> > > +             data->unicam_[Unicam::Embedded] = RPi::Stream(\"Unicam Embedded\", embeddedEntity);\n> > > +  data->unicam_[Unicam::Embedded].dev()->bufferReady.connect(data.get(),\n> > > + &RPiCameraData::unicamBufferDequeue);\n> >\n> > It would be nice to keep signal connection uniform, but that's no big\n> > deal.\n> \n> Not sure I understand here.  If the embedded node is absent in cases where the sensor\n> does not support it, data->unicam_[Unicam::Embedded].dev() will not be valid, so cannot\n> connect to anything?\n\nI meant that it would have been nice to keep the signal connection with\nall the other ones below, but it's really not a big deal, just an\nOCD-triggered comment :-)\n\n> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> >\n> > > +     }\n> > > +\n> > >       /* Tag the ISP input stream as an import stream. */\n> > >       data->isp_[Isp::Input] = RPi::Stream(\"ISP Input\", isp_->getEntityByName(\"bcm2835-isp0-output0\"), true);\n> > >       data->isp_[Isp::Output0] = RPi::Stream(\"ISP Output0\", isp_->getEntityByName(\"bcm2835-isp0-capture1\"));\n> > > @@ -1017,7 +1023,6 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n> > >       /* Wire up all the buffer connections. */\n> > >       data->unicam_[Unicam::Image].dev()->frameStart.connect(data.get(), &RPiCameraData::frameStarted);\n> > >  data->unicam_[Unicam::Image].dev()->bufferReady.connect(data.get(), &RPiCameraData::unicamBufferDequeue);\n> > > -  data->unicam_[Unicam::Embedded].dev()->bufferReady.connect(data.get(), &RPiCameraData::unicamBufferDequeue);\n> > >       data->isp_[Isp::Input].dev()->bufferReady.connect(data.get(), &RPiCameraData::ispInputDequeue);\n> > >       data->isp_[Isp::Output0].dev()->bufferReady.connect(data.get(), &RPiCameraData::ispOutputDequeue);\n> > >       data->isp_[Isp::Output1].dev()->bufferReady.connect(data.get(), &RPiCameraData::ispOutputDequeue);\n> > > @@ -1045,6 +1050,11 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)\n> > >               return false;\n> > >       }\n> > >\n> > > +     if (sensorConfig.sensorMetadata ^ !!embeddedEntity) {\n> > > +             LOG(RPI, Warning) << \"Mismatch between Unicam and CamHelper for embedded data usage!\";\n> > > +             sensorConfig.sensorMetadata = false;\n> > > +     }\n> > > +\n> > >       /*\n> > >        * Open all Unicam and ISP streams. The exception is the embedded data\n> > >        * stream, which only gets opened below if the IPA reports that the sensor","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 A29FCBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 26 Oct 2021 09:25:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id ECFE364878;\n\tTue, 26 Oct 2021 11:25:01 +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 5FC5760123\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Oct 2021 11:25:00 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CE3973F0;\n\tTue, 26 Oct 2021 11:24:59 +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=\"KkeoyATO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1635240300;\n\tbh=NNyqhODfQ+b58pKYwOZ1IOKadvEnMnAbd3x4a/ksIUA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=KkeoyATOhZXEFRkfvC5cRlMX0OmtrodWY5tyyPWglODsqEvZ2m6HzRcKSHxDlgEOq\n\tCzGkMaWArH4wExdEoh1SvxryAR+kzkeySe4YYWfxV0ZUVaSAi6JjNYoV7qGieJYEss\n\tV+EoAvat6PY6hIQSn90roE+pMubkvb/Q1XubaeFc=","Date":"Tue, 26 Oct 2021 12:24:37 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<YXfJVX35WGet4PNZ@pendragon.ideasonboard.com>","References":"<20211022143907.3089419-1-naush@raspberrypi.com>\n\t<20211022143907.3089419-6-naush@raspberrypi.com>\n\t<YXbjjwYzmoyBEiL0@pendragon.ideasonboard.com>\n\t<CAEmqJPon5GA6ycP8d-j17ZX=ZQi8G9Xe5aFx=0L2Fi71DcS=0w@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPon5GA6ycP8d-j17ZX=ZQi8G9Xe5aFx=0L2Fi71DcS=0w@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v2 5/6] pipeline: raspberrypi: Account\n\tfor a missing Unicam embedded data node","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 <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]