Patch Detail
Show a patch.
GET /api/patches/27424/?format=api
{ "id": 27424, "url": "https://patchwork.libcamera.org/api/patches/27424/?format=api", "web_url": "https://patchwork.libcamera.org/patch/27424/", "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": "<20260721104411.2393571-1-elliot.chen@oss.nxp.com>", "date": "2026-07-21T10:44:11", "name": "gstreamer: Honor downstream format preferences in caps negotiation", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "cebc4d8106d116204e30dbee9cbbeed5df90d49e", "submitter": { "id": 443, "url": "https://patchwork.libcamera.org/api/people/443/?format=api", "name": "Elliot Chen (OSS)", "email": "elliot.chen@oss.nxp.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/27424/mbox/", "series": [ { "id": 6068, "url": "https://patchwork.libcamera.org/api/series/6068/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6068", "date": "2026-07-21T10:44:11", "name": "gstreamer: Honor downstream format preferences in caps negotiation", "version": 1, "mbox": "https://patchwork.libcamera.org/series/6068/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/27424/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/27424/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 53B77C3264\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Jul 2026 10:47:15 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5B1FA67E67;\n\tTue, 21 Jul 2026 12:47:14 +0200 (CEST)", "from PA4PR04CU001.outbound.protection.outlook.com\n\t(mail-francecentralazlp170130007.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c20a::7])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9EB586601C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jul 2026 12:44:21 +0200 (CEST)", "from AM9PR04MB8244.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::24)\n\tby VI2PR04MB10810.eurprd04.prod.outlook.com (2603:10a6:800:27e::16)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.223.18;\n\tTue, 21 Jul 2026 10:44:19 +0000", "from AM9PR04MB8244.eurprd04.prod.outlook.com\n\t([fe80::a59f:4bc2:f026:4012]) by\n\tAM9PR04MB8244.eurprd04.prod.outlook.com\n\t([fe80::a59f:4bc2:f026:4012%4]) with mapi id 15.21.0245.009;\n\tTue, 21 Jul 2026 10:44:18 +0000" ], "Authentication-Results": [ "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=NXP1.onmicrosoft.com\n\theader.i=@NXP1.onmicrosoft.com header.b=\"QOxwzT8L\"; \n\tdkim-atps=neutral", "dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=oss.nxp.com;" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=s2kl/pw4iZND43KzIVZ0Cy3GSUBR79Q05s1+bMW+cWfad/YBxCfv7sEwYLpssU/dYsncZ9yXN84dKcM5Nuf2VIJwSyvUK38pk4jwCEvyQ0zjd87HgqW6klasn3Gr9t5xZYMTxbIXEtpNG9heZZaY+7LDwd41WTsuwm0n9iByhCo0HoLu9E7IaD1pa08OdTmChHvo1uPQfQGS5wn5mCFUfI4DDNKXKLW4LlsQo2zW2EwSdJNV68ZADNUioO7zTl7+6Ur/4MZrlOnJ4RWyvcl5MwKDAOSLVOj9RKz+479OvIUIPgegq+mzqjPARLJOemDhHOvIP28C6AUwSCfELbel2w==", "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=QfWBOzzETMns02dvr5rKepPUWZorU5lEg9vw/KGHH3w=;\n\tb=lYGX4lKhwFonLG+LoBPzMP20kvABEYiT0RHwXZcEVV3IM7reVZ+Z83rfeF3y0yvWz7Y32RgFsnY1a1+SRfmaGlE+hFfpjZv5Fi2vibMbJRWsoJTu/mSGy256c6U3zxFVKUnIzxmS3LfwpMhIqNPKU7iEF8Luat3QlIN39FUucryBGsQPNxTb5C0ZRfgRbHeQOUvxQAsp1cTAe1e6nAkXuPYvte7ehm1+TR38SNS2ZuPG1M9ONdcJiryWiXdFQRQ3p/yukeNVbwxe2Gm3vnNbNYOl3GZ8pFIyD4nox+rSo5EcwvrqexqSyByocllQ6+BwgCyO9dyfr3L4Q006qlmHLw==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=oss.nxp.com;\n\tdmarc=pass action=none header.from=oss.nxp.com; \n\tdkim=pass header.d=oss.nxp.com; arc=none", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;\n\ts=selector1-NXP1-onmicrosoft-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=QfWBOzzETMns02dvr5rKepPUWZorU5lEg9vw/KGHH3w=;\n\tb=QOxwzT8LCLMQneGw/AfOXV2XdAhnxZbNROTE9vnruryOs/gD4vUGQhDMqmsiYdQiF51s2yCp+qYbcWEtoEYICJy6tb/jZ1MotGP/JANGe1wv80NsSpGiThMwFRcY1Ctc6d/Sqrs/bO1DnneMzCADlptDP9hnzgQQXjpiZjoGI6hvPPLR7KMA2bCKxHZDZqWszCQdrRyv9l12FmDFbZSX4EprNhho7WLomaBUsig0Zi5oEzkIquOeSO46NiXHMzCfzvGA8gsJuSrg4hSu3GQVA7AhsiEp8ZzWs/Pd37XJcOVOU9XiAa5nVKZQyQdhhSLp3OSXCVDOnAjyCbPyhdKqlg==", "From": "elliot.chen@oss.nxp.com", "To": "libcamera-devel@lists.libcamera.org", "Subject": "[PATCH] gstreamer: Honor downstream format preferences in caps\n\tnegotiation", "Date": "Tue, 21 Jul 2026 19:44:11 +0900", "Message-Id": "<20260721104411.2393571-1-elliot.chen@oss.nxp.com>", "X-Mailer": "git-send-email 2.34.1", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "SI3PR02CA0014.apcprd02.prod.outlook.com\n\t(2603:1096:4:295::6) To AM9PR04MB8244.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::24)", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "AM9PR04MB8244:EE_|VI2PR04MB10810:EE_", "X-MS-Office365-Filtering-Correlation-Id": "594befbe-fc4c-431e-5332-08dee715041e", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n\tARA:13230040|366016|376014|1800799024|19092799006|23010399003|18002099003|11063799006|56012099006|10067099003|6133799003;", "X-Microsoft-Antispam-Message-Info": "RF1FeZrAofO9cNWtiJlJBgBtGGrYOlcJS/KjlRKIqMX7tX6McA7Hx7h/n7yFYjIK6l7EaLBDhMmxRRY+BzW82Omy5Qxix8iLVycUZL5hIs5Fw4oWyPfd37HxZ28LjbjilRquZHB2BcKtFaVBXAItqXDddoUuPIbG61ZCv9VmaiREG3KLDu+cIkYenP2EKnBchGizUZkFML4Hi04RuS35/BjqjguYJmli9PnrCEbhYMe3C36cuDcvfLuIswrDAaIR56jvDpRhu4rZSQTAYHxxPZhGKyhCaWJ4uF98ismxt1k63Mij5tOtVf+Hbtx3o7MBzYNZVYgoa4jeq6uVmzv8HK+5znmY2dRlCyLq1rAau5DuAWuoTpCeg/8vHg6oFVxkkz5S1LM4tKxDR1LB7B0Ceq69BEm0MlxvjT5e5ngQseykXl2vxMrF3HRPA+9nLS2hpjJPrRfIRH+Dk4FsC6rrRtr3wfnqfwjSH+mIg5xELxFldDPgrw65GriaK087F0oDKafUz1PZKVHTjV+GVeZaqpSvBlferpjtIvvHC815IB7ITnj5O8rPMzcv43E2jS7iDA7gQybCndN9l/FIj/aErBYOelrnFTJBYzXG46vurQOj/ZI8fU1t1dBJt97ZgW1OB9FdvUQaHgqZXpV/NyEGHSzqhOQ4BxMYlBf+OWokIfc=", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8244.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(366016)(376014)(1800799024)(19092799006)(23010399003)(18002099003)(11063799006)(56012099006)(10067099003)(6133799003);\n\tDIR:OUT; SFP:1101; ", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "laIUacARpH80iqhvSx1+4N2vjVbN+KS7HJyxhmJDmCcHd/0UKEYg+PUEzWQiVxBGh4Ao4g9/7XsV9aBzx/0z0NzBlNevc5o/n0GD3pw35r/zdHI/PS/BPvIeKbcbRgIpSLYmX9C5bDtgyus2kKEEOxwCauZ++mCCdEeZhsVBZhgtTJ4ygCA9T2vEzUE7GxEbGuSqUlxxieoK2aMFXeH92uXTJax/dupzW7Amdeu9HkPMrfu5n2tSR8bei8RGLT+/1oIeVdauoYM3P/BjARKPoqlOmGMX0BQCTPDdMab1pIrVtbvhZYSDUiueAGmGP+3wPH9E69nx05dRDGsmsmmo6mcYFLg+iVLKacEwU5Yu/fhYSP+GneSoHs60BDQB4966O9JeTg44bbF95glPzobYwokl4oSUaUuXgVv3JF4KcQOSfplUxeY+VkDI/8lH4autgAviRkrnLeUHUIdX8sUTrnHaBMkpyozYB8xGV+bpE/mgprzH6h6Vf29U0DuaGGiu/bUvrzYP7J3/H0qycxlsCW8A83JOYrGry8uvF9bK4rBh/bwfCSTjER0MwfBmudh051t7TVF9mRCODOgzKQoJdYumPiw5YoM/nMrJl9usUUcH1Ya/T6TKC7AQTmU+NtKPOJdTusiG/PpvCf4sxEvnjanljTaq+qJbLqDm0bg2Pznhe0DAg7/6KxW1F24cCs3fz7Nhaw54m+vPEdOyG8bTcRXB1b0wQK73wC0ON6WW5XgETB9+wvTiNB70adCCE9hdSZddfrmXLRWNUFEqnkAyfNbneHJn8HY7Gk/Rz1vO0aAzQklwSxyv0cTerFZWdpEwaoUbQ8SSDcNjMZvpWvkwzlexLC9cph5s9IeVzmYOiJseBTdCCnQDbaSspurSFYRemQaIvOUnU1t3UkI2e2LW1saGX+mH3B75WE5mKonDLp1ISbyWYANoNrj+/Dc8kpXQwNOXXgiMjUK6pd8Hc0zKN5FbkEAFdDAcucZHCZE9NO/EHtDjTkwInXLFf9eBMkntYDgzD2iA0d3rFH9fsFTniXaVoIBqQIuF5AOwi66bDIylZz+6xJNnjvyYMboV01jDuHZeJRuBeCDcklFBtkc1b45X1Ux5neAXD5OdfsIBYxCfUaZwIE8c1doiaK7G98Nvjk0gZeYbxw8ruCE8T18tq89CASviG/fUULIZikT8nAa5aiGytC4wQQPG9QsgB/1FX6kFfY/Pr5iQ2/ZBQC1zl/pGBuqC8aMaD1E8Z7WrwnLlV1io/LcKNVm5y4zRT6GHB4CXEcY/n5ff91q8bqdvpvfEjtrzEgwuXsqhKqIJyNBg1UWgrwh6g92NzhDoUaW23EyS0pALOxqL49Cw36BPyuNWUyHv0qKYhNaKYGc69VMGGbcXKEAxKugzRu0TEM47GJMEDk/2CIAd0kZtylVgpYYoXWTZxZFXbmqS+wDLiN/cXDTED78S/Xj7CBnFz+IFIwANKsuR8opFiukq+2ngsRGN4WfPF1JAW32YYpO7JhMy7agdN5acUMxTR9t8aPYXhTlUIzRd61gW5uv0z3oOkj24CjQcrSpwygnTyFJ90BDO9R1TmQzblocOEWZDZtVfKYn9oTHyFMklOXwecRL53jWCR51AvoPCbvp0x8vjhelaV4nghjScqr2VVtuJP+ijGKPAlLo1k9u9CrERbNsqk1tcGQf0wkH4p2l40Un4SddX/BEs6Kk8BeFKzEDuT7r8t9JNCymi+TB/p67azrCefGRkoBGPQZS3n8wjdidnXum8/2a62nHnjArBwwv3BltS", "X-OriginatorOrg": "oss.nxp.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "594befbe-fc4c-431e-5332-08dee715041e", "X-MS-Exchange-CrossTenant-AuthSource": "AM9PR04MB8244.eurprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "21 Jul 2026 10:44:18.3539\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": "bxHDdyfM/2iV7ci9jUlu7LEp+yv8d7SkQFddU47dAXfDP3KlEJKlJCSHk1mzNlx6JsICfc8wj1+V3CoNWhZTiWM+YI8Z2p6gv96HaihFRl3jyU3M3KDnmeGW2QYp2jC3", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI2PR04MB10810", "X-Mailman-Approved-At": "Tue, 21 Jul 2026 12:47:12 +0200", "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": "From: Elliot Chen <elliot.chen@nxp.com>\n\nWhen negotiating caps in gst_libcamera_src_negotiate(), the previous\napproach passed the libcamera stream format filter directly to\ngst_pad_peer_query_caps(), which caused the negotiated format to be\nselected based on the source format order rather than the preference\nfrom downstream element.\n\nSplit the caps query into two steps: first query the full set of caps\nsupported by the downstream peer, then intersect with the libcamera\nstream formats using GST_CAPS_INTERSECT_FIRST. This mode preserves the\norder of the first operand (caps from downstream), so the preferred\nformat from downstream element is selected during fixation.\n\nSigned-off-by: Elliot Chen <elliot.chen@nxp.com>\n---\n src/gstreamer/gstlibcamerasrc.cpp | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\nindex 9061f9163..ba4c2d81d 100644\n--- a/src/gstreamer/gstlibcamerasrc.cpp\n+++ b/src/gstreamer/gstlibcamerasrc.cpp\n@@ -598,8 +598,13 @@ gst_libcamera_src_negotiate(GstLibcameraSrc *self)\n \t\tStreamConfiguration &stream_cfg = state->config_->at(i);\n \n \t\t/* Retrieve the supported caps. */\n+\t\tg_autoptr(GstCaps) peer_caps = gst_pad_peer_query_caps(srcpad, NULL);\n+\t\tif (!peer_caps || gst_caps_is_empty(peer_caps))\n+\t\t\treturn false;\n+\n \t\tg_autoptr(GstCaps) filter = gst_libcamera_stream_formats_to_caps(stream_cfg.formats());\n-\t\tg_autoptr(GstCaps) caps = gst_pad_peer_query_caps(srcpad, filter);\n+\t\t/* Intersect with downstream's preferred format order first */\n+\t\tg_autoptr(GstCaps) caps = gst_caps_intersect_full(peer_caps, filter, GST_CAPS_INTERSECT_FIRST);\n \t\tif (gst_caps_is_empty(caps))\n \t\t\treturn false;\n \n", "prefixes": [] }