From patchwork Sat Oct 25 17:43:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 24818 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C8187BE080 for ; Sat, 25 Oct 2025 17:43:31 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 98A20606F4; Sat, 25 Oct 2025 19:43:29 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="gT4guJXf"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 134D4606CE for ; Sat, 25 Oct 2025 19:43:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=XgfVmdp7opP8wQvo0qxMgWEdDd13FU+c4cAM750DpLY=; b=gT4guJXf1+37q5kgCmzS/p2qoz OnZl4xMRKkD2bK7RwZODa7VRA49FRxJhnWD15DoImOMZa3VTGOp2V78XoKGZtIyGuEzOpHSvx8KoG 9ocAZPOaAcrWIjDFUvkfh1XN7uzYztsH5QCysaK7wzsCp/S7j5X5rtxJxcA+A3ISfgY95Coggb4zS wG+1zNQ64/TkxPW+wT7I3wg/oqbyS8BLSHMuiSY3aCbyzmXdUXBSEuX9D+kAA3lwNEYRLSdAHu6n0 GpcG/bP8+eFPG/x5Fb2uVhgvSGH9sx9850o8ahY51eAzb/1vfl26w2O+VyLRvvJ9sRjVDnWn/H98h xCiM7AhA==; Received: from [148.252.128.197] (helo=uajain) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1vCiIX-00FAds-PX; Sat, 25 Oct 2025 19:43:25 +0200 From: Umang Jain To: libcamera-devel@lists.libcamera.org Cc: Umang Jain , Kieran Bingham , Robert Mader Subject: [PATCH v3 1/2] pipeline: virtual: Provide and validate colorspace Date: Sat, 25 Oct 2025 18:43:53 +0100 Message-ID: <20251025174354.85020-2-uajain@igalia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251025174354.85020-1-uajain@igalia.com> References: <20251025174354.85020-1-uajain@igalia.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Virtual pipeline handler should provide colorSpace in generateConfiguration() and validate the colorspace in validate(). It is mandatory for a pipeline handler to set the colorspace if it is unset in the stream configuration, during validate(). Choose the closest colorspace ColorSpace::Rec709 for the generated NV12 stream. Signed-off-by: Umang Jain Reviewed-by: Kieran Bingham Tested-by: Robert Mader --- src/libcamera/pipeline/virtual/virtual.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp index 23eae852..c0247b4d 100644 --- a/src/libcamera/pipeline/virtual/virtual.cpp +++ b/src/libcamera/pipeline/virtual/virtual.cpp @@ -214,6 +214,18 @@ CameraConfiguration::Status VirtualCameraConfiguration::validate() adjusted = true; } + if (!cfg.colorSpace || + cfg.colorSpace != ColorSpace::Rec709) { + cfg.colorSpace = ColorSpace::Rec709; + status = Adjusted; + adjusted = true; + } + + if (validateColorSpaces() == Adjusted) { + status = Adjusted; + adjusted = true; + } + if (adjusted) LOG(Virtual, Info) << "Stream configuration adjusted to " << cfg.toString(); @@ -278,6 +290,7 @@ PipelineHandlerVirtual::generateConfiguration(Camera *camera, cfg.pixelFormat = pixelFormat; cfg.size = data->config_.maxResolutionSize; cfg.bufferCount = VirtualCameraConfiguration::kBufferCount; + cfg.colorSpace = ColorSpace::Rec709; config->addConfiguration(cfg); }