From patchwork Thu Nov 4 13:58:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Plowman X-Patchwork-Id: 14459 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 3A001BDB1C for ; Thu, 4 Nov 2021 13:58:29 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id EBA8560362; Thu, 4 Nov 2021 14:58:27 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="l3E5JKlR"; dkim-atps=neutral Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 68D3960344 for ; Thu, 4 Nov 2021 14:58:24 +0100 (CET) Received: by mail-wm1-x334.google.com with SMTP id z11-20020a1c7e0b000000b0030db7b70b6bso7292594wmc.1 for ; Thu, 04 Nov 2021 06:58:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nUVlWu72PlyE29kbK+yxhDq/7AfELhGkPOIcJt8NS14=; b=l3E5JKlRgqmxB4ItgFU3li7im056VsVT3kbyu/9+p0QSGqQG9GOc8nOWkAecZdO44O ICdOBYaE5+KJVs4fqG0ha3nA6kLvEcvL3EpnomW0DTWsaRJxZ5bBUJUsIwsoZqMtEvfZ L9rKJ8NfRj0XLDpFeVh+dGfFo8dfURxIKrLps2PNvSercGA0HlCRHvduPm7E/OzP3Sgd bZCiDy4CsSoyKlz95j7jPF6kn/DqKjpaTyFZA99Fscbi0LixaKKy+q7G6Vtw9xKA9HdR KqDS/SiGMqFWgStIxQNcr7C8s0p8NchHAIa2elC2lbwAHypUJFUdGC2WoNAQpgKkjd0o 2xZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nUVlWu72PlyE29kbK+yxhDq/7AfELhGkPOIcJt8NS14=; b=UTzMRwBi8Q9YkYy7Q6BgMTEQYf91gwuyh3gOSPkYZKxyjlYZkCPyZzXr9ykWi6ozd/ covGBgHhi/XCq1Cx8aoW82pjyhFVKDlcYacpV53ijv7gCLCLnU7HTPxqmvICgqla8lgY EhOaowzHk3OwDJp/LRxBsvjJkp1rLDgS8iU2pWeBlGxSuLeqb/9fofpc1+fJ9/OvrGxS G8AKyNCMun+IrdjQc8b5waPl6/Zx7xMKWB01xnlInDA6VYE2wfS9i92Ksvlv2De24Yh5 9qoU4FNa3SjHDyM9jINy+2BSA/228TuFx9+jjsj2mZP9iSdEjeSP34lFn7cfwbnGfAJm 1nFQ== X-Gm-Message-State: AOAM5336WHbwF8qtpv4T7P9Z7xabJDBZNfQkGRRRRTYmbFSLPvZ/fKVj ALSqAfreFKrO6KG4A/i6mGhUEGztZVTtrg== X-Google-Smtp-Source: ABdhPJz5RoVezjsWUIXmEDcTpdTef/8w8MgwspipUqka7F0LHX0EIgE2fqJ+bvCeF1jubHan9ad6EQ== X-Received: by 2002:a7b:cc8f:: with SMTP id p15mr20505767wma.158.1636034303888; Thu, 04 Nov 2021 06:58:23 -0700 (PDT) Received: from pi4-davidp.pitowers.org ([2a00:1098:3142:14:1ce1:9965:4328:89c4]) by smtp.gmail.com with ESMTPSA id i20sm2264736wmq.41.2021.11.04.06.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 06:58:23 -0700 (PDT) From: David Plowman To: libcamera-devel@lists.libcamera.org Date: Thu, 4 Nov 2021 13:58:00 +0000 Message-Id: <20211104135805.5269-3-david.plowman@raspberrypi.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20211104135805.5269-1-david.plowman@raspberrypi.com> References: <20211104135805.5269-1-david.plowman@raspberrypi.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v5 2/7] libcamera: Add ColorSpace fields to StreamConfiguration 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" This is so that applications can choose appropriate color spaces which will then be passed down to the V4L2 devices. There are two fields: the "requestedColorSpace" which is the one an application wants, and the "actualColorSpace" which is what the underlying hardware can deliver, and which is filled in by the validate() method. Signed-off-by: David Plowman --- include/libcamera/stream.h | 4 ++++ src/libcamera/stream.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h index 0c55e716..fe491ff5 100644 --- a/include/libcamera/stream.h +++ b/include/libcamera/stream.h @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -47,6 +48,9 @@ struct StreamConfiguration { unsigned int bufferCount; + ColorSpace requestedColorSpace; + ColorSpace actualColorSpace; + Stream *stream() const { return stream_; } void setStream(Stream *stream) { stream_ = stream; } const StreamFormats &formats() const { return formats_; } diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp index b421e17e..1ddbbb8c 100644 --- a/src/libcamera/stream.cpp +++ b/src/libcamera/stream.cpp @@ -329,6 +329,31 @@ StreamConfiguration::StreamConfiguration(const StreamFormats &formats) * \brief Requested number of buffers to allocate for the stream */ +/** + * \var StreamConfiguration::requestedColorSpace + * \brief The ColorSpace this stream should have + * + * The generateConfiguration method will generate reasonable default + * values (ColorSpace::Jpeg for stills, ColorSpace::Rec709 for video and + * ColorSpace::Raw for raw streams) but applications are free to overwrite + * this value. + */ + +/** + * \var StreamConfiguration::actualColorSpace + * \brief The ColorSpace the will be used for this stream + * + * This field is filled in by CameraConfiguration::validate(). + * Normally this should match the requestedColorSpace, but it may differ + * if the hardware does not support it. + * + * In general cameras may have different constraints here, for example, + * they may require all output streams to share the same color space. + * Sometimes the fields within this color space may report "Undefined" + * values if the hardware drivers are going to use a color space that + * is not recognised by the ColorSpace class. + */ + /** * \fn StreamConfiguration::stream() * \brief Retrieve the stream associated with the configuration