[{"id":32118,"web_url":"https://patchwork.libcamera.org/comment/32118/","msgid":"<20241112082703.GA11430@pendragon.ideasonboard.com>","date":"2024-11-12T08:27:03","subject":"Re: [PATCH] gstreamer: Handle GST_VIDEO_TRANSFER_BT601","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hou,\n\n(how should I address you, is \"Hou\" correct ?)\n\nThank you for the patch.\n\nOn Fri, Nov 08, 2024 at 06:12:03PM +0900, Hou Qi wrote:\n> The conversions back and forth between GStreamer colorimetry and\n> libcamera color space are not invariant for the bt601 colorimetry.\n> The reason is that Rec709 transfer function defined in GStreamer\n> as GST_VIDEO_TRANSFER_BT709 (5), is to be replaced by its alias\n> GST_VIDEO_TRANSFER_BT601 (16) only for the case of bt601 (aka 2:4:16:4)\n> colorimetry - see [1].\n> \n> Currently the composition of the GStreamer/libcamera conversions:\n> colorimetry_from_colorspace (colorspace_from_colorimetry (bt601))\n> returns 2:4:5:4 instead of the expected 2:4:16:4 (bt601). This\n> causes negotiation error when the downstream element explicitly\n> expects bt601 colorimetry.\n> \n> Minimal example to reproduce the issue is with a pipeline handler\n> that do not set the optional color space in the stream configuration,\n> for instance vimc or imx8-isi:\n> export LIBCAMERA_PIPELINES_MATCH_LIST=\"vimc,imx8-isi\"\n> gst-launch-1.0 -v libcamerasrc ! video/x-raw,colorimetry=bt601 ! fakesink\n> \n> Above pipeline fails to start. This change updates colorimetry_from_colorspace()\n> to use the expected GST_VIDEO_TRANSFER_BT601 (16) alternative\n> definition for the Rec709 transfer function, in order to fix the\n> conversion from libcamera color space towards the bt601 colorimetry.\n> This bt601 colorimetry special case is identified by the usage of\n> the Rec709 transfer function combined with the primaries\n> GST_VIDEO_COLOR_PRIMARIES_SMPTE170M (4).\n> \n> [1] https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724\n> \n\nUnless I'm mistaken, this is related to\nhttps://bugs.libcamera.org/show_bug.cgi?id=150, so you can add\n\nBug: https://bugs.libcamera.org/show_bug.cgi?id=150\n\n> Signed-off-by: Hou Qi <qi.hou@nxp.com>\n> ---\n>  src/gstreamer/gstlibcamera-utils.cpp | 7 +++++++\n>  1 file changed, 7 insertions(+)\n> \n> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp\n> index 732987ef..b2d64733 100644\n> --- a/src/gstreamer/gstlibcamera-utils.cpp\n> +++ b/src/gstreamer/gstlibcamera-utils.cpp\n> @@ -112,7 +112,14 @@ colorimetry_from_colorspace(const ColorSpace &colorSpace)\n>  \t\tcolorimetry.transfer = GST_VIDEO_TRANSFER_SRGB;\n>  \t\tbreak;\n>  \tcase ColorSpace::TransferFunction::Rec709:\n> +#if GST_CHECK_VERSION(1, 18, 0)\n> +\t\tif (colorSpace.primaries == ColorSpace::Primaries::Smpte170m)\n> +\t\t\tcolorimetry.transfer = GST_VIDEO_TRANSFER_BT601;\n> +\t\telse\n> +\t\t\tcolorimetry.transfer = GST_VIDEO_TRANSFER_BT709;\n> +#else\n>  \t\tcolorimetry.transfer = GST_VIDEO_TRANSFER_BT709;\n> +#endif\n\nWon't this patch break caps negotiation if the downstream element\nexplicitly expects 2:4:5:4 ?\n\nGiven that GST_VIDEO_TRANSFER_BT601 and GST_VIDEO_TRANSFER_BT709 are\nsynonyms, Nicolas recommended in bug 150 to memory the GStreamer\ntransfer function requested by GStreamer, and restore it in case\nlibcamera returns an equivalent.\n\nThe negotiation is implemented in gst_libcamera_src_negotiate(), using\nthe gst_libcamera_configure_stream_from_caps() and\ngst_libcamera_stream_configuration_to_caps() functions. The former could\nreturn the GstVideoColorimetry retrieved from the caps, which could then\nbe passed to the latter. There may be better options regarding how to\narchitecture the code.\n\n>  \t\tbreak;\n>  \t}\n>","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 65B91C324C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 12 Nov 2024 08:27:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 23208657E7;\n\tTue, 12 Nov 2024 09:27:14 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E0E38657E7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 Nov 2024 09:27:11 +0100 (CET)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6535D6AF;\n\tTue, 12 Nov 2024 09:26:59 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"SokPeHqK\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1731400019;\n\tbh=zYr50sunJ7SLIkvLGttCETUw44Efb5rEDFGVi6zWjt4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=SokPeHqK1CkHjbpRCXyS2w2nz8Fy52S8mkY8E+hdjErcEfG8fGOMrft4y0Nc8+OFr\n\toLX4FNV4fukaPrYKFo78uxuSsb/jQOMazYw8Z0JpHtz/grXiq4bulJwcBDrDPfMttw\n\teZwsRP8YwhJSOPsmDF2lhVrzqRi0jYtzeBmR/KlA=","Date":"Tue, 12 Nov 2024 10:27:03 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hou Qi <qi.hou@nxp.com>","Cc":"libcamera-devel@lists.libcamera.org, jared.hu@nxp.com,\n\tjulien.vuillaumier@nxp.com,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Subject":"Re: [PATCH] gstreamer: Handle GST_VIDEO_TRANSFER_BT601","Message-ID":"<20241112082703.GA11430@pendragon.ideasonboard.com>","References":"<20241108091203.3751671-1-qi.hou@nxp.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20241108091203.3751671-1-qi.hou@nxp.com>","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>"}},{"id":32710,"web_url":"https://patchwork.libcamera.org/comment/32710/","msgid":"<PAXPR04MB82854FB320155CCA30611F2697382@PAXPR04MB8285.eurprd04.prod.outlook.com>","date":"2024-12-13T06:05:53","subject":"RE: [EXT] Re: [PATCH] gstreamer: Handle GST_VIDEO_TRANSFER_BT601","submitter":{"id":195,"url":"https://patchwork.libcamera.org/api/people/195/","name":"Qi Hou","email":"qi.hou@nxp.com"},"content":"Hi Laurent Pinchart,\n\nThanks for your reveiw. I have sent out \"[PATCH v2] gstreamer: keep same transfer with that in negotiated caps\".\n\nRegards,\nQi Hou\n\n-----Original Message-----\nFrom: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nSent: 2024年11月12日 16:27\nTo: Qi Hou <qi.hou@nxp.com>\nCc: libcamera-devel@lists.libcamera.org; Jared Hu <jared.hu@nxp.com>; Julien Vuillaumier <julien.vuillaumier@nxp.com>; Nicolas Dufresne <nicolas.dufresne@collabora.com>\nSubject: [EXT] Re: [PATCH] gstreamer: Handle GST_VIDEO_TRANSFER_BT601\n\nCaution: This is an external email. Please take care when clicking links or opening attachments. When in doubt, report the message using the 'Report this email' button\n\n\nHi Hou,\n\n(how should I address you, is \"Hou\" correct ?)\n\nThank you for the patch.\n\nOn Fri, Nov 08, 2024 at 06:12:03PM +0900, Hou Qi wrote:\n> The conversions back and forth between GStreamer colorimetry and\n> libcamera color space are not invariant for the bt601 colorimetry.\n> The reason is that Rec709 transfer function defined in GStreamer as\n> GST_VIDEO_TRANSFER_BT709 (5), is to be replaced by its alias\n> GST_VIDEO_TRANSFER_BT601 (16) only for the case of bt601 (aka\n> 2:4:16:4) colorimetry - see [1].\n>\n> Currently the composition of the GStreamer/libcamera conversions:\n> colorimetry_from_colorspace (colorspace_from_colorimetry (bt601))\n> returns 2:4:5:4 instead of the expected 2:4:16:4 (bt601). This causes\n> negotiation error when the downstream element explicitly expects bt601\n> colorimetry.\n>\n> Minimal example to reproduce the issue is with a pipeline handler that\n> do not set the optional color space in the stream configuration, for\n> instance vimc or imx8-isi:\n> export LIBCAMERA_PIPELINES_MATCH_LIST=\"vimc,imx8-isi\"\n> gst-launch-1.0 -v libcamerasrc ! video/x-raw,colorimetry=bt601 !\n> fakesink\n>\n> Above pipeline fails to start. This change updates\n> colorimetry_from_colorspace() to use the expected\n> GST_VIDEO_TRANSFER_BT601 (16) alternative definition for the Rec709\n> transfer function, in order to fix the conversion from libcamera color space towards the bt601 colorimetry.\n> This bt601 colorimetry special case is identified by the usage of the\n> Rec709 transfer function combined with the primaries\n> GST_VIDEO_COLOR_PRIMARIES_SMPTE170M (4).\n>\n> [1]\n> https://gitl/\n> ab.freedesktop.org%2Fgstreamer%2Fgst-plugins-base%2F-%2Fmerge_requests\n> %2F724&data=05%7C02%7Cqi.hou%40nxp.com%7Cc059dc8be9984c6056ca08dd02f3c\n> e8e%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638669968373879121%7C\n> Unknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAi\n> OiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=QCQiga\n> yl9hUO1cOM%2BkyfyOlenlylyAyEkxeyWI6%2FAd0%3D&reserved=0\n>\n\nUnless I'm mistaken, this is related to\nhttps://bugs.libcamera.org/show_bug.cgi?id=150, so you can add\n\nBug: https://bugs.libcamera.org/show_bug.cgi?id=150\n\n> Signed-off-by: Hou Qi <qi.hou@nxp.com>\n> ---\n>  src/gstreamer/gstlibcamera-utils.cpp | 7 +++++++\n>  1 file changed, 7 insertions(+)\n>\n> diff --git a/src/gstreamer/gstlibcamera-utils.cpp\n> b/src/gstreamer/gstlibcamera-utils.cpp\n> index 732987ef..b2d64733 100644\n> --- a/src/gstreamer/gstlibcamera-utils.cpp\n> +++ b/src/gstreamer/gstlibcamera-utils.cpp\n> @@ -112,7 +112,14 @@ colorimetry_from_colorspace(const ColorSpace &colorSpace)\n>               colorimetry.transfer = GST_VIDEO_TRANSFER_SRGB;\n>               break;\n>       case ColorSpace::TransferFunction::Rec709:\n> +#if GST_CHECK_VERSION(1, 18, 0)\n> +             if (colorSpace.primaries == ColorSpace::Primaries::Smpte170m)\n> +                     colorimetry.transfer = GST_VIDEO_TRANSFER_BT601;\n> +             else\n> +                     colorimetry.transfer = GST_VIDEO_TRANSFER_BT709;\n> +#else\n>               colorimetry.transfer = GST_VIDEO_TRANSFER_BT709;\n> +#endif\n\nWon't this patch break caps negotiation if the downstream element explicitly expects 2:4:5:4 ?\n\nGiven that GST_VIDEO_TRANSFER_BT601 and GST_VIDEO_TRANSFER_BT709 are synonyms, Nicolas recommended in bug 150 to memory the GStreamer transfer function requested by GStreamer, and restore it in case libcamera returns an equivalent.\n\nThe negotiation is implemented in gst_libcamera_src_negotiate(), using the gst_libcamera_configure_stream_from_caps() and\ngst_libcamera_stream_configuration_to_caps() functions. The former could return the GstVideoColorimetry retrieved from the caps, which could then be passed to the latter. There may be better options regarding how to architecture the code.\n\n>               break;\n>       }\n>\n\n--\nRegards,\n\nLaurent Pinchart","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 0B022C32EA\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 13 Dec 2024 06:05:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B460D67EE0;\n\tFri, 13 Dec 2024 07:05:58 +0100 (CET)","from EUR02-DB5-obe.outbound.protection.outlook.com\n\t(mail-db5eur02on20615.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:2608::615])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4DF186189B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 13 Dec 2024 07:05:55 +0100 (CET)","from PAXPR04MB8285.eurprd04.prod.outlook.com\n\t(2603:10a6:102:1ca::15)\n\tby PA2PR04MB10186.eurprd04.prod.outlook.com (2603:10a6:102:404::7)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8251.16;\n\tFri, 13 Dec 2024 06:05:54 +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%6]) with mapi id 15.20.8251.015;\n\tFri, 13 Dec 2024 06:05:53 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"FGlisPcd\";\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=vabplfuTnw5cYNEO1JvlgFqZmgC/Ys2OXNrEXmqu0KTZq/bxA3Tlj3RD59738VNwOCCiTWrkdoFJ/E+129lW8q5cZoO0NT2Q5jTKmXavYjfGethHTKA4WXSiBveH70Osb2Bgpheaq6bMPeE823YX0e6TbF8cfVHdbXlHO2W++Ogww8KKd5q09inhMupWlu/ZpgoDLngQtsPzfkVKkpByaeBKUQD3Qrb9LTdj3RP1Lsxx2uBaezd8RFQJlX4kD/Q6G0d5C16ouVfjJZgVlTR7DLOEcid82YMjZyeC83YY20oWnLtR6cQfiGqSqOCvJsQcwVp+R6aD55Q8QBRogMDP2A==","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=O4T+zeIRjwECwXvtPvsVKA/j07t4UxJStzU2qh2mf9A=;\n\tb=D9UY7Y6++yoeefnR7dg0lfUFRDac2KTDsq6xKu8kB7dIX42h7UL9bW6N+Ob5M65qYyyxAn+U8HvO/pfrH/e4DNJzEgiSB91N2iBd39R/dD+6WMAP1YNIXPG/lxuaXA+H6dVwSsJaf++3bj81JMXjsOG6pOgCjm7A1va36Jxd9npDQTEct+FbInfZwFGMQoqqjAwFl5G7I9Qyrr1SpT15nJAk+UYeq1ORWwdAMwW8MqAD4jFkgqoWpSZHmri9pcUhiQVyygSJCEWBn2HvHfM3LxzoMC0rizxTUXMtaAs4VxSZwvS7GbEdUSnrY9muW6WsOu598sxlhK3zE+eLiz8EMw==","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=O4T+zeIRjwECwXvtPvsVKA/j07t4UxJStzU2qh2mf9A=;\n\tb=FGlisPcdiYV1DwYM8Bch6Z+P96QAHRj7tlSDfFh+RJM8oc//88arjasOwzKfE9W93I3QO390EX4mX6Yqic0kLFzgFPVwqNDROFyZn04gTjLCzgxobzdXyBm9bvVBHlnBzgj8uvKiPzOYXbD+Krlf0Lv0lVwEXBQS507elfSupstD5sikVqmKjhdxo8/dXU95jLsActrcf5bu50Intk/mSHc0EqOPrS3PDQ/LDiiWQSO3UHn3oJ0Es/BQ5o6FBHs2290B6YpShXNoxaI2VyrpPeHoDQ8wMhIvSfJKKZUCiNJWK0R3pm2IlPwasQNcbTqT2BCq/7OWHuLH6tkhwTUYlg==","From":"Qi Hou <qi.hou@nxp.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","CC":"\"libcamera-devel@lists.libcamera.org\"\n\t<libcamera-devel@lists.libcamera.org>, Jared Hu <jared.hu@nxp.com>,\n\tJulien Vuillaumier <julien.vuillaumier@nxp.com>, Nicolas Dufresne\n\t<nicolas.dufresne@collabora.com>","Subject":"RE: [EXT] Re: [PATCH] gstreamer: Handle GST_VIDEO_TRANSFER_BT601","Thread-Topic":"[EXT] Re: [PATCH] gstreamer: Handle GST_VIDEO_TRANSFER_BT601","Thread-Index":"AQHbMb5TDy9HRB6pOEqARyNmwIJAAbKzVdCAgDCQX0A=","Date":"Fri, 13 Dec 2024 06:05:53 +0000","Message-ID":"<PAXPR04MB82854FB320155CCA30611F2697382@PAXPR04MB8285.eurprd04.prod.outlook.com>","References":"<20241108091203.3751671-1-qi.hou@nxp.com>\n\t<20241112082703.GA11430@pendragon.ideasonboard.com>","In-Reply-To":"<20241112082703.GA11430@pendragon.ideasonboard.com>","Accept-Language":"zh-CN, en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"FGlisPcd\";\n\tdkim-atps=neutral","dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"PAXPR04MB8285:EE_|PA2PR04MB10186:EE_","x-ms-office365-filtering-correlation-id":"b502b70f-a3be-4daf-5808-08dd1b3c33ec","x-ld-processed":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n\tARA:13230040|376014|366016|1800799024|38070700018; ","x-microsoft-antispam-message-info":"=?gb2312?b?V1VtRW1tRFdmSmZNYU15Tng2?=\n\t=?gb2312?b?aTVRb3V3cXVrcEtqZ0N6dWI2SkRQd0Z4NWpUT203cTMxcmErOUNC?=\n\t=?gb2312?b?dlVrQzAxbml5K0c0Q3hESHVyenFEd0l5OXpLamFzNXFqcHVYa2pO?=\n\t=?gb2312?b?K3lDTVBvcDhFL0NkdVJlTG94UlFFVDRweEI4dmZPd2VTdWtpUWND?=\n\t=?gb2312?b?WG1FRUpaRDJVb0dHdlUybkxjelh3WmoxOTRUYVVuRUtUK29YVEFo?=\n\t=?gb2312?b?bXIyaHY1OFI2VHNibmkwMWJCMHVReXc3WW96YVF0MkxMTWV6b2Ew?=\n\t=?gb2312?b?ZmlrN3MyZkJZWE5BWXBxRlBCbVVpZHdxVlBIMXVFcGNDa0owMHJR?=\n\t=?gb2312?b?QmtzWm5TcjFKek9yRVMvTjNKS2ptdFhhSmRacHhEN1ZsL1NYaFdH?=\n\t=?gb2312?b?SnJpNTM3ekNMZGUrUjhoYzAvWWlENHg5WWtMU0lPNW5iZHdFVEpp?=\n\t=?gb2312?b?TU9mR0RHLzR0aisvRmNQV3BsUmJFWkNLd1RJdGRhTk53TUI0Qnc2?=\n\t=?gb2312?b?MmlkOGtzOEhmaXcxaHpBbTBHQzVXNldpNTFKZmVGRnp5RmV4UFpl?=\n\t=?gb2312?b?azQxWmNac1RtdkxSVFZJQ1B1aXdRZVZMa2lSMFRSdWZqY0xuam5w?=\n\t=?gb2312?b?aHI5allXR3ZXay9jNE9xVUp2ZzFQaGpJSkluM2FRMGQ4amdIajdV?=\n\t=?gb2312?b?eHE3TXRBZitDSHNORWV5SzN3K3lwWnFCRit4Qkx6SWNWZnRwSHl6?=\n\t=?gb2312?b?SU11UFd6V0JHNHhVRWhMcFVZemtqWlFqSjd0K0NvTURoa2xQbjJR?=\n\t=?gb2312?b?SFpDZHJBTHg3U0pYQ2pSR1A3d0xNZ3d5YldzZjVMdG8waHZwRmMv?=\n\t=?gb2312?b?dm9oRko3ZERrM2F4Y29jNDNnMnNVbVJrUG0yRUI1TmpnYVlBaDNI?=\n\t=?gb2312?b?YjhOY0ptWGNFRlJRQzNXakhwRGNXMDBQL3c5MHA1MndtUFVIVDZz?=\n\t=?gb2312?b?d3hTT2txbFY1YmU3UTdNZ0FER1hpMmJXMmxNWE1SdExZcTRpcVEy?=\n\t=?gb2312?b?clFWTkk0bmREUzFCK3l6L1Q4WDNyM21yWDkrbGdrc0JVSTB0MUN5?=\n\t=?gb2312?b?V1NDdGZGaDQ2VWFpUUZDSHIzcXdqZGU2WDBIa2lOTHUwTjduU2tq?=\n\t=?gb2312?b?SHJxdHc5Q0pQVHpUR3JLYTI4SWtpS2dsci9EakZucmlaSm93RUpV?=\n\t=?gb2312?b?cUM4T0NKeVdSaUZSZzZDUE8wWGg3angvUHd2ZEJ1U240UEtkeitn?=\n\t=?gb2312?b?cWQ0MVhtUGtjeEs5TFR2cExZODI3QU1TMStrMmZPSDNtWnVMVlYz?=\n\t=?gb2312?b?cFAyR1FJbXBuSXQ5UGpOWjJxZVUvRy9GcDdib1dXZ1VnVEpBOU1r?=\n\t=?gb2312?b?UDZoVm1uQmJUQ0s5Y0xBUWNRalZPNmp2YlVKdGpLajNrcCt2dnpw?=\n\t=?gb2312?b?R0hFS3JsdDc2TnMzN2k4Y0xWWUM0cURrNXlmdW5zK0kyMVBtRTEr?=\n\t=?gb2312?b?V1EvUlE1d09UdHoyMUFJajdVYzJ5U1Q1TkwrQkxqV3AzYUZ4NjR1?=\n\t=?gb2312?b?aWNRYjRCZjI5L2prTjdhZTB1ZUc3ZzBzUGI1cEVVbmVVYjUxOVlN?=\n\t=?gb2312?b?VnlBNllLNENOTjVvODdteGNobU82eFVsZlRBWTdRR3B5TWNMc0dM?=\n\t=?gb2312?b?ZC9Uc2JjK3o5SURpdmM1LytwU1l6cWc4YlByZ2dYRXBINytvczYx?=\n\t=?gb2312?b?ZXprRWJGOHp4UWlkdWRsQjREVHNGVEZuWVNXeSsrditZbFRaTWlq?=\n\t=?gb2312?b?YWJYOXUvUTRpaStEVGRCMGFTaUFxKzVZV0xoSUJWaUVETW45V0I1?=\n\t=?gb2312?b?b2xrWHllbnZsTmc3QmhxaTZjSnM2dWw1Z1BFZk5FWW9sSlE2N21U?=\n\t=?gb2312?b?bkx4K2NML0Vmc1ZFVmxzK1dlMDlFVlhGWG1yOGtiU1V1NGVwMGJq?=\n\t=?gb2312?b?RFgzbnJaMkNsc1h1YmJ1TmVwR29SSi9Xb25QUVcyb003M2h6U3JT?=\n\t=?gb2312?b?U0VlQT0=?=","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:zh-cn; SCL:1; \n\tSRV:; IPV:NLI; SFV:NSPM;\n\tH:PAXPR04MB8285.eurprd04.prod.outlook.com; PTR:; \n\tCAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018);\n\tDIR:OUT; SFP:1101; ","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?gb2312?b?NGt4TFhkalV4c1dlVis5T0V0?=\n\t=?gb2312?b?RUVQUE9oUU10eDJZaW8zNUZGTnI3Wi9YRFlCK2hPTXRrZ0dOa0cr?=\n\t=?gb2312?b?NTVTMnZyVkhjUWE0clNTWjZoYlUwMjF5cXp0bFJZSitEdW5wVWpE?=\n\t=?gb2312?b?TStES0VmRFRZYTJWeXgrZU9uTTM0VVo3WjB1MmNuMU4zTEM4bHJW?=\n\t=?gb2312?b?NkcxNWxxZGtiTDdtdjVWb3BKUGpwZCtQcHk1eTV0UDFoK1BoT29C?=\n\t=?gb2312?b?OUoybWVQM3RpZmxnaWtwU3Awbk9YVFNhcGh3cFViYjd1NEZCd2dj?=\n\t=?gb2312?b?cDhtV2Q2WVBNbUIzZWc2NmlZYmdTQjB3eTFqMHZSTzFIUWw1bElV?=\n\t=?gb2312?b?WWd0VnNBWlFMR2Zjc1dvckpmWnpLd0JSQnNtUmdXeXY2UXRxM2Ey?=\n\t=?gb2312?b?bDNFSjJPbGtXamt2dnVUR0tIZEk5SWdNOXJSV2xTQVVxNTlJT2x3?=\n\t=?gb2312?b?bTlOMiszVVlhSEMzbk44QnBKWU5CbDFjRFBFMTdwZWVYamNPb3g2?=\n\t=?gb2312?b?SFpobG9XeVBxbkZBSWVFRndEVTF5SlBDUEZXVThmbHFRMUo3OVZ0?=\n\t=?gb2312?b?eHdJMVZkbURQdXVIeW53QUE5YlRXNFF5MVFOaDAyd2dmWFdkNEhz?=\n\t=?gb2312?b?d09Dd3NBTTBBbUtCSkJiYXFHUGorVUIrblloL2FHVXVVZ29WbG1a?=\n\t=?gb2312?b?NXREUkpGekVWUlNXRDdiblJ3UldXS3hmSUlTcTZMVlZ2SHRlOFN4?=\n\t=?gb2312?b?VUo4bzFCbGoxeGRDYWNlRGN6K2xqL1FZOTc0OEF5S284b0JnVHZP?=\n\t=?gb2312?b?L0ZmbmUvcG9IRDQvUTNKWTF4ZjNKanV6eHBseGw0TERSZEFPY3BO?=\n\t=?gb2312?b?QjlpanhVSmI3N20rWHpPNlJIV2tNZXE2WmwxRkc3VE0xVC83RjFP?=\n\t=?gb2312?b?Y0dmekl2dVByU0tCWGVieC9uNExuRVR2N0ZDUEpOVmhBZHpRNmhJ?=\n\t=?gb2312?b?ajF2Q3A3TUh5TWJPTXMrK3h0QU9SemhMUzQ5QTdZbXRWdVhqYWcx?=\n\t=?gb2312?b?MEtKc3grQWM0ejBKeXV2bEpqRGUxK3gyaUlsV1cvbFZVV3B4anNj?=\n\t=?gb2312?b?MmRTWldkNURMTEx0NG1FYXpXeXFoMzFKbkdzRWNRYTdCVkFmRkdP?=\n\t=?gb2312?b?cExzUGgzbVlaOXVjbHlPQ3BHTEtjTnhGQUlLM1FlcitNV2orN09F?=\n\t=?gb2312?b?YWRSVWNBV2l4MGo5U2IyUTJ4dDJjZ1I2Vzl1U0dOcFJoREMwUzFS?=\n\t=?gb2312?b?algwRFBiVWhMMTErSCtEamdvVzdwbTArVXNrdFgvL2M0dUVIdUh4?=\n\t=?gb2312?b?V0xaYituYnpkRXR5dDYzTTFDS2kzZlN3TWpxcnhUU0RPcnNjem5C?=\n\t=?gb2312?b?NFcxUDZ2MENReTVDWVJuMlh5Y25jaVdkK1hWbkczeFpNZER2WExN?=\n\t=?gb2312?b?cGdWcTdidUJ5MmlHUXR5TDg1VnNzaFBJSTRIaUVsWGt2TUgxNjdN?=\n\t=?gb2312?b?V1RRQXBtaHVyZVJWemV5Tkx3NHRCOHYvSDFrREhLZFp6MDd3V2VS?=\n\t=?gb2312?b?eGVWQzlLVlYvQjM4ZmF0TnRidkJEd3psU0RaNnNENXpib3p5MmlP?=\n\t=?gb2312?b?NUw5dXIxdFY0WC94dm9UMjNKUE5taS9ING1DQy8vSDFwbktCTU5k?=\n\t=?gb2312?b?OGVpbm0xd3JNd2d3RzN2NUFVTC9PbjdMUzJmWTI0VHNXZVdsSy91?=\n\t=?gb2312?b?ZUQvRGRacmo2NitYb0wwQ2wzMDZDbVRCQVQ2aFI2OUN3Q1NXR0hi?=\n\t=?gb2312?b?QWszVHBhM1pHaW4zNUtTK01kMUpFYXF4RnFZSXpjZWw2VkxaclpL?=\n\t=?gb2312?b?TDhSSkZuZDFzWEkyL1Y0Nzh6ckROYVI3V3BWeENkOVkzTHlHSnBk?=\n\t=?gb2312?b?UEdCZWRQRks3ano3WnFleHB4czdrbnRHVWVvaTNFZkJVOXBOQzFh?=\n\t=?gb2312?b?QWY1QXZaTUxDV0IxNDFZWkxCUHl1a0JNaHNGUThSUUhTL3kwcHg1?=\n\t=?gb2312?b?QnFhY1RCalkxKzRnNmgrQ01Sd0Vkd1VYWnNJNTRpcXh0WWQrNWNP?=\n\t=?gb2312?b?aGwzUncvK0ttang5MkdhQzh1QVJWckVWRHJCRnN0azFmVWNUWDFK?=\n\t=?gb2312?b?NmFMSFNaU0RKV0dmM1Jqd21aUmp3VnpCeGJQUkE3cXZSUUFIQXd6?=\n\t=?gb2312?b?eU0zT2J0NkFKUEFUaGZWKzlqbytrTWhqTms1Z1R2bjJ3VVdMSGhv?=\n\t=?gb2312?b?TVd6REx2a2VCczg3Z0VYaTlUQ0ZudVNCcEYzcVJ4UHRkc0lkSC9P?=\n\t=?gb2312?b?MD0=?=","Content-Type":"text/plain; charset=\"gb2312\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"PAXPR04MB8285.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"b502b70f-a3be-4daf-5808-08dd1b3c33ec","X-MS-Exchange-CrossTenant-originalarrivaltime":"13 Dec 2024 06:05:53.9037\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":"kvq1m88VGyUBvv61izULbYuYiJ02PwmghH7s/oSvr4ghvF6y/7uZeLG9j/TE22qt","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PA2PR04MB10186","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>"}}]