Patch Detail
Show a patch.
GET /api/patches/16553/?format=api
{ "id": 16553, "url": "https://patchwork.libcamera.org/api/patches/16553/?format=api", "web_url": "https://patchwork.libcamera.org/patch/16553/", "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": "<20220706080030.30929-1-rishikeshdonadkar@gmail.com>", "date": "2022-07-06T08:00:29", "name": "[libcamera-devel,v2,1/5] gstreamer: convert from libcamera colorspace to GStreamer colorimetry.", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "0ee3a5a854caac014d7e36c7af46a7e9c239d5e4", "submitter": { "id": 118, "url": "https://patchwork.libcamera.org/api/people/118/?format=api", "name": "Rishikesh Donadkar", "email": "rishikeshdonadkar@gmail.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/16553/mbox/", "series": [ { "id": 3257, "url": "https://patchwork.libcamera.org/api/series/3257/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3257", "date": "2022-07-06T08:00:29", "name": "[libcamera-devel,v2,1/5] gstreamer: convert from libcamera colorspace to GStreamer colorimetry.", "version": 2, "mbox": "https://patchwork.libcamera.org/series/3257/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/16553/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/16553/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 B00D5BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 6 Jul 2022 08:00:54 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 190376330C;\n\tWed, 6 Jul 2022 10:00:54 +0200 (CEST)", "from mail-pg1-x530.google.com (mail-pg1-x530.google.com\n\t[IPv6:2607:f8b0:4864:20::530])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3E81060400\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 6 Jul 2022 10:00:52 +0200 (CEST)", "by mail-pg1-x530.google.com with SMTP id r22so6504251pgr.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 06 Jul 2022 01:00:52 -0700 (PDT)", "from localhost.localdomain ([103.124.170.117])\n\tby smtp.googlemail.com with ESMTPSA id\n\tb16-20020a170903229000b001696751796asm25013049plh.139.2022.07.06.01.00.46\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 06 Jul 2022 01:00:48 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1657094454;\n\tbh=lOg2e0M7Qb1Tx3gcj7aV6lPIqz8315g2G1bf1B0C+I8=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:Cc:From;\n\tb=ZHuA5NTo0lR2o5uUPxgwSuiW0p8HXm7cmQgsk46VB0/2JIWNC9XwjRId1bIziP3X9\n\tgXu/i7o4Q9Sa86k8ZpqbsLQ+9vFiqZTJwxB2VSoyMe6ZMDBZKaINolMnlFPgRc2Ood\n\ti2e4ngafGHndB+LJ9L1fk//qLEBPk2OI8/u0Jf3W4s9Wjmvj6h4ykxl9ohkmqaK9es\n\tkv3PwG5RoGoc/LTWafXzXSb7vbiHfxAyqYWYUPLrLxA4OiVWUV8SJdiFT7WLjkqZpn\n\t+QR6hGxDAQXeT79qc3PKkQthYcgBkdAGtlZmuJ8ApdrenlqJBx3rLRkSisUzq8eGis\n\tjgeSAeKzhkY4w==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;\n\th=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=gl2s/NLrVgPI1gElVXAXpUWq298V4jDcVInQ60p73IA=;\n\tb=XWqZzkJJTaDGf9YoZ4mb3goliY+lDBXUImljgccILBG6OfTt6z/mGAf3tICtKKGpyp\n\tQNs4qcRRUFXMJImRU2rA78L4DS9E3SxSlOqIjthK0ONNxxK4Ink9Zj/KKx10IKwoFvhs\n\tJfFrb1g9qOZCfHvG6K1vKsntcoRrJcc+v7DDIvCmCmejbdoKAM8GBMzrfJzc9J4ZD7sU\n\tEtKSb83H822CfkSaAlvzjvbTKQ9V+Y1qW3N0joMHDHOquJ/MAvYL4oiZEbRq/rTG07PY\n\t+RzYERF8++F/EWup8zcgQonljZ6uhkRMkVTvj6WWEIJeYffymq/5zw7P7zbjkVaL2Rza\n\tyoLg==" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"XWqZzkJJ\"; dkim-atps=neutral", "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:mime-version\n\t:content-transfer-encoding;\n\tbh=gl2s/NLrVgPI1gElVXAXpUWq298V4jDcVInQ60p73IA=;\n\tb=lvZfFru2BMXeeqzM3Op1jzSijuZeIHqCarpfLGIiJ1GtTyu0vxdlWtgsfqI7AlQfEY\n\tCZWT1Qq9rhcYlxwewY6/SuSeQZZ+F5jkdvinrfec/sOCs3TUqdUi/UsBIh8vTjLCkMlN\n\tCQRxvVGNPMuEZiPmXVPbcRaW9pdw5N7/6d42yyxSldLEVJgeZRX3WDsp3hqAZ0PnaGKa\n\t5MwzMdTBDohHAa4Qfrev3VTXswKoLzBIGHqWgNXnvhzh8iuVv/9eV5PHTSMM8tJmXpEI\n\trA/cIiJphFnzB+6vs53XA3NQsQJBdHRj38utVYZUIqS7FkX9aLkmfgEfPbLjE+uS3ETN\n\te1Ag==", "X-Gm-Message-State": "AJIora8XAM//6SWJHG47qauZOOLZ5yRbcMRcezsPxYQ8YtXlEc5iUEwV\n\tzp+/ru04lZmheZcUwkhyqcltWQUI8T0=", "X-Google-Smtp-Source": "AGRyM1vHpGaP+dXTfCsknebq4qAcYPrPI53uTJxIojl36ICLQBTSy66iQNzTvClqsP2PunzAa1xkdw==", "X-Received": "by 2002:a63:455:0:b0:412:99f3:c9a4 with SMTP id\n\t82-20020a630455000000b0041299f3c9a4mr1294214pge.6.1657094449188; \n\tWed, 06 Jul 2022 01:00:49 -0700 (PDT)", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 6 Jul 2022 13:30:29 +0530", "Message-Id": "<20220706080030.30929-1-rishikeshdonadkar@gmail.com>", "X-Mailer": "git-send-email 2.25.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v2 1/5] gstreamer: convert from libcamera\n\tcolorspace to GStreamer colorimetry.", "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>", "From": "Rishikesh Donadkar via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>", "Reply-To": "Rishikesh Donadkar <rishikeshdonadkar@gmail.com>", "Cc": "Rishikesh Donadkar <rishikeshdonadkar@gmail.com>,\n\tnicolas.dufresne@collabora.com, vedantparanjape160201@gmail.com", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Libcamera StreamConfiguration class has colorSpace attribute, which\nholds the colorspace that is being applied to the camera after the\nvalidation of the camera configuration.\n\nMap the libcamera colorspace to GStreamer colorimetry and find\nthe colorimetry corresponding to the colorspace that is being applied to\nthe camera. This colorimetry if found will be pushed in the caps.\n\nSigned-off-by: Rishikesh Donadkar <rishikeshdonadkar@gmail.com>\n---\n .vscode/settings.json | 10 +++++++++\n src/gstreamer/gstlibcamera-utils.cpp | 32 ++++++++++++++++++++++++++++\n 2 files changed, 42 insertions(+)\n create mode 100644 .vscode/settings.json", "diff": "diff --git a/.vscode/settings.json b/.vscode/settings.json\nnew file mode 100644\nindex 00000000..ff799f4b\n--- /dev/null\n+++ b/.vscode/settings.json\n@@ -0,0 +1,10 @@\n+{\n+ \"files.associations\": {\n+ \"hash_map\": \"cpp\",\n+ \"*.tcc\": \"cpp\",\n+ \"string\": \"cpp\",\n+ \"unordered_map\": \"cpp\",\n+ \"unordered_set\": \"cpp\",\n+ \"string_view\": \"cpp\"\n+ }\n+}\n\\ No newline at end of file\ndiff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp\nindex c97c0d43..60ac8c8e 100644\n--- a/src/gstreamer/gstlibcamera-utils.cpp\n+++ b/src/gstreamer/gstlibcamera-utils.cpp\n@@ -45,6 +45,12 @@ static struct {\n \t/* \\todo NV42 is used in libcamera but is not mapped in GStreamer yet. */\n };\n \n+static const std::vector<std::pair<ColorSpace, std::string>> ColorSpaceTocolorimetry = {\n+\t{ ColorSpace::Srgb, GST_VIDEO_COLORIMETRY_SRGB },\n+\t{ ColorSpace::Rec709, GST_VIDEO_COLORIMETRY_BT709 },\n+\t{ ColorSpace::Rec2020, GST_VIDEO_COLORIMETRY_BT2020 },\n+};\n+\n static GstVideoFormat\n pixel_format_to_gst_format(const PixelFormat &format)\n {\n@@ -87,6 +93,32 @@ bare_structure_from_format(const PixelFormat &format)\n \t}\n }\n \n+static gchar *\n+colorimerty_from_colorspace(std::optional<ColorSpace> colorSpace)\n+{\n+\tgchar *colorimetry_str = nullptr;\n+\tgchar *colorimetry_found = nullptr;\n+\tGstVideoColorimetry colorimetry;\n+\tgboolean isColorimetryValid;\n+\n+\tauto iterColorimetry = std::find_if(ColorSpaceTocolorimetry.begin(), ColorSpaceTocolorimetry.end(),\n+\t\t\t\t\t [&colorSpace](const auto &item) {\n+\t\t\t\t\t\t return colorSpace == item.first;\n+\t\t\t\t\t });\n+\tif (iterColorimetry != ColorSpaceTocolorimetry.end()) {\n+\t\tcolorimetry_found = (gchar *)iterColorimetry->second.c_str();\n+\t\tisColorimetryValid = gst_video_colorimetry_from_string(&colorimetry, colorimetry_found);\n+\t}\n+\tif (isColorimetryValid) {\n+\t\tcolorimetry_str = gst_video_colorimetry_to_string(&colorimetry);\n+\t\treturn colorimetry_str;\n+\t} else {\n+\t\tg_free(colorimetry_found);\n+\t\tg_free(colorimetry_str);\n+\t\treturn nullptr;\n+\t}\n+}\n+\n GstCaps *\n gst_libcamera_stream_formats_to_caps(const StreamFormats &formats)\n {\n", "prefixes": [ "libcamera-devel", "v2", "1/5" ] }