[{"id":34433,"web_url":"https://patchwork.libcamera.org/comment/34433/","msgid":"<7339d8b07a380d518016b8d661bc9604800f7a40.camel@ndufresne.ca>","date":"2025-06-05T20:06:09","subject":"Re: [PATCH] gstreamer: Fix libcamerasrc responding latency before\n\tsetting caps","submitter":{"id":30,"url":"https://patchwork.libcamera.org/api/people/30/","name":"Nicolas Dufresne","email":"nicolas@ndufresne.ca"},"content":"Le jeudi 05 juin 2025 à 15:37 +0900, Hou Qi a écrit :\n> Whenever a downstream element queries latency, libcamerasrc will always reply,\n> even though it has not yet determined the latency.\n> \n> However some downstream elements (e.g. glvideomixer/aggregator) will query the\n> latency before libcamerasrc sets the caps. When these elements get the latency,\n> they will start the caps negotiation. Since libcamerasrc has not yet determined\n> caps, invalid negotiation is performed and workflow is disrupted.\n> \n> So, set latency to 'GST_CLOCK_TIME_NONE' during initialization, and reply to the\n> query after libcamerasrc confirms the latency. At this time, libcamerasrc has also\n> completed caps negotiation and downstream elements work fine.\n> \n> In addition, every time the src pad task stops, we reset the latency to\n> GST_CLOCK_TIME_NONE to ensure that when next time task starts, the downstream\n> elements can generate out buffers after receiving the effective latency.\n> \n> Signed-off-by: Hou Qi <qi.hou@nxp.com>\n\nVery nice catch.\n\nReviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\n> ---\n>  src/gstreamer/gstlibcamerapad.cpp | 5 +++++\n>  src/gstreamer/gstlibcamerasrc.cpp | 4 +++-\n>  2 files changed, 8 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp\n> index 3bc2bc87..37a4689f 100644\n> --- a/src/gstreamer/gstlibcamerapad.cpp\n> +++ b/src/gstreamer/gstlibcamerapad.cpp\n> @@ -72,6 +72,10 @@ gst_libcamera_pad_query(GstPad *pad, GstObject *parent, GstQuery *query)\n>  \tif (query->type != GST_QUERY_LATENCY)\n>  \t\treturn gst_pad_query_default(pad, parent, query);\n>  \n> +\tGLibLocker lock(GST_OBJECT(self));\n> +\tif (self->latency == GST_CLOCK_TIME_NONE)\n> +\t\treturn FALSE;\n> +\n>  \t/* TRUE here means live, we assumes that max latency is the same as min\n>  \t * as we have no idea that duration of frames. */\n>  \tgst_query_set_latency(query, TRUE, self->latency, self->latency);\n> @@ -81,6 +85,7 @@ gst_libcamera_pad_query(GstPad *pad, GstObject *parent, GstQuery *query)\n>  static void\n>  gst_libcamera_pad_init(GstLibcameraPad *self)\n>  {\n> +\tself->latency = GST_CLOCK_TIME_NONE;\n>  \tGST_PAD_QUERYFUNC(self) = gst_libcamera_pad_query;\n>  }\n>  \n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index b34f0897..b57d4a55 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -835,8 +835,10 @@ gst_libcamera_src_task_leave([[maybe_unused]] GstTask *task,\n>  \n>  \t{\n>  \t\tGLibRecLocker locker(&self->stream_lock);\n> -\t\tfor (GstPad *srcpad : state->srcpads_)\n> +\t\tfor (GstPad *srcpad : state->srcpads_) {\n> +\t\t\tgst_libcamera_pad_set_latency(srcpad, GST_CLOCK_TIME_NONE);\n>  \t\t\tgst_libcamera_pad_set_pool(srcpad, nullptr);\n> +\t\t}\n>  \t}\n>  \n>  \tg_clear_object(&self->allocator);","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 63188C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  5 Jun 2025 20:06:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0A99868DBD;\n\tThu,  5 Jun 2025 22:06:14 +0200 (CEST)","from mail-qk1-x72f.google.com (mail-qk1-x72f.google.com\n\t[IPv6:2607:f8b0:4864:20::72f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5FDA168D96\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  5 Jun 2025 22:06:12 +0200 (CEST)","by mail-qk1-x72f.google.com with SMTP id\n\taf79cd13be357-7d09b0a5050so87610585a.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 05 Jun 2025 13:06:12 -0700 (PDT)","from ?IPv6:2606:6d00:10:5285::5ac? ([2606:6d00:10:5285::5ac])\n\tby smtp.gmail.com with ESMTPSA id\n\taf79cd13be357-7d2669b4759sm12586385a.111.2025.06.05.13.06.10\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 05 Jun 2025 13:06:10 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=ndufresne-ca.20230601.gappssmtp.com\n\theader.i=@ndufresne-ca.20230601.gappssmtp.com\n\theader.b=\"fNbDkT9u\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ndufresne-ca.20230601.gappssmtp.com; s=20230601; t=1749153971;\n\tx=1749758771; darn=lists.libcamera.org; \n\th=mime-version:user-agent:content-transfer-encoding:references\n\t:in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=+uJhXT8xtx6ls97Odw0f3NUeO+Q8aXqPRfzDL0I6zw0=;\n\tb=fNbDkT9urnChAG4Usbj18lOdG49wslUNwA9TUJ04miOqp7VAE86d6Z8R93UgNLlMSH\n\tOViq3xPWMDGUDRNO/5NnNRfFWgsOVAgFkrSfcgIe4kC5gzZ4TSRuhoEvDouD0dR25QAS\n\tMGMk6rAkxF6riHPFE2tT44+gkVFb3kp9Me0IGdL5Y69S3IU17UsRqSZjU4vFGLC10K1a\n\tE/7MukOIfSJvwOKiI/5+e3m2H33PA40I8SI8FNYOr5A+UXfNY7AR3NdDsjdm4kRHnHgB\n\tTojPsQKvUNnlNcm3U4l6D/MfaZSDMBi31sHmmP2rpRe61j5Fr2PlxEvlJxGaOlb0cFqW\n\taNng==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1749153971; x=1749758771;\n\th=mime-version:user-agent:content-transfer-encoding:references\n\t:in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=+uJhXT8xtx6ls97Odw0f3NUeO+Q8aXqPRfzDL0I6zw0=;\n\tb=kcPZhVkLpYIYZ3PGBAKRsDgAY7CFXclj/sB4SD2DGlpJIlrL3Hll9DmDxWWW8yv+qH\n\t+E/mrDoZFMNICDwGCdaPHsBwEuEKNZieKrfXkhAtwStV4gl0PPHU7xUyO/TREZdHm+U3\n\tDxqXOHMp2WDEjbcp+1ojvXTm9hv4IwesYHz+cm1UieRf6n7FZ+WyyGY7oarHetoeU9MZ\n\tWhNqkkrMobdzOJ3odk1GN4AOEZ7JI0gFu4PdzPMqP4lUHhdGSH2L8+c/BRle14EGnTJJ\n\tvmaTlbKhnFB2wrLEvPj5F+TCp/KqaECBOAfB3kdYzH/re2AZKgFzh45EOQLgWQj1amZy\n\ttkHA==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCVtGEKgKdcrMz8I17/q9OqG0DmE+XFymkG9q9hQrYvt7O0/g0TAR9LScfrJaz4BNderLpab8e7dQKsTN55Tmm0=@lists.libcamera.org","X-Gm-Message-State":"AOJu0Yyh0tObX5p4aV4L/OerYkFqlb71Zun24dwOX0X6F877jE82I+9z\n\thfMShcLk/93HXqVecNOShQ58QogspQ6NcrC0fYQ8344D52mMWu1Geamkw+xSBUSoTo0=","X-Gm-Gg":"ASbGncv/GaGqhI/3M41zPHJM1K5HqPEIHo14tc0f9bCzVoXwZBCimfqZMi2eoqWYxcp\n\tVPzON97wqgYs2dd+L6gA/1gH1WlRjIMMaZYwW0Hl8zwdNF2aABauBfsaS2VSH1zUfYGT+e0S5Bz\n\tHFZuikxW/XMgO1ZzArfwHeIbLnr0qTtUamzZGk9VUGxhtdwP1jgG/kMIogfXPMJ+Jguwv3ZmMSq\n\tTzOFKcxe+kVPBzVWWLK1mcJsmXrWlTvryPYtAvyCw4KyJ4jS9IjG1UDBCFanxeUiYO9K4y8hkIl\n\tQCy+PSlvmhZIPPu4w1vI7fwBQlT6qSH+OzJamSelQjgd3HsB8DgpKlMt","X-Google-Smtp-Source":"AGHT+IFERscideWBYLlv5xCBmSUZaBPcGZiXfukzx0PRrB1OX8E6Y1OaEn1aBRENZ+DRBNlQHWfpFg==","X-Received":"by 2002:a05:620a:454a:b0:7d2:27bf:79a3 with SMTP id\n\taf79cd13be357-7d2299d0c18mr142182485a.53.1749153971177; \n\tThu, 05 Jun 2025 13:06:11 -0700 (PDT)","Message-ID":"<7339d8b07a380d518016b8d661bc9604800f7a40.camel@ndufresne.ca>","Subject":"Re: [PATCH] gstreamer: Fix libcamerasrc responding latency before\n\tsetting caps","From":"Nicolas Dufresne <nicolas@ndufresne.ca>","To":"Hou Qi <qi.hou@nxp.com>, libcamera-devel@lists.libcamera.org","Cc":"jared.hu@nxp.com, julien.vuillaumier@nxp.com","Date":"Thu, 05 Jun 2025 16:06:09 -0400","In-Reply-To":"<20250605063741.1527483-1-qi.hou@nxp.com>","References":"<20250605063741.1527483-1-qi.hou@nxp.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.56.2 (3.56.2-1.fc42) ","MIME-Version":"1.0","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":34532,"web_url":"https://patchwork.libcamera.org/comment/34532/","msgid":"<PAXPR04MB82852F866B8474C2E13C4FDA9772A@PAXPR04MB8285.eurprd04.prod.outlook.com>","date":"2025-06-18T02:10:01","subject":"RE: [EXT] Re: [PATCH] gstreamer: Fix libcamerasrc responding latency\n\tbefore setting caps","submitter":{"id":195,"url":"https://patchwork.libcamera.org/api/people/195/","name":"Qi Hou","email":"qi.hou@nxp.com"},"content":"Hi Nicolas,\nThanks for your review.\n\nHi Kieran Bingham,\nCan you help review and merge the code if no other concern. Many thanks.\n\nRegards,\nQi Hou\n\n-----Original Message-----\nFrom: Nicolas Dufresne <nicolas@ndufresne.ca> \nSent: 2025年6月6日 4:06\nTo: Qi Hou <qi.hou@nxp.com>; libcamera-devel@lists.libcamera.org\nCc: Jared Hu <jared.hu@nxp.com>; Julien Vuillaumier <julien.vuillaumier@nxp.com>\nSubject: [EXT] Re: [PATCH] gstreamer: Fix libcamerasrc responding latency before setting caps\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\nLe jeudi 05 juin 2025 à 15:37 +0900, Hou Qi a écrit :\n> Whenever a downstream element queries latency, libcamerasrc will \n> always reply, even though it has not yet determined the latency.\n>\n> However some downstream elements (e.g. glvideomixer/aggregator) will \n> query the latency before libcamerasrc sets the caps. When these \n> elements get the latency, they will start the caps negotiation. Since \n> libcamerasrc has not yet determined caps, invalid negotiation is performed and workflow is disrupted.\n>\n> So, set latency to 'GST_CLOCK_TIME_NONE' during initialization, and \n> reply to the query after libcamerasrc confirms the latency. At this \n> time, libcamerasrc has also completed caps negotiation and downstream elements work fine.\n>\n> In addition, every time the src pad task stops, we reset the latency \n> to GST_CLOCK_TIME_NONE to ensure that when next time task starts, the \n> downstream elements can generate out buffers after receiving the effective latency.\n>\n> Signed-off-by: Hou Qi <qi.hou@nxp.com>\n\nVery nice catch.\n\nReviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\n> ---\n>  src/gstreamer/gstlibcamerapad.cpp | 5 +++++  \n> src/gstreamer/gstlibcamerasrc.cpp | 4 +++-\n>  2 files changed, 8 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/gstreamer/gstlibcamerapad.cpp \n> b/src/gstreamer/gstlibcamerapad.cpp\n> index 3bc2bc87..37a4689f 100644\n> --- a/src/gstreamer/gstlibcamerapad.cpp\n> +++ b/src/gstreamer/gstlibcamerapad.cpp\n> @@ -72,6 +72,10 @@ gst_libcamera_pad_query(GstPad *pad, GstObject *parent, GstQuery *query)\n>       if (query->type != GST_QUERY_LATENCY)\n>               return gst_pad_query_default(pad, parent, query);\n>\n> +     GLibLocker lock(GST_OBJECT(self));\n> +     if (self->latency == GST_CLOCK_TIME_NONE)\n> +             return FALSE;\n> +\n>       /* TRUE here means live, we assumes that max latency is the same as min\n>        * as we have no idea that duration of frames. */\n>       gst_query_set_latency(query, TRUE, self->latency, \n> self->latency); @@ -81,6 +85,7 @@ gst_libcamera_pad_query(GstPad *pad, \n> GstObject *parent, GstQuery *query)  static void  \n> gst_libcamera_pad_init(GstLibcameraPad *self)  {\n> +     self->latency = GST_CLOCK_TIME_NONE;\n>       GST_PAD_QUERYFUNC(self) = gst_libcamera_pad_query;  }\n>\n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp \n> b/src/gstreamer/gstlibcamerasrc.cpp\n> index b34f0897..b57d4a55 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -835,8 +835,10 @@ gst_libcamera_src_task_leave([[maybe_unused]] \n> GstTask *task,\n>\n>       {\n>               GLibRecLocker locker(&self->stream_lock);\n> -             for (GstPad *srcpad : state->srcpads_)\n> +             for (GstPad *srcpad : state->srcpads_) {\n> +                     gst_libcamera_pad_set_latency(srcpad, \n> + GST_CLOCK_TIME_NONE);\n>                       gst_libcamera_pad_set_pool(srcpad, nullptr);\n> +             }\n>       }\n>\n>       g_clear_object(&self->allocator);","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 49DDBBDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jun 2025 02:10:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1734968DC7;\n\tWed, 18 Jun 2025 04:10:05 +0200 (CEST)","from MRWPR03CU001.outbound.protection.outlook.com\n\t(mail-francesouthazlp170110003.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c207::3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 754CA614E1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jun 2025 04:10:03 +0200 (CEST)","from PAXPR04MB8285.eurprd04.prod.outlook.com\n\t(2603:10a6:102:1ca::15)\n\tby DBBPR04MB7706.eurprd04.prod.outlook.com (2603:10a6:10:208::21)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.30;\n\tWed, 18 Jun 2025 02:10:01 +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.8835.027;\n\tWed, 18 Jun 2025 02:10:01 +0000"],"Authentication-Results":["lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"Y/xZxdWI\";\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=sQo9o0yRS0iavOgFjJDJsKjA7D1gfC+aanoA2H2k/ySVrUp9LxqN4haAHg9wkgAynvVurIlBpt3SbEoKfGt/oskqW9fixl+rpSj906pZFhUZrhO95zERPuMG8URBNuqWgUtzKCi4kaL09XZq3wojt33XwTA8lFXpPjE6JNcK3DqNtEaQCDBo7u8tXc1V4cEdR0I24iSDjeeoLFz2HM/wn4rZhBaB4BLF84FSNpZFNRlli6jvZXYram7FuNHXI1DlsO3MCEYHl5wTFlgHD2yFkE3dq7MHdlmsmQP/YKlZ4akaBVtTCWtuVGZjErKAwzip9yKYsi9srivNLrZfj07qZg==","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=uLcYlZ/Mae3svX0JzndVNzjWK5iql4Hxe7bAWPJb/cc=;\n\tb=Bcbkh3w33L0r0xu8MZ9NqHFzCOHvS+a1HA+2LVOwHlEZEyn0WWVoOKx6L3h1lQ5kSzDMIVYoN+rZlRuor5zlTaqHFctAhEp6xc/k2AWn39D33AleqvMjAX4ZKx+0vb8CqZyd5lehfRWrYBlEDgG0/wNkIAqf+dWYQqLf3wmTA/psiw3UtTIRd/VXCbqFGH/ORQbg6jzxDiNBSV+QjSxDyCeU48K9nDxPhcK02G3GO61kh5LLVdWE6NOnnoJLnl+EaYtx/+Bk508DruYi13sxhRVLNd97VTWs8Ouq0bpyDOv69ImxvE8q3K2c3FFDW2cyKFF2Si3dG+1XDdvMhn0CJw==","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=uLcYlZ/Mae3svX0JzndVNzjWK5iql4Hxe7bAWPJb/cc=;\n\tb=Y/xZxdWIvA4iqhf1IEAHWaj4u0UteAKIDV7Zgdxf1dQH4bC4B8oJknB5cb4mppjsWVJjyiJXwRR81hS/SDIiiDa+dP5JME5vxbPdJN1Bz58Y8HgoSFMG8Gqu5inqD1p8NnZ+ESa8SoA6sNAIgH/VCLrwZd/BIaaZRmDmTFPP4/O/Mw3qAP+xaGvi/punpOyii9mM1UtwUeHRb3PCqldZTeaNit1m45BDe1cvZcIxpi1Z+5opu8JmeU8LaTPIcZCwvb2uDlwOK4rhpjmubyB5DbnEWjfnTmmq+cJqbFXbkBKkUJEGQWP1ZK5L8oUUI0kUcYOsH4OAZwSY15jQFpeDcQ==","From":"Qi Hou <qi.hou@nxp.com>","To":"Nicolas Dufresne <nicolas@ndufresne.ca>,\n\t\"libcamera-devel@lists.libcamera.org\"\n\t<libcamera-devel@lists.libcamera.org>, \n\tKieran Bingham <kieran.bingham@ideasonboard.com>","CC":"Jared Hu <jared.hu@nxp.com>, Julien Vuillaumier\n\t<julien.vuillaumier@nxp.com>","Subject":"RE: [EXT] Re: [PATCH] gstreamer: Fix libcamerasrc responding latency\n\tbefore setting caps","Thread-Topic":"[EXT] Re: [PATCH] gstreamer: Fix libcamerasrc responding\n\tlatency before setting caps","Thread-Index":"AQHb1eRhn0AsFv3zjUOrv0ltgaXuh7P0/sWAgBNA71A=","Date":"Wed, 18 Jun 2025 02:10:01 +0000","Message-ID":"<PAXPR04MB82852F866B8474C2E13C4FDA9772A@PAXPR04MB8285.eurprd04.prod.outlook.com>","References":"<20250605063741.1527483-1-qi.hou@nxp.com>\n\t<7339d8b07a380d518016b8d661bc9604800f7a40.camel@ndufresne.ca>","In-Reply-To":"<7339d8b07a380d518016b8d661bc9604800f7a40.camel@ndufresne.ca>","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=\"Y/xZxdWI\";\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_|DBBPR04MB7706:EE_","x-ms-office365-filtering-correlation-id":"3ad89d1f-8835-4909-9ebf-08ddae0d3bb3","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n\tARA:13230040|1800799024|366016|376014|38070700018; ","x-microsoft-antispam-message-info":"=?gb2312?b?alNaT3N4eFBNeDZuUjhhTnNt?=\n\t=?gb2312?b?L1NrbkdEWEpObFhVbjhMM3dWRlRVTzdsR2pFNlE1YzRnai91UUdE?=\n\t=?gb2312?b?RUQ2UHdRbCtuMkdTajloL2xSL29LbFhaMEs1VG1CZ3R4aW9xRTlT?=\n\t=?gb2312?b?MFNPYkVYak45N241SzNqT1ZmQ3cxdFdWNjFqSWQ5Q0xqOXYvMCtt?=\n\t=?gb2312?b?dW9jYVRyYzNQaGpQeVVIbHJSOHFpcm1BWHFtdFM3ZVJCUWRiSEZk?=\n\t=?gb2312?b?aGgzS1kvYk8zbjJUR3gvTU9EUVd0MERUZEhSRGdWbEJ0VEdIb3Ju?=\n\t=?gb2312?b?S0ZMb0pKZGljSDRwRFZPYktBUC9DSVkxSnVFR1Y4enhnM1BHb1pJ?=\n\t=?gb2312?b?eEVpUXduWnE0WmE5U1QrNmVOWFd5Y0hEMjNwK09FamE3ZWZ1TWYr?=\n\t=?gb2312?b?TDhYelI3YUZ2OEF6M0FVWVRFeHJLUk5BQ0VPc21ZeGo2cENSeWFS?=\n\t=?gb2312?b?ZzlTWGFCMEkyMkRxd1BWVm9iN3ZHendMa3B2RXZtaFdZMm4rcUlV?=\n\t=?gb2312?b?cjJCL29uZVNWOE1kLzR5a2t5bFdVTVIwTks5RU9rcTB4NExzdVd1?=\n\t=?gb2312?b?ZnZVYXZLbzhLQUMyR3lsY1NKdC82bmd5QjUrMW9DTENPZHZic3VT?=\n\t=?gb2312?b?Z1BlQWwzWnc4emYyK2dKUEliUy9TN1BuWkVONGV1cWR4UU1IWnR4?=\n\t=?gb2312?b?NzBoMm9EM2pNTzRObHk0M1Fkc3piYUNzM0NZaXNwOWhIUkw0ZGUv?=\n\t=?gb2312?b?ck5tVWJ0R2NSMG5BejMxNzltbUxCQnh0ZEJ2SFRCdk5EaE44cklk?=\n\t=?gb2312?b?Z20yY0EyNmZReU0vOVFEU0pBdm40cUpFMHpCd3JEUjJlcFMzaEVw?=\n\t=?gb2312?b?ZTdadzkvb05TVVhYNW9TRVB2YS96dUZLZlcrQUtMNTgzYy8xYlo2?=\n\t=?gb2312?b?OGZoV2dHQ21BSmVyVFFYKy9IaldlcUtuMWdqWjBMcG9aWExZNTlE?=\n\t=?gb2312?b?d2t4amlPN2lOS3B4UVRBYWsxYlFaczIyampPTVA2Uy91WFJOZ3JK?=\n\t=?gb2312?b?TEQvOXRIbWRUNWlKTFVjT3VWOG1VZWs2STBDSDVIS21vbFhvenVt?=\n\t=?gb2312?b?VG1DOXEyeEZOTWhqNzZYN2ZLakJ3bGNGNTM1Y1VDZnNxb0hEL3l1?=\n\t=?gb2312?b?eUFtWWY4emZXUkxjVm5GNTFsdyt3U0xZM2FRODJ5YVNETUcwMXN4?=\n\t=?gb2312?b?cG5OUk1ZQjl0WkxjYVllb2szeG5MQVRYRmJEc3BOVnM4RFdZMDNv?=\n\t=?gb2312?b?ZEExQXYrQ29DSlA1bkp5bU5tUU9EMXhOVnI5Q1BWUEx5Q1FMWUtO?=\n\t=?gb2312?b?bGdlT2ZFdFdWMko0ZlBxR2dnb282MjNEUk5CTm9lY1lERFUyMmdi?=\n\t=?gb2312?b?VW5ZRWVCR3QxY3AzYmVxUGlvY05ZaXpPZ0ZuRWoyamYrL1NZUitU?=\n\t=?gb2312?b?THZ4UGJCb1YwMzZsMkJ1NW5RRVlJbkdGMlFhdFNBK0FZRWEybG1Q?=\n\t=?gb2312?b?UjlVWWdNZE1RSzNtdlVVSzArbk1GOTBuc3hjbGRWVHcwSHIrcWpi?=\n\t=?gb2312?b?Z2FsZGtwemxQSzlaZzNQbnJ3OWhyU2Iwb09uRjRGQTUzZS9DWnBs?=\n\t=?gb2312?b?aWN3SGtYRGp2c1ViSUdzZkdtYitVdkNrMUZJVy9sQmEzamd3VVBL?=\n\t=?gb2312?b?R3ZMOVJtRlk1czdGcmhSNkdOVHk3RlZyVXRIR1B0Z3lmalJyS2ls?=\n\t=?gb2312?b?dGsyMmdhenJNajBQQlpRVVVjeCt0ZEtIWkMvRzlKWjdYWVNOdEFn?=\n\t=?gb2312?b?REVxbHc4cmJkZit3elVBTXRYaFlaZHVwc2kxeVI3WTBpUE4vM2R5?=\n\t=?gb2312?b?bkZLVk94ejY5RytiVitacmYyS0I5U2RzaDRib1IwWW1xVEhLZy9i?=\n\t=?gb2312?b?NFNmSVJWd3lwbGFZN1REWk5kSVhscGw1ZzJmdFhnb29zeXhrS0NB?=\n\t=?gb2312?b?VFNxdEhuT2Y3L1B5TElCb0RiYlpqd0ZKQWhZYk9KZUYrWjVhU25u?=\n\t=?gb2312?b?OFIvbXFoWWFMUCtMNGtDSUszck1rQmJoRlJ4WkV0bCtBVVBRa2pT?=\n\t=?gb2312?b?dnlhazZOcDdlVWJyN2pxSjRaS3RmSjAvTU4zOWptblZwNEZmT21m?=\n\t=?gb2312?b?Y0tBTXRFSWkyc0dmQ2t5NWlYUVBZeTlEUU45Y05KVmlBS1c4eXRl?=\n\t=?gb2312?b?clZhUC8xMkNuS1Z0MUlvPQ==?=","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)(1800799024)(366016)(376014)(38070700018);\n\tDIR:OUT; SFP:1101; ","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?gb2312?b?RUZnSm1UNGZqSG1uOThUeWht?=\n\t=?gb2312?b?WmFlRUJ5aVhvWGVVYWFUOVpySTRNUGtMVmd1eW5VYURhWDVUVmxy?=\n\t=?gb2312?b?WjNSaWlZTDI4VUF6amJ0cFlkZUhlNklNM29zdlZPRXpBYjJSMlFG?=\n\t=?gb2312?b?bEdFSVBSd0IxdTU2N0cyRHRwUFlGeVJMZWd1aHNSanBXYjhnUUtD?=\n\t=?gb2312?b?ZzhGSE02d0NIU3NRVjF4eDdCYmVHNlFiczlEblZIMndRMTljR1JX?=\n\t=?gb2312?b?L3BWQkdtM1hHeDlzelZxV3lzUnJDYzUvSW0yVHhtaExnTWRId3k2?=\n\t=?gb2312?b?T0kxV21sVjQyZlBKUjAvd2VLenZaTzlIeE9ZSTZ0dG5aOVc1c2Ew?=\n\t=?gb2312?b?eSt6RnJmT2g2OElwNk5MZXJVWkFuR21QdmJ5ellNMW05S1BGZzdX?=\n\t=?gb2312?b?WXdVSGZtbmFLQ0Z2b0tmUlEvV2czaG5CVEgvbFpldGo4bTZ2Vk5C?=\n\t=?gb2312?b?MUgvellQUmlldFZsVmtwcE9TRm5wdjF6VHpnV1UvQkZxUjFEdVJP?=\n\t=?gb2312?b?Z2lHdFlzRmRic3dQcUpsZzJyMVRZOElTTVpWNDV6ems3NWNVOU5D?=\n\t=?gb2312?b?aXRNbUpwZUhaQlZKbG45bEpIOEZnQ3RRK3VJZnhDZU9yMDI3Vysw?=\n\t=?gb2312?b?RmtYcml6c2pqbEN2MWZGdjBKTTkvM2lRNDVENmtvclhoRnFVY1M1?=\n\t=?gb2312?b?SGxmMnQ0Sk5wMER5cDM0cDRleDBRMXFYVjd6eDJXdzdXTDRLY1Vh?=\n\t=?gb2312?b?bE5MbElkSUc3NVVHWXRMV0R0Q0RINm50aTBibmo3ditIYzVsV0Z0?=\n\t=?gb2312?b?eGtSMXI2U3Rzbk1peTFWMjZVNXVBMnUxSHgxOTljMjFoRlE0aC8x?=\n\t=?gb2312?b?LzNMc0JrUGo1QTBMb0tjbVV4a2VWVjduajBhak02ZXJ0V0YxNzVz?=\n\t=?gb2312?b?bGlCdno4ckFOT2t2UDllY2FBUmVaMFVJWGQ5UHQ5L3JuVThMaUhy?=\n\t=?gb2312?b?Yndvd3JSc1c2elJ5WmNEMDVRZUJOTnprZSs5VW9kaXhXbFYxUm1C?=\n\t=?gb2312?b?YitnUXRjVXJocjR6VlB4MVB3elNJazVTQTNucjF6bmdHNGx2Q2Zv?=\n\t=?gb2312?b?S2FYWi9nenhuNHBXNURJc25YMmVLTnVRdVRLaHd6dFV1SWZkNFpE?=\n\t=?gb2312?b?cmdqSnhNSExxa29YZjlyOU9mQnN5bDRIQng3cnVnMkJkaUMvZzVn?=\n\t=?gb2312?b?QjlYN2hQTlk2ZXNVaktLTWdUcURja2xCVittYjlIQndFZ3lGV24x?=\n\t=?gb2312?b?UlNnOTNnQmNEN2JpQkVJdVB3VFVualBZQ1RyNlJuYWJkbmJ3S1dV?=\n\t=?gb2312?b?MFI2cjk4Y3RSSFNuTDFqQ0NFOTZyb0pHNHhDVmtCNlNYRmpFdWtx?=\n\t=?gb2312?b?M1FUNWM5Y2hERUVtNzdheTJTMitLOXVKUzVDTjgvUDBGckRVU1lW?=\n\t=?gb2312?b?K0FKN20wZ0ZWelNGL2FCSHJBdFM4VkI5RzRMMzdFbldtU2N3U29a?=\n\t=?gb2312?b?d1ZzK0hleGk1eGx6VlZzY2lrcFQ3ajhFZW9OcmUwUk1pMU1IQWEz?=\n\t=?gb2312?b?dHFMYzdKcnpiZGVTMlhmUDZUeUxteXhaUkI4N01taGpXNHRWZm9C?=\n\t=?gb2312?b?NUpqYW8vT2VOM0NrZnU2TUJVWDd0cjJJc3lRM0FveTA4M3BhcVhE?=\n\t=?gb2312?b?Zmt1Y2ZxVGFoN1pwUzFRWjJYb2VmUkpvYmlaZk9xck1OTDhvdWs0?=\n\t=?gb2312?b?QnliYWFtaEJXTjlnS0YvbVJWKytLRlJJOVdJN2dWcTVXLytNR2o3?=\n\t=?gb2312?b?bXFmTEVxYkVQTGJTN3dCcjVpQzVGNUZrT1hwbG1FemVFTUFLbXJh?=\n\t=?gb2312?b?T0pzWlBOVFdEOUI3S1pES0Q0M1ZjK0ZXN0NhejMwOUpFUkxjTUZY?=\n\t=?gb2312?b?SitLakQxMCtnbjdFUjJrd1MxLzRWTm01QW9GRmsycWtFRjdFcmtv?=\n\t=?gb2312?b?MGVQSTRDUHNSYzd0TFhlOVNWZ2dUcnJZNmpMSHpjWkk3bzhPOWsw?=\n\t=?gb2312?b?QlFDeFdvcmlVdGQyNE9Ta3dxc1BkM2QzZWlGK2tGVStQZ0tPV0FE?=\n\t=?gb2312?b?NzdMRFR4WVVDNktJc1ZyUnJOYStCME5LNGVNOVhZcVl0bTVFZlA3?=\n\t=?gb2312?b?blRlWmhQOWpwUlJ3Z2VZM2E5UHJmVXAySFNpZEFQYTBoOUlhRGhE?=\n\t=?gb2312?b?eFBNKzFmR2FkNnhyVjQ5SFRzWGVqUHZzVnZrVEMzVXFCM0VXMzEz?=\n\t=?gb2312?b?ckM5RzU3Y2QvaFBEbnJJeExhSlh5Z2cyRmxRNjcvaENYcFBoR0NY?=\n\t=?gb2312?b?WT0=?=","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":"3ad89d1f-8835-4909-9ebf-08ddae0d3bb3","X-MS-Exchange-CrossTenant-originalarrivaltime":"18 Jun 2025 02:10:01.5406\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":"Bs/ySMGsqXueFRgfkGGdf3ikYEP2ApFFr+RnSaZzR/BX0npYd/U/JZfNgtK+SqRJ","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DBBPR04MB7706","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>"}}]