Patch Detail
Show a patch.
GET /api/patches/15046/?format=api
{ "id": 15046, "url": "https://patchwork.libcamera.org/api/patches/15046/?format=api", "web_url": "https://patchwork.libcamera.org/patch/15046/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20211206105032.13876-6-david.plowman@raspberrypi.com>", "date": "2021-12-06T10:50:28", "name": "[libcamera-devel,v9,5/8] libcamera: Add colorSpace field to V4L2SubdeviceFormat", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "443c28571c4c8df435007399c8381c11b017f644", "submitter": { "id": 42, "url": "https://patchwork.libcamera.org/api/people/42/?format=api", "name": "David Plowman", "email": "david.plowman@raspberrypi.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/15046/mbox/", "series": [ { "id": 2817, "url": "https://patchwork.libcamera.org/api/series/2817/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2817", "date": "2021-12-06T10:50:23", "name": "Colour spaces", "version": 9, "mbox": "https://patchwork.libcamera.org/series/2817/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/15046/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/15046/checks/", "tags": {}, "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 55AFAC3258\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 6 Dec 2021 10:51:29 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 346A46011A;\n\tMon, 6 Dec 2021 11:51:28 +0100 (CET)", "from mail-wm1-x334.google.com (mail-wm1-x334.google.com\n\t[IPv6:2a00:1450:4864:20::334])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3E76660882\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 6 Dec 2021 11:51:24 +0100 (CET)", "by mail-wm1-x334.google.com with SMTP id\n\ti8-20020a7bc948000000b0030db7b70b6bso10070615wml.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 06 Dec 2021 02:51:24 -0800 (PST)", "from pi4-davidp.pitowers.org\n\t([2a00:1098:3142:14:1ce1:9965:4328:89c4])\n\tby smtp.gmail.com with ESMTPSA id\n\tr7sm10878186wrq.29.2021.12.06.02.51.23\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 06 Dec 2021 02:51:23 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"Pqa97l7n\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=zrDnyKLJISq8ZIBK5MpItxEAiAskZ2+gyT4ETPipmZ0=;\n\tb=Pqa97l7nxT+bSUQCWzieCFEPUVJmHlfNdphq1yPMPn6f2GEjNSVsI9N4PWWHRhR7cy\n\tfzHtFK4xhnpcyRs6H5vuBrqsa0RumjQ4xxGTomVLOLq6IyqFIFmZNIRrKvZ7po6AMXOd\n\tw/T21neeru380gGHzWZBZn+CtgfOE4X3FEhTyxPBPof+l1iw/XXfSB7Qgwmi95/SR88T\n\t5H2/IA4dOH1YWicX2rRxKPwnmlVsP5K6tB5a65UL3MQHZaxTB391k+dpoo+rrWvgpCjo\n\tIDRuFgCNsw4XmywKGBC7clOSWF3g0DrjKXbpcR6k9LwoJAhOn+KQj/p5c6xUwlFF2zAa\n\tZQeg==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=zrDnyKLJISq8ZIBK5MpItxEAiAskZ2+gyT4ETPipmZ0=;\n\tb=ifXhmwX7K9zP0Ys5FbbBcq2ZVMCeYbz2lTFEadqjHQYeTW1FXBxqAQlSXEABZj/oOa\n\t/KMiL/C71SeIAPcfi6Y3rhnEZhEAxTa1AVpRTsQw2uYqNaUChxS8lWX7xy6CbxL6e7UX\n\tPXRynd+T+nMN3WbXgmrLgjEJ6dvs1JDXeE3fu5GyiGHdxJ/nf0h+cs+NNq27Ts8ZqOgh\n\txk6DfAdkE10yZdrhl16OS5aDhU/pieyO9A77bT+8LauQDtuTY5ijZgy2WhErcUogOy6h\n\t8mOt3bA4R+cuQRfzGS7dzZdwTkcGY0fkxipuAszsYA90D66k8F2fDuoOTCxAyKom4DbP\n\taGiQ==", "X-Gm-Message-State": "AOAM531aIkhQcxoI8TatiFpzlsBXaolzUqWshCYJBVT6tqrohFdK6lbS\n\tJE8q/kvF5y6cZVmQORjH95IvGCvC8UqdActv", "X-Google-Smtp-Source": "ABdhPJxk9nOkt6gEyZohX0YWRH1K9gaCBOSk539n1hu1SSUJ1LmKUr9ZbY0dW0X6Lk6BLYYhDI+H8w==", "X-Received": "by 2002:a05:600c:4e8f:: with SMTP id\n\tf15mr23292684wmq.76.1638787883790; \n\tMon, 06 Dec 2021 02:51:23 -0800 (PST)", "From": "David Plowman <david.plowman@raspberrypi.com>", "To": "libcamera-devel@lists.libcamera.org, naush@raspberrypi.com,\n\tjacopo@jmondi.org, tfiga@google.com, hverkuil-cisco@xs4all.nl,\n\tkieran.bingham@ideasonboard.com, laurent.pinchart@ideasonboard.com", "Date": "Mon, 6 Dec 2021 10:50:28 +0000", "Message-Id": "<20211206105032.13876-6-david.plowman@raspberrypi.com>", "X-Mailer": "git-send-email 2.20.1", "In-Reply-To": "<20211206105032.13876-1-david.plowman@raspberrypi.com>", "References": "<20211206105032.13876-1-david.plowman@raspberrypi.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v9 5/8] libcamera: Add colorSpace field to\n\tV4L2SubdeviceFormat", "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>" }, "content": "This adds a ColorSpace field to the V4L2SubdeviceFormat so that we can\nset and request particular color spaces from V4L2.\n\nThis commit simply adds the field and fixes some occurrences of brace\ninitializers that would otherwise be broken. A subsequent commit will\npass and retrieve the value correctly to/from V4l2 itself.\n\nSigned-off-by: David Plowman <david.plowman@raspberrypi.com>\n---\n include/libcamera/internal/v4l2_subdevice.h | 2 ++\n src/libcamera/camera_sensor.cpp | 2 ++\n src/libcamera/pipeline/ipu3/cio2.cpp | 7 +++----\n src/libcamera/pipeline/simple/simple.cpp | 8 ++++++--\n src/libcamera/v4l2_subdevice.cpp | 11 +++++++++++\n 5 files changed, 24 insertions(+), 6 deletions(-)", "diff": "diff --git a/include/libcamera/internal/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h\nindex a6873b67..358bf2b6 100644\n--- a/include/libcamera/internal/v4l2_subdevice.h\n+++ b/include/libcamera/internal/v4l2_subdevice.h\n@@ -14,6 +14,7 @@\n #include <libcamera/base/class.h>\n #include <libcamera/base/log.h>\n \n+#include <libcamera/color_space.h>\n #include <libcamera/geometry.h>\n \n #include \"libcamera/internal/formats.h\"\n@@ -27,6 +28,7 @@ class MediaDevice;\n struct V4L2SubdeviceFormat {\n \tuint32_t mbus_code;\n \tSize size;\n+\tstd::optional<ColorSpace> colorSpace;\n \n \tconst std::string toString() const;\n \tuint8_t bitsPerPixel() const;\ndiff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp\nindex 4c142a58..14358333 100644\n--- a/src/libcamera/camera_sensor.cpp\n+++ b/src/libcamera/camera_sensor.cpp\n@@ -15,6 +15,7 @@\n #include <math.h>\n #include <string.h>\n \n+#include <libcamera/color_space.h>\n #include <libcamera/property_ids.h>\n \n #include <libcamera/base/utils.h>\n@@ -586,6 +587,7 @@ V4L2SubdeviceFormat CameraSensor::getFormat(const std::vector<unsigned int> &mbu\n \tV4L2SubdeviceFormat format{\n \t\t.mbus_code = bestCode,\n \t\t.size = *bestSize,\n+\t\t.colorSpace = ColorSpace::Raw,\n \t};\n \n \treturn format;\ndiff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp\nindex 59dda56b..f4e8c663 100644\n--- a/src/libcamera/pipeline/ipu3/cio2.cpp\n+++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n@@ -322,10 +322,9 @@ V4L2SubdeviceFormat CIO2Device::getSensorFormat(const std::vector<unsigned int>\n \t\treturn {};\n \t}\n \n-\tV4L2SubdeviceFormat format{\n-\t\t.mbus_code = bestCode,\n-\t\t.size = bestSize,\n-\t};\n+\tV4L2SubdeviceFormat format{};\n+\tformat.mbus_code = bestCode;\n+\tformat.size = bestSize;\n \n \treturn format;\n }\ndiff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex 701fb4be..a3108fc0 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -457,7 +457,9 @@ int SimpleCameraData::init()\n \t * formats on the video node.\n \t */\n \tfor (unsigned int code : sensor_->mbusCodes()) {\n-\t\tV4L2SubdeviceFormat format{ code, sensor_->resolution() };\n+\t\tV4L2SubdeviceFormat format{};\n+\t\tformat.mbus_code = code;\n+\t\tformat.size = sensor_->resolution();\n \n \t\tret = setupFormats(&format, V4L2Subdevice::TryFormat);\n \t\tif (ret < 0) {\n@@ -908,7 +910,9 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)\n \t\treturn ret;\n \n \tconst SimpleCameraData::Configuration *pipeConfig = config->pipeConfig();\n-\tV4L2SubdeviceFormat format{ pipeConfig->code, data->sensor_->resolution() };\n+\tV4L2SubdeviceFormat format{};\n+\tformat.mbus_code = pipeConfig->code;\n+\tformat.size = data->sensor_->resolution();\n \n \tret = data->setupFormats(&format, V4L2Subdevice::ActiveFormat);\n \tif (ret < 0)\ndiff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp\nindex 61e15b69..981645e0 100644\n--- a/src/libcamera/v4l2_subdevice.cpp\n+++ b/src/libcamera/v4l2_subdevice.cpp\n@@ -169,6 +169,17 @@ const std::map<uint32_t, V4L2SubdeviceFormatInfo> formatInfoMap = {\n * \\brief The image size in pixels\n */\n \n+/**\n+ * \\var V4L2SubdeviceFormat::colorSpace\n+ * \\brief The color space of the pixels\n+ *\n+ * The color space of the image. When setting the format this may be\n+ * unset, in which case the driver gets to use its default color space.\n+ * If this value is unset after a call to validate(), then the color space\n+ * chosen by the driver could not be represented by the ColorSpace class\n+ * (and should probably be added).\n+ */\n+\n /**\n * \\brief Assemble and return a string describing the format\n * \\return A string describing the V4L2SubdeviceFormat\n", "prefixes": [ "libcamera-devel", "v9", "5/8" ] }