[{"id":34837,"web_url":"https://patchwork.libcamera.org/comment/34837/","msgid":"<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>","date":"2025-07-10T07:45:28","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Umang Jain (2025-07-01 12:29:21)\n> Virtual pipeline handler should provide colorSpace in\n> generateConfiguration() and validate the colorspace in validate().\n> It is mandatory for a pipeline handler to set the colorspace if it\n> is unset in the stream configuration, during validate().\n> \n> Signed-off-by: Umang Jain <uajain@igalia.com>\n> ---\n>  src/libcamera/pipeline/virtual/virtual.cpp | 12 ++++++++++++\n>  1 file changed, 12 insertions(+)\n> \n> diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> index 049ebcba..841846b4 100644\n> --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> @@ -180,6 +180,17 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()\n>                         adjusted = true;\n>                 }\n>  \n> +               if (!cfg.colorSpace) {\n> +                       cfg.colorSpace = ColorSpace::Sycc;\n> +                       status = Adjusted;\n> +                       adjusted = true;\n> +               }\n\nIt looks like virtual only uses NV12 so I think this is fine.\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> +\n> +               if (validateColorSpaces() == Adjusted) {\n> +                       status = Adjusted;\n> +                       adjusted = true;\n> +               }\n> +\n>                 if (adjusted)\n>                         LOG(Virtual, Info)\n>                                 << \"Stream configuration adjusted to \" << cfg.toString();\n> @@ -244,6 +255,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,\n>                 cfg.pixelFormat = pixelFormat;\n>                 cfg.size = data->config_.maxResolutionSize;\n>                 cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;\n> +               cfg.colorSpace = ColorSpace::Sycc;\n>  \n>                 config->addConfiguration(cfg);\n>         }\n> -- \n> 2.50.0\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 7BC82BE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 10 Jul 2025 07:45:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4A86B68EF9;\n\tThu, 10 Jul 2025 09:45:33 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C3B1368EAF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Jul 2025 09:45:31 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8375BF09;\n\tThu, 10 Jul 2025 09:45:02 +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=\"tt2V+wXx\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1752133502;\n\tbh=3IHTSiqJwamMrc09ckZh9Ci6dw66lA21eMKKDMEbRGU=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=tt2V+wXxGTeQXoO8tiC5O3jwI38r9LX8wu374+ItFkjJDBVw2JcLm09RCeEND/ixm\n\t8DyyToCPVnk3yR+MxtoqmEJeHh3x9rb5FrA8Q3n5r/nDPVOuZB/LQOEa97Spwr4Fq5\n\tR4R/ncQHbBWHlxAA25Psn44KBSjfxZXCwnMo1MmM=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250701112922.62285-2-uajain@igalia.com>","References":"<20250701112922.62285-1-uajain@igalia.com>\n\t<20250701112922.62285-2-uajain@igalia.com>","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Umang Jain <uajain@igalia.com>","To":"Umang Jain <uajain@igalia.com>, libcamera-devel@lists.libcamera.org","Date":"Thu, 10 Jul 2025 08:45:28 +0100","Message-ID":"<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":34838,"web_url":"https://patchwork.libcamera.org/comment/34838/","msgid":"<175213359905.2538045.8600763482359778577@ping.linuxembedded.co.uk>","date":"2025-07-10T07:46:39","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Kieran Bingham (2025-07-10 08:45:28)\n> Quoting Umang Jain (2025-07-01 12:29:21)\n> > Virtual pipeline handler should provide colorSpace in\n> > generateConfiguration() and validate the colorspace in validate().\n> > It is mandatory for a pipeline handler to set the colorspace if it\n> > is unset in the stream configuration, during validate().\n> > \n> > Signed-off-by: Umang Jain <uajain@igalia.com>\n\nFrom Robert, For patchwork:\n\nTested-by: Robert Mader <robert.mader@collabora.com>\n\n> > ---\n> >  src/libcamera/pipeline/virtual/virtual.cpp | 12 ++++++++++++\n> >  1 file changed, 12 insertions(+)\n> > \n> > diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> > index 049ebcba..841846b4 100644\n> > --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> > +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> > @@ -180,6 +180,17 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()\n> >                         adjusted = true;\n> >                 }\n> >  \n> > +               if (!cfg.colorSpace) {\n> > +                       cfg.colorSpace = ColorSpace::Sycc;\n> > +                       status = Adjusted;\n> > +                       adjusted = true;\n> > +               }\n> \n> It looks like virtual only uses NV12 so I think this is fine.\n> \n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > +\n> > +               if (validateColorSpaces() == Adjusted) {\n> > +                       status = Adjusted;\n> > +                       adjusted = true;\n> > +               }\n> > +\n> >                 if (adjusted)\n> >                         LOG(Virtual, Info)\n> >                                 << \"Stream configuration adjusted to \" << cfg.toString();\n> > @@ -244,6 +255,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,\n> >                 cfg.pixelFormat = pixelFormat;\n> >                 cfg.size = data->config_.maxResolutionSize;\n> >                 cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;\n> > +               cfg.colorSpace = ColorSpace::Sycc;\n> >  \n> >                 config->addConfiguration(cfg);\n> >         }\n> > -- \n> > 2.50.0\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 E43B7BE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 10 Jul 2025 07:46:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A120E68EF9;\n\tThu, 10 Jul 2025 09:46:44 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6A9A368EAF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Jul 2025 09:46:42 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B02B4524;\n\tThu, 10 Jul 2025 09:46:13 +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=\"ojt8n5c8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1752133573;\n\tbh=f+sSFu17Gf5z7PDJoeSXzkpn18XtpEjuTvooSBn6/80=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=ojt8n5c8/LILBuZVNZiLQ0qwOEv67HTnBFYuhyVF/IP1n+R4jT6rKdHau8gzd5R3q\n\tGlItsC9VF7Ld1GWSvBsz+Wkur125jzQTiFbqxVN91qqJbg0I1Lkt7L+TZJdtjDQ3Ly\n\t4NgijDrvTpixm8SqG6YylWq3Xm4sh3qhTHDRYV9I=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>","References":"<20250701112922.62285-1-uajain@igalia.com>\n\t<20250701112922.62285-2-uajain@igalia.com>\n\t<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Umang Jain <uajain@igalia.com>","To":"Umang Jain <uajain@igalia.com>, libcamera-devel@lists.libcamera.org","Date":"Thu, 10 Jul 2025 08:46:39 +0100","Message-ID":"<175213359905.2538045.8600763482359778577@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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":34883,"web_url":"https://patchwork.libcamera.org/comment/34883/","msgid":"<20250714111305.GD8243@pendragon.ideasonboard.com>","date":"2025-07-14T11:13:05","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Thu, Jul 10, 2025 at 08:45:28AM +0100, Kieran Bingham wrote:\n> Quoting Umang Jain (2025-07-01 12:29:21)\n> > Virtual pipeline handler should provide colorSpace in\n> > generateConfiguration() and validate the colorspace in validate().\n> > It is mandatory for a pipeline handler to set the colorspace if it\n> > is unset in the stream configuration, during validate().\n> > \n> > Signed-off-by: Umang Jain <uajain@igalia.com>\n> > ---\n> >  src/libcamera/pipeline/virtual/virtual.cpp | 12 ++++++++++++\n> >  1 file changed, 12 insertions(+)\n> > \n> > diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> > index 049ebcba..841846b4 100644\n> > --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> > +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> > @@ -180,6 +180,17 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()\n> >                         adjusted = true;\n> >                 }\n> >  \n> > +               if (!cfg.colorSpace) {\n> > +                       cfg.colorSpace = ColorSpace::Sycc;\n> > +                       status = Adjusted;\n> > +                       adjusted = true;\n> > +               }\n> \n> It looks like virtual only uses NV12 so I think this is fine.\n\nDoes the pipeline handler produce sYCC though ? This patch looks weird,\nbecause it only sets a default colorspace if none is requested, and\nkeeps the application-selected colorspace otherwise. I don't see code in\nthe pipeline handler that takes the colorspace into account to generate\nframes.\n\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > +\n> > +               if (validateColorSpaces() == Adjusted) {\n> > +                       status = Adjusted;\n> > +                       adjusted = true;\n> > +               }\n> > +\n> >                 if (adjusted)\n> >                         LOG(Virtual, Info)\n> >                                 << \"Stream configuration adjusted to \" << cfg.toString();\n> > @@ -244,6 +255,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,\n> >                 cfg.pixelFormat = pixelFormat;\n> >                 cfg.size = data->config_.maxResolutionSize;\n> >                 cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;\n> > +               cfg.colorSpace = ColorSpace::Sycc;\n> >  \n> >                 config->addConfiguration(cfg);\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 310A3BE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 14 Jul 2025 11:13:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7AC6B68F3E;\n\tMon, 14 Jul 2025 13:13:38 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DF3066186C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 14 Jul 2025 13:13:36 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 046D81127; \n\tMon, 14 Jul 2025 13:13:04 +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=\"sx7uXnL5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1752491585;\n\tbh=3Xzm24Y0fGlapJ31UcFR6Hft+yaGbO15ajxSLDBDr9o=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=sx7uXnL5BQnfec3mhVR6/V34pKRQSl/t2ZV1AYW2wkWF0bqAofx4BORHGtU4P836b\n\t5qeWw8lGv1fDI4cmKTgULGJ3lSfL4SL+90eIMv1MrfVwzVB7NOLzhhX0/91KcMp5Gc\n\t0fwSVucGByX8jOUGdvFLi0o5tRmBif72DQmhbFzs=","Date":"Mon, 14 Jul 2025 14:13:05 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Umang Jain <uajain@igalia.com>, libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","Message-ID":"<20250714111305.GD8243@pendragon.ideasonboard.com>","References":"<20250701112922.62285-1-uajain@igalia.com>\n\t<20250701112922.62285-2-uajain@igalia.com>\n\t<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>","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":34884,"web_url":"https://patchwork.libcamera.org/comment/34884/","msgid":"<zcidwsfoon4lrve62tjysvtf4bje2bfuiw4qygyuozxn4ugszn@wpuvqxmprb3s>","date":"2025-07-14T13:08:25","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","submitter":{"id":232,"url":"https://patchwork.libcamera.org/api/people/232/","name":"Umang Jain","email":"uajain@igalia.com"},"content":"On Mon, Jul 14, 2025 at 02:13:05PM +0300, Laurent Pinchart wrote:\n> On Thu, Jul 10, 2025 at 08:45:28AM +0100, Kieran Bingham wrote:\n> > Quoting Umang Jain (2025-07-01 12:29:21)\n> > > Virtual pipeline handler should provide colorSpace in\n> > > generateConfiguration() and validate the colorspace in validate().\n> > > It is mandatory for a pipeline handler to set the colorspace if it\n> > > is unset in the stream configuration, during validate().\n> > > \n> > > Signed-off-by: Umang Jain <uajain@igalia.com>\n> > > ---\n> > >  src/libcamera/pipeline/virtual/virtual.cpp | 12 ++++++++++++\n> > >  1 file changed, 12 insertions(+)\n> > > \n> > > diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> > > index 049ebcba..841846b4 100644\n> > > --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> > > +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> > > @@ -180,6 +180,17 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()\n> > >                         adjusted = true;\n> > >                 }\n> > >  \n> > > +               if (!cfg.colorSpace) {\n> > > +                       cfg.colorSpace = ColorSpace::Sycc;\n> > > +                       status = Adjusted;\n> > > +                       adjusted = true;\n> > > +               }\n> > \n> > It looks like virtual only uses NV12 so I think this is fine.\n> \n> Does the pipeline handler produce sYCC though ? This patch looks weird,\n> because it only sets a default colorspace if none is requested, and\n> keeps the application-selected colorspace otherwise. I don't see code in\n\nPerhaps you missed to note the validateColorSpace() below - which will\ncorrect any application-selected colorspace.\n\n> the pipeline handler that takes the colorspace into account to generate\n> frames.\n> \n> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> > > +\n> > > +               if (validateColorSpaces() == Adjusted) {\n> > > +                       status = Adjusted;\n> > > +                       adjusted = true;\n> > > +               }\n> > > +\n> > >                 if (adjusted)\n> > >                         LOG(Virtual, Info)\n> > >                                 << \"Stream configuration adjusted to \" << cfg.toString();\n> > > @@ -244,6 +255,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,\n> > >                 cfg.pixelFormat = pixelFormat;\n> > >                 cfg.size = data->config_.maxResolutionSize;\n> > >                 cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;\n> > > +               cfg.colorSpace = ColorSpace::Sycc;\n> > >  \n> > >                 config->addConfiguration(cfg);\n> > >         }\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","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 C4557C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 14 Jul 2025 13:08:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C014468F3F;\n\tMon, 14 Jul 2025 15:08:25 +0200 (CEST)","from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 50C466186C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 14 Jul 2025 15:08:23 +0200 (CEST)","from [49.36.69.193] (helo=uajain)\n\tby fanzine2.igalia.com with esmtpsa \n\t(Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)\n\t(Exim) id 1ubIus-00GQ5V-5v; Mon, 14 Jul 2025 15:08:22 +0200"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=igalia.com header.i=@igalia.com\n\theader.b=\"rQqlYj59\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com;\n\ts=20170329;\n\th=In-Reply-To:Content-Type:MIME-Version:References:Message-ID:\n\tSubject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID:\n\tContent-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc\n\t:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:\n\tList-Post:List-Owner:List-Archive;\n\tbh=jeSr89UnBr+o06PYknhiDwC1e9Xi2GzC3LVBkZwXOZ8=;\n\tb=rQqlYj59/224ttMmfnDuzd0m0b\n\tjzDCJ1Qhv42Pm+LkKL97QziFPfM7W8IchF1ftPgDmMSofpGBGNx+ETxwlNz3ftujjF1OwdyoWJcU7\n\t6yh8K/TZEEtJckpRHbXnYadFkB99slLGlSeWt3l3rbFasiywX8VZS24v8ad11lm/Nc/9dhxzR+Neq\n\tsGOMImuCSeuClKSAp5LborvBVuzxNVeSiGgD0Pq1H3Hftgb+T7rg+rVGzK8L9D7GbLxXnNbYtTMGH\n\tgtzkvUvNTAN737IhiZI5r4bkaHvcEYCk8DKeHXFspbaG3ZuZRyRsIalPiWQj/Pk49S4RdKUD4ZldY\n\tCY4xlogQ==;","Date":"Mon, 14 Jul 2025 18:38:25 +0530","From":"Umang Jain <uajain@igalia.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","Message-ID":"<zcidwsfoon4lrve62tjysvtf4bje2bfuiw4qygyuozxn4ugszn@wpuvqxmprb3s>","References":"<20250701112922.62285-1-uajain@igalia.com>\n\t<20250701112922.62285-2-uajain@igalia.com>\n\t<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>\n\t<20250714111305.GD8243@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20250714111305.GD8243@pendragon.ideasonboard.com>","User-Agent":"NeoMutt/20250510-dirty","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":34885,"web_url":"https://patchwork.libcamera.org/comment/34885/","msgid":"<20250714131936.GE8243@pendragon.ideasonboard.com>","date":"2025-07-14T13:19:36","subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Umang,\n\nOn Mon, Jul 14, 2025 at 06:38:25PM +0530, Umang Jain wrote:\n> On Mon, Jul 14, 2025 at 02:13:05PM +0300, Laurent Pinchart wrote:\n> > On Thu, Jul 10, 2025 at 08:45:28AM +0100, Kieran Bingham wrote:\n> > > Quoting Umang Jain (2025-07-01 12:29:21)\n> > > > Virtual pipeline handler should provide colorSpace in\n> > > > generateConfiguration() and validate the colorspace in validate().\n> > > > It is mandatory for a pipeline handler to set the colorspace if it\n> > > > is unset in the stream configuration, during validate().\n> > > > \n> > > > Signed-off-by: Umang Jain <uajain@igalia.com>\n> > > > ---\n> > > >  src/libcamera/pipeline/virtual/virtual.cpp | 12 ++++++++++++\n> > > >  1 file changed, 12 insertions(+)\n> > > > \n> > > > diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp\n> > > > index 049ebcba..841846b4 100644\n> > > > --- a/src/libcamera/pipeline/virtual/virtual.cpp\n> > > > +++ b/src/libcamera/pipeline/virtual/virtual.cpp\n> > > > @@ -180,6 +180,17 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate()\n> > > >                         adjusted = true;\n> > > >                 }\n> > > >  \n> > > > +               if (!cfg.colorSpace) {\n> > > > +                       cfg.colorSpace = ColorSpace::Sycc;\n> > > > +                       status = Adjusted;\n> > > > +                       adjusted = true;\n> > > > +               }\n> > > \n> > > It looks like virtual only uses NV12 so I think this is fine.\n> > \n> > Does the pipeline handler produce sYCC though ? This patch looks weird,\n> > because it only sets a default colorspace if none is requested, and\n> > keeps the application-selected colorspace otherwise. I don't see code in\n> \n> Perhaps you missed to note the validateColorSpace() below - which will\n> correct any application-selected colorspace.\n\nWill it ? As far as I can tell, multiple colorspace values would be\naccepted by the pipeline handler, and the generate NV12 image will have\nthe exact same YUV values for all of them.\n\n> > the pipeline handler that takes the colorspace into account to generate\n> > frames.\n> > \n> > > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > > \n> > > > +\n> > > > +               if (validateColorSpaces() == Adjusted) {\n> > > > +                       status = Adjusted;\n> > > > +                       adjusted = true;\n> > > > +               }\n> > > > +\n> > > >                 if (adjusted)\n> > > >                         LOG(Virtual, Info)\n> > > >                                 << \"Stream configuration adjusted to \" << cfg.toString();\n> > > > @@ -244,6 +255,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera,\n> > > >                 cfg.pixelFormat = pixelFormat;\n> > > >                 cfg.size = data->config_.maxResolutionSize;\n> > > >                 cfg.bufferCount = VirtualCameraConfiguration::kBufferCount;\n> > > > +               cfg.colorSpace = ColorSpace::Sycc;\n> > > >  \n> > > >                 config->addConfiguration(cfg);\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 9F8BBC3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 14 Jul 2025 13:20:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B1DC168F45;\n\tMon, 14 Jul 2025 15:20:10 +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 C7FB26186C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 14 Jul 2025 15:20:08 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 9E1C4166D; \n\tMon, 14 Jul 2025 15:19:36 +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=\"aV6VTSL8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1752499176;\n\tbh=1pm7FnJZNjG3Dsf+A2mUuABNM3evRL8Hpyk7Lzzh54o=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=aV6VTSL8ASyEsm9J1Yic8y9wsefxg1JxZZ3tWgdzhQgB6M76WpbGE1tglysAboHeC\n\tj0GSPX4Sq6nth+Bmis1Hqa2tGPGeRvKKoMEVc9h98JpU9/4naFW05qHnpoTeIsm9IT\n\tH/3CT9TIUTgiMXwawS1UFRqxSVDGVkw8IgtkiL58=","Date":"Mon, 14 Jul 2025 16:19:36 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Umang Jain <uajain@igalia.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v2 1/2] pipeline: virtual: Provide and validate\n\tcolorspace","Message-ID":"<20250714131936.GE8243@pendragon.ideasonboard.com>","References":"<20250701112922.62285-1-uajain@igalia.com>\n\t<20250701112922.62285-2-uajain@igalia.com>\n\t<175213352887.2538045.14918571926328868910@ping.linuxembedded.co.uk>\n\t<20250714111305.GD8243@pendragon.ideasonboard.com>\n\t<zcidwsfoon4lrve62tjysvtf4bje2bfuiw4qygyuozxn4ugszn@wpuvqxmprb3s>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<zcidwsfoon4lrve62tjysvtf4bje2bfuiw4qygyuozxn4ugszn@wpuvqxmprb3s>","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>"}}]