{"id":21862,"url":"https://patchwork.libcamera.org/api/1.1/patches/21862/?format=json","web_url":"https://patchwork.libcamera.org/patch/21862/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20241108091246.3753388-1-qi.hou@nxp.com>","date":"2024-11-08T09:12:46","name":"gstreamer: Read correct colorimetry from caps into the stream configuration","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"db9f20f44a690c1f97616b33ae7788853b86eaf4","submitter":{"id":195,"url":"https://patchwork.libcamera.org/api/1.1/people/195/?format=json","name":"Qi Hou","email":"qi.hou@nxp.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/21862/mbox/","series":[{"id":4780,"url":"https://patchwork.libcamera.org/api/1.1/series/4780/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4780","date":"2024-11-08T09:12:46","name":"gstreamer: Read correct colorimetry from caps into the stream configuration","version":1,"mbox":"https://patchwork.libcamera.org/series/4780/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/21862/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/21862/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 15322C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  8 Nov 2024 09:13:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AF7406548E;\n\tFri,  8 Nov 2024 10:13:06 +0100 (CET)","from EUR03-AM7-obe.outbound.protection.outlook.com\n\t(mail-am7eur03on2062d.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:260e::62d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2058060589\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  8 Nov 2024 10:13:05 +0100 (CET)","from PAXPR04MB8285.eurprd04.prod.outlook.com\n\t(2603:10a6:102:1ca::15)\n\tby VI1PR04MB9979.eurprd04.prod.outlook.com (2603:10a6:800:1da::8)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.20;\n\tFri, 8 Nov 2024 09:13:03 +0000","from PAXPR04MB8285.eurprd04.prod.outlook.com\n\t([fe80::e003:8fb:64ea:acfd]) by\n\tPAXPR04MB8285.eurprd04.prod.outlook.com\n\t([fe80::e003:8fb:64ea:acfd%3]) with mapi id 15.20.8137.018;\n\tFri, 8 Nov 2024 09:13:02 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"JA2ZlhS+\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=P++hj+uDyboyDphU9lcGzY95i6EEGid08PLb8XwLI+AWEJiEg2pee2f3yPzM5gDLdxRZUe5GQNRWGkp1rQP0U8pu7lYnLx/p3USkXTGLKzBvW3gx5lf4+z9wpKdSheeJ4T7/QG7+7FSDdD7ZbNBSxQx+UbvE4cQndE43DuhR/ALlAdUpquEQd9LrZ7zAd2XdZEXj5yStPuLcCT0b2BgIJAlJXbxn+1ciCvu3TWDrlSzSD6gMoCQEcAplbcf8ac3QU5pqTldzG3nfh5EfMUcJfTXTvd2rTf+Q5hZQbQbASSt7QEXCTxRdBF+e98L6xjJ/QRG7f/n3mZ8jlT3EnzV47w==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=npEZybaAN7M53jtYqOYwqE7hDl9O3u238af7A7zISPo=;\n\tb=U+rFsp9Sd/wwjCNCGbNPyJxk6xWlqgAKtG+HOm7VDBLdk2Bc8qHKVBi9GxQobtADOOoL455bvLMWQbgbqcaFVEB74Vb5TcPCVBO3iW9mEWxSkDqjzYFl2Rq8YYOveGszUiV+Jocdl1w4ifxgjstwZnQoQbpVlc8vFReSR0yLL7E63XGQHoa+/wiEoRoY0m7j8P9dGdyayPys/g8uupMHXf3h4LPFf6hzLBFMMT7EwYwAhNzr5h3ga5QNH+gNcJqFd2O7YJVWop1JZOOgBZczV/2LdjKyah+Vzo9MEC2W6HT58zhRP/ark8QWvaGwY7Q6+yKxV/gL1WAOuJUl548xcg==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=npEZybaAN7M53jtYqOYwqE7hDl9O3u238af7A7zISPo=;\n\tb=JA2ZlhS+t54GOaxlTMbyIorrQ1l7QHJy2TTzYdAw+IAewmkdrqjfXMUNX1JKc11JwHgDzPwmjbBUucMT9emTw2aNRsWpbjWBX0tu40a4mPDFPUvnWjJEGpwkjwm/wdZukL7dalZmAcmJF7e03IsPmaiW9Ivw74twLLZ/2geNrZghqH9GeV0k/5TZh6W9PjI+BOx0Le/j69xdHYyF7V38b9OGw+i/28rSzlSbMzgp8WvI0OocyeA8J+3ZKMG4JRXh6x1Ki6+QR6/HGPNDAStpTg/ApEUWSusFyt2Fm/8mJW2chj3l3waf0APc96corGF/YTL5eihscGgWHZ5qjkEjKg==","From":"Hou Qi <qi.hou@nxp.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"jared.hu@nxp.com,\n\tqi.hou@nxp.com,\n\tjulien.vuillaumier@nxp.com","Subject":"[PATCH] gstreamer: Read correct colorimetry from caps into the\n\tstream configuration","Date":"Fri,  8 Nov 2024 18:12:46 +0900","Message-Id":"<20241108091246.3753388-1-qi.hou@nxp.com>","X-Mailer":"git-send-email 2.34.1","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"SG2PR02CA0030.apcprd02.prod.outlook.com\n\t(2603:1096:3:18::18) To PAXPR04MB8285.eurprd04.prod.outlook.com\n\t(2603:10a6:102:1ca::15)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"PAXPR04MB8285:EE_|VI1PR04MB9979:EE_","X-MS-Office365-Filtering-Correlation-Id":"abfbb758-e0b7-47c4-def7-08dcffd58c59","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n\tARA:13230040|366016|1800799024|376014|52116014|38350700014; ","X-Microsoft-Antispam-Message-Info":"OBP6EIyedsJqKMOaV0eeDDfad9LhsylHgGX4Fm2jfjfDWbJhrSjdjicwB2qtWnN59V4dkv22wDoHxoCI/dyr3m2VjlEIurfOvkyY1nOBmDg1eZwSvkXK9Gt0sSaltI8WXwjoNzhpvZJBdxMx2S+6R+4W8E6znuoFh8NYRDN5wWeHn891rgmfIfomnSkLCADV+B+jnYU1MP7azGkjdNif5Be84Getx7S2mqLbM1k8GADBAagmKrztv0YX0GpRRzOk9t8N/trsPUN8SDYgcMYuzzfkGlqalhs0tr1BuVz86HXodEhTDyyGSSMEWdTYecq40kHfzXWxjOXAkPqk/3IHW9+M1t1hk9sVaWRQwkDXgcqrLa1RUm1XsYoD+NcM5NrlfLfPBpb47oTTQSFvV2mJhPPO8QtwcI8h0hhi9wvX1/TeOsI4N9e373+ZdQTMVYfNxzLuiqE0GYGx8LQU2vDOsX04Uh0O71WG9NfmDk04lcQf3lWvxFBI4ojW2NUuDpN3eOpDeygOWZtC+760SS1fP3OOaBAZuUVMf/aVesgliimUwCk1y7uglbWOWETozL6uiAUyBFl+xiymY6rGB0GpPEMCOa9RZH55RXaokCowT+Fl9J2fo/46J97g6cFf8LnqXSmiQI32JWwYAAMMdH7XW9DZaF+NqomdWFiy+n4guV6k1MJu6U+xr2skQiJIxJaC3o49ZhospaC3VwmkQDDt8RXIO8qssONq2YyxeoyG4swKUiRqebtaRk/3dTP2DN6/rnA7/Z17eZaevDCXLKGTgiUuNIxbWPbuMHEx1qx8zZK9C4N7C9EFy0aTXfI9Eo0f2qtKnZWJ7yQV9xcA2U9MRyvYnlXLqmg2Am+V5M8Lo+0OX5jeVCbmQXedE99FvwsuZvihRp5qNJaY5jUQ7lJLSdzgArfcUH4GvOd4sPtXquxrYksjexxQjHodIQslVYx61xzhKZ0OFj27TlVF6AhIyS4UzZuP+pK5iEp7OeHYv8Bbx2onMHjUJpjrD6tLSji3Q4qJbKozBoWxUfMEzD/soM6wFGEaYUGHQ0WnwKyVQHj1hmPO1rHBpRb25jUuMbXR3kwiYZotO+A+bcjES48H+xJ6pZdh7Obl3F6jNdGPVANQi16aHI86g0rNi1VjFqTnNwIO1yeu+GuMRZ5XMTG5FvngeHpYy1BeVF9reY3bqlhufchf/YZBN/lp184PGwwvmT5Sakk3V+AlDDF4oLJrivDfkMdNWs10x+ZsurUMcn5d+4c9aQNiYMvHGWAs2OEOgqeJUBc61lYZM39+x/x17+I1ajQ1Nxd6XOW9pbVcI3qwb5WlNgR9/H3FgJnRuCr1TOTRp7K9vOTJFSeFylmtaWhoRIIdC5xtiMMRk6B18gc=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:PAXPR04MB8285.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(366016)(1800799024)(376014)(52116014)(38350700014);\n\tDIR:OUT; SFP:1101; ","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"8WoX4RTY0FkRgntwRk9tWIYnPCP5MkggF9vlZU8vSk3MFCGoC0fUCVl7yyA8HC9jZWacUofJ0XPuZ6YG0/rFNx5nNduQ8yqPo2enc9N4MpP0wUX7dQDh3lpHzLc13FxEAaprqK/4p/Oum+eTLRedmBqu1TUKsdNypBgdbTUNkD2DczKp3jz5oYG8QyrUpEIMkOtnIwLFSY49pYnenmyZ5wJnVhD4aFuPyFj2cxzbRkTp2jX3zIxR19iGaPWcwyVnhbvbe0ckCnm9pb1fVhwogvJdANUTW2gZW5gQtJS/FGTu7g7BIdtNSRiQ7QrRQ0UpNtRXA3pP1fcues02v07N1FGWyEWg2whHH0ZVIMP+AJLlwLJvTpcLKn6bi3LvHF07KxTZvtSNuGKYbkCvKSMtOa18VupAu2Hmnvl9jkbZgVRzCes4MXTAjT2f+ZGzy48ciRP2EsER0WZmdA2a19oPyDZ+840daPwK4LTP2xH9lITS9GTm3oQIhHvkWynLQLsD2s9HTGhgERwzGn5d4VkrrcsI1wNgzSKddoNl255lUuN3+M6+zDfvpKffHmKQ5yO3cjA4CVitYT9BgaUcXfR0vb8C7WqWdMhog5yCJKEJPNv7F1JTHFEGVsSsFm3LjqVjXVlhICZCbJ5gizmQhIPMa2jUjKAphQzFzzFqirQFZ14MeQKdgO4SIBCJNctYYd2MiLusKkWvAKLfdOGHyBO2c0WUIYqqnVNnyipH8jgOPj1Gfw7vzJXx3gacBLHT5Lj4BvOELnY1Z1ns9TE0al7J5bavo7lLEoVLQ8YKM7e+bds/EXEdsPXtIakfPsvNAL6WmqrG3gNztdI7Y7sICir7Sg1hN77QL4Muu7JknHpEYkbaPY8tzJ4zxSnAt6bCwuDSCGGJtAZSN/yGIUDNsEbGtiDhmkqouGJTwiPlSubzMuwuiZEuiuDDpKIAzzoiK+eFjiTZG82IOCIO8pd++FT/P+hE1m8vYoonLFfG+vW9DXIH1DzAy382GYw/5cYscc6zRoQkYBFMhbWYksvMiPFKyi/T7tGXMjDEdqvvhk5qlvUZZjY+0hu18meORd8yYXP8Dgbn0+h6JOboJp17v6dFnli9qypM8f8yUMpvcGeDq21qei09UndwlCE8U2GqENhWqH9oXhnBO5nsBx8ATUTuU1wCuLoM4tnbfZb6IT36xb1MqzntR2FwGYmxO/kpjSfIP2eNP7nuUNtVXj+yClsiHRA86cqcHLy6Jlaz6qikMCBOFLxoTEqiL52mBQsp8ESWN7KSc3LA5kqS2h8XpbWk3rzWA2PePEFkq990Ex/W2AX6w5melq/kmwF2Rz1VNnsOPQU3VUyKblFcSastrB1yeJ84bMjyIywVwyTgpd3FV0BzSzv7r7GbaZDRHwN13oCaqe5G6vtXwimkAUiMyTK6b7l9IZxcSSBZ2eU52iws0QIjYeelZF8EY5g3HenZjTA82TNi0XSqepV9nV2u9Ds1LAjzsc9eKN51lj1WjuoDJFEJ71204xDXXawJKU+wmtaS3tk9xdGvIAa+euJYjjZ7WWHokB6eMZTRDlWTENduG39HpG143H1J1SFb86+AHWaD","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"abfbb758-e0b7-47c4-def7-08dcffd58c59","X-MS-Exchange-CrossTenant-AuthSource":"PAXPR04MB8285.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"08 Nov 2024 09:13:02.9505\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"MBk15y4Q6AT7caAel4ZsCRgzMT8Rt6t3MqP8oQoIXo9SxkDAUtJidKJzIq6+sM5B","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"VI1PR04MB9979","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":"When libcamerasrc is negotiating with downstream element, it first\nextracts colorimetry field from downstream supported caps, then set\nthis colorimetry to its stream configuration and propagates the\ncolorimetry downstream.\n\nCurrently libamerasrc only considers the case there is one colorimetry\nin colorimetry field of downstream caps. But the issue is that\ndownstream caps may report a list of supported colorimetry, which\ncauses libcamerasrc to set unknown colorimetry to stream configuration\nand negotiate fail with downstream element.\n\nIn order to fix the issue, get the first string if colorimetry field\nholds string list to set it to stream configuration.\n\nSigned-off-by: Hou Qi <qi.hou@nxp.com>\n---\n src/gstreamer/gstlibcamera-utils.cpp | 15 ++++++++++++++-\n 1 file changed, 14 insertions(+), 1 deletion(-)","diff":"diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp\nindex 732987ef..2c1ebce8 100644\n--- a/src/gstreamer/gstlibcamera-utils.cpp\n+++ b/src/gstreamer/gstlibcamera-utils.cpp\n@@ -489,9 +489,22 @@ gst_libcamera_configure_stream_from_caps(StreamConfiguration &stream_cfg,\n \n \t/* Configure colorimetry */\n \tif (gst_structure_has_field(s, \"colorimetry\")) {\n-\t\tconst gchar *colorimetry_str = gst_structure_get_string(s, \"colorimetry\");\n+\t\tconst GValue *mode;\n+\t\tconst gchar *colorimetry_str = NULL;\n \t\tGstVideoColorimetry colorimetry;\n \n+\t\tmode = gst_structure_get_value(s, \"colorimetry\");\n+\n+\t\tif (G_VALUE_HOLDS_STRING(mode)) {\n+\t\t\tcolorimetry_str = gst_structure_get_string(s, \"colorimetry\");\n+\t\t} else if (GST_VALUE_HOLDS_LIST(mode)) {\n+\t\t\tconst GValue *first_element = gst_value_list_get_value(mode, 0);\n+\n+\t\t\tif (G_VALUE_HOLDS_STRING(first_element)) {\n+\t\t\t\tcolorimetry_str = g_value_get_string(first_element);\n+\t\t\t}\n+\t\t}\n+\n \t\tif (!gst_video_colorimetry_from_string(&colorimetry, colorimetry_str))\n \t\t\tg_critical(\"Invalid colorimetry %s\", colorimetry_str);\n \n","prefixes":[]}