From patchwork Wed Oct 20 11:08:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Plowman X-Patchwork-Id: 14195 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 217D2BDB1C for ; Wed, 20 Oct 2021 11:08:35 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 19D1768F5B; Wed, 20 Oct 2021 13:08:32 +0200 (CEST) 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="KmTrBTsC"; dkim-atps=neutral Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 23D7368F58 for ; Wed, 20 Oct 2021 13:08:29 +0200 (CEST) Received: by mail-wm1-x336.google.com with SMTP id g2so18090148wme.4 for ; Wed, 20 Oct 2021 04:08:29 -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=KmTrBTsC6CaK6kGd5df/WRSVJooLx48YzdvXVCrLYDvaIXElorwpCXtCTxvHsDZPLV solbmWcxJifES77xHy0E7qfD7fqVKE5Tx9rC5VrHkaIB1IRyhGbeiH57AlDUvmLRlg9S d7l83XMnywzBtQ//tlq10NqPLgQx1G/ua6uTWw2xbT6BILUkP6T9qbkTC8kyMAX+JYN9 uZLKu1yxztYhBdakyDUfJfN1946phBF5g/CPSObEVfAJzfee6mEv4Xg5zJnyqpzWZpYg u/DQiPkEny7To0f2XxrCQuLovpaH7tcEa6CbjeLfn9LcbXmuBUnwrgkjmuA+P9CLodaS HFjQ== 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=e+2mvxgWD4z7e23oD3Tw0s4mq6nefxLn48kb+crIeR4hpsl2T+xWfRZ3sQCwTpokIA jlyXSUSndkKFpT14LcvKLDpf5LMLVSaWJuIiNtTGhqKhynVMGUf5I8nlemCslY13+v4y Rkx/ud93oOSOdnZdv3Kz/Twh4WsR9qhODGQkyTI6dYGrSSC7LgKZkn1VXI7vcES3ctPW +bs4T1HLzLAy4kDjkyGZYJX8w3KVBRQyOGR5twDlb2ZsJOFuqIg0njhfzo4RB58YfZpq suhuE/eua1BVy8bYjerOXdAalmdzMR3/MA0mt2o1C2T6omV3Z64eac4CHan+icsdbWjZ PaCw== X-Gm-Message-State: AOAM532u4eYF2XTjaYpp3C+6wLhTGAvaNGetaPUA4BbnxjhJynUFPJT5 AqUYHbZlPKHGIXnn7Xb2QEeHhubFMjxOFQ== X-Google-Smtp-Source: ABdhPJz4Y1+1ud+c4h2HWUAtVPpVoEiOEs4Rm9WJ552WWh5awsREnIl3MfRvDkq4aCgd8P6pipVVqQ== X-Received: by 2002:adf:ca09:: with SMTP id o9mr49890012wrh.303.1634728108715; Wed, 20 Oct 2021 04:08:28 -0700 (PDT) Received: from pi4-davidp.pitowers.org ([2a00:1098:3142:14:1ce1:9965:4328:89c4]) by smtp.gmail.com with ESMTPSA id f20sm1929654wmq.38.2021.10.20.04.08.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Oct 2021 04:08:28 -0700 (PDT) From: David Plowman To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Oct 2021 12:08:20 +0100 Message-Id: <20211020110825.12902-3-david.plowman@raspberrypi.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20211020110825.12902-1-david.plowman@raspberrypi.com> References: <20211020110825.12902-1-david.plowman@raspberrypi.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 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