[{"id":28091,"web_url":"https://patchwork.libcamera.org/comment/28091/","msgid":"<c1e22c1cc523142454ff01eb9d228a7524313f36.camel@collabora.com>","date":"2023-11-14T13:55:20","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":31,"url":"https://patchwork.libcamera.org/api/people/31/","name":"Nicolas Dufresne","email":"nicolas.dufresne@collabora.com"},"content":"Le mardi 14 novembre 2023 à 13:18 +0100, Jaslo Ziska a écrit :\n> This commit implements EOS handling for events sent to the libcamerasrc\n> element by the send_event method (which can happen when pressing\n> Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> downstream elements returning GST_FLOW_EOS are not considered here.\n> \n> To archive this add a function for the send_event method which handles\n> the GST_EVENT_EOS event. This function will set an atomic to the\n> received event and push this EOS event to all source pads in the running\n> task.\n> \n> Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> source element which enables it to receive EOS events sent to the\n> (pipeline) bin containing it.\n> This in turn enables libcamerasrc to for example receive EOS events from\n> gst-launch-1.0 when using the -e flag.\n> \n> Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> Signed-off-by: Jaslo Ziska <jaslo@ziska.de>\n> Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\nReviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\n> ---\n> Thanks for all the advise on v2 everyone!\n> \n> In this revision I explain which EOS events are handled in the commit message a little bit more and link to the bug report.\n> \n> As recommended, g_autoptr is now used. I decided to declare g_autoptr(event) outside of the if-statement for now, I was not sure what the consensus on this is at the moment.\n> \n> Regards,\n> \n> Jaslo\n> \n>  src/gstreamer/gstlibcamerasrc.cpp | 36 ++++++++++++++++++++++++++++++-\n>  1 file changed, 35 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index 63d99571..767017db 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -9,7 +9,6 @@\n>  /**\n>   * \\todo The following is a list of items that needs implementation in the GStreamer plugin\n>   *  - Implement GstElement::send_event\n> - *    + Allowing application to send EOS\n>   *    + Allowing application to use FLUSH/FLUSH_STOP\n>   *    + Prevent the main thread from accessing streaming thread\n>   *  - Implement renegotiation (even if slow)\n> @@ -29,6 +28,7 @@\n> \n>  #include \"gstlibcamerasrc.h\"\n> \n> +#include <atomic>\n>  #include <queue>\n>  #include <vector>\n> \n> @@ -144,6 +144,8 @@ struct _GstLibcameraSrc {\n>  \tgchar *camera_name;\n>  \tcontrols::AfModeEnum auto_focus_mode = controls::AfModeManual;\n> \n> +\tstd::atomic<GstEvent *> pending_eos;\n> +\n>  \tGstLibcameraSrcState *state;\n>  \tGstLibcameraAllocator *allocator;\n>  \tGstFlowCombiner *flow_combiner;\n> @@ -397,6 +399,14 @@ gst_libcamera_src_task_run(gpointer user_data)\n> \n>  \tbool doResume = false;\n> \n> +\tg_autoptr(GstEvent) event = self->pending_eos.exchange(nullptr);\n> +\tif (event) {\n> +\t\tfor (GstPad *srcpad : state->srcpads_)\n> +\t\t\tgst_pad_push_event(srcpad, gst_event_ref(event));\n> +\n> +\t\treturn;\n> +\t}\n> +\n>  \t/*\n>  \t * Create and queue one request. If no buffers are available the\n>  \t * function returns -ENOBUFS, which we ignore here as that's not a\n> @@ -747,6 +757,27 @@ gst_libcamera_src_change_state(GstElement *element, GstStateChange transition)\n>  \treturn ret;\n>  }\n> \n> +static gboolean\n> +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> +{\n> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> +\tgboolean ret = FALSE;\n> +\n> +\tswitch (GST_EVENT_TYPE(event)) {\n> +\tcase GST_EVENT_EOS: {\n> +\t\tg_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> +\n> +\t\tret = TRUE;\n> +\t\tbreak;\n> +\t}\n> +\tdefault:\n> +\t\tgst_event_unref(event);\n> +\t\tbreak;\n> +\t}\n> +\n> +\treturn ret;\n> +}\n> +\n>  static void\n>  gst_libcamera_src_finalize(GObject *object)\n>  {\n> @@ -779,6 +810,8 @@ gst_libcamera_src_init(GstLibcameraSrc *self)\n>  \tstate->srcpads_.push_back(gst_pad_new_from_template(templ, \"src\"));\n>  \tgst_element_add_pad(GST_ELEMENT(self), state->srcpads_.back());\n> \n> +\tGST_OBJECT_FLAG_SET(self, GST_ELEMENT_FLAG_SOURCE);\n> +\n>  \t/* C-style friend. */\n>  \tstate->src_ = self;\n>  \tself->state = state;\n> @@ -844,6 +877,7 @@ gst_libcamera_src_class_init(GstLibcameraSrcClass *klass)\n>  \telement_class->request_new_pad = gst_libcamera_src_request_new_pad;\n>  \telement_class->release_pad = gst_libcamera_src_release_pad;\n>  \telement_class->change_state = gst_libcamera_src_change_state;\n> +\telement_class->send_event = gst_libcamera_src_send_event;\n> \n>  \tgst_element_class_set_metadata(element_class,\n>  \t\t\t\t       \"libcamera Source\", \"Source/Video\",\n> --\n> 2.42.1","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 A8A56BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 14 Nov 2023 13:55:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2BD10629AD;\n\tTue, 14 Nov 2023 14:55:32 +0100 (CET)","from madras.collabora.co.uk (madras.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 114546299E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 14 Nov 2023 14:55:31 +0100 (CET)","from nicolas-tpx395.localdomain (cola.collaboradmins.com\n\t[195.201.22.229])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: nicolas)\n\tby madras.collabora.co.uk (Postfix) with ESMTPSA id 520F36602F34;\n\tTue, 14 Nov 2023 13:55:30 +0000 (GMT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1699970132;\n\tbh=fsul3tN3b9O+owViABQVvYOfDKojZmSbiFrGcprpyjk=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=1dCKptQ10oBbwKind3b/RqhgR4nrJ01NtecCncGP2ge93BVrZsp7d7LL5Yo3n/Vdw\n\t+er//jnSrlxNa4ycxvxpUVoIctVG/BX2Aelu53DZ1GbSnkaAJS3+uSiF0cDhp1OZdZ\n\t3Dau7dsyDyZf0kqnPtmfKDRHQbJM/4/LtazlTQwaqvw888GpTUc3wJWPxNMYi0OyDd\n\t531VGRZMtIk6bp8pRaJ7OTQirWAw7PzLQKCRp9cP506S/dwrDE0ZloHzViJfj3YpCv\n\tF8S3i/1LTENGPRcHkyPsVfMTzrjbxpYiYsDHkvgjpxhzrEnreG+bMV0C4fEUT5jLlf\n\tfd2fmhaAVqkQA==","v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1699970130;\n\tbh=fsul3tN3b9O+owViABQVvYOfDKojZmSbiFrGcprpyjk=;\n\th=Subject:From:To:Date:In-Reply-To:References:From;\n\tb=QMNXmIeN5HBBMUFQjnAlOMk7EGVpPC/tOll4yy6AwHnx3c4+xRhbfUEs/aL9MyYsN\n\tGr0CsgwXBqgAs8ML8bfCLbCwzYHMJ6KQ2+q21x/SaH5lyZB4YqpmVBiQ2L98Jh4dwR\n\trVaaXGTORk/h5QerEDlR7pVDzEz5YHQUXHwMzBTVSfsENE/otd9SlnQDx9PtDhaF2U\n\tloUse1K6GmBO3JVOTQgINYFtsZH57rdSQrOI9sWO0wvZRcQznRpuQYDWhuAETnq2+6\n\tKE4MXsL5ERQyXvPdSYx1sPMQKmsLpe2j3J7hjEGovRu7sV6/HPb2v4oBtVEmA5hugO\n\t+XUd3tTomP/bA=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=collabora.com\n\theader.i=@collabora.com\n\theader.b=\"QMNXmIeN\"; dkim-atps=neutral","Message-ID":"<c1e22c1cc523142454ff01eb9d228a7524313f36.camel@collabora.com>","To":"Jaslo Ziska <jaslo@ziska.de>, libcamera-devel@lists.libcamera.org","Date":"Tue, 14 Nov 2023 08:55:20 -0500","In-Reply-To":"<20231114122800.10007-1-jaslo@ziska.de>","References":"<20231114122800.10007-1-jaslo@ziska.de>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.48.4 (3.48.4-1.fc38) ","MIME-Version":"1.0","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Nicolas Dufresne via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28113,"web_url":"https://patchwork.libcamera.org/comment/28113/","msgid":"<d2e456b7-0c7c-512f-63a1-864a8ac48021@ideasonboard.com>","date":"2023-11-21T09:25:58","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Jalso,\n\nThank you for the patch.\n\nOn 11/14/23 5:48 PM, Jaslo Ziska via libcamera-devel wrote:\n> This commit implements EOS handling for events sent to the libcamerasrc\n> element by the send_event method (which can happen when pressing\n> Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> downstream elements returning GST_FLOW_EOS are not considered here.\n>\n> To archive this add a function for the send_event method which handles\n> the GST_EVENT_EOS event. This function will set an atomic to the\n> received event and push this EOS event to all source pads in the running\n> task.\n>\n> Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> source element which enables it to receive EOS events sent to the\n> (pipeline) bin containing it.\n> This in turn enables libcamerasrc to for example receive EOS events from\n> gst-launch-1.0 when using the -e flag.\n>\n> Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> Signed-off-by: Jaslo Ziska <jaslo@ziska.de>\n> Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\nI will test this on my RPi 4b and merge this today.\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n\n> ---\n> Thanks for all the advise on v2 everyone!\n>\n> In this revision I explain which EOS events are handled in the commit message a little bit more and link to the bug report.\n>\n> As recommended, g_autoptr is now used. I decided to declare g_autoptr(event) outside of the if-statement for now, I was not sure what the consensus on this is at the moment.\n>\n> Regards,\n>\n> Jaslo\n>\n>   src/gstreamer/gstlibcamerasrc.cpp | 36 ++++++++++++++++++++++++++++++-\n>   1 file changed, 35 insertions(+), 1 deletion(-)\n>\n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index 63d99571..767017db 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -9,7 +9,6 @@\n>   /**\n>    * \\todo The following is a list of items that needs implementation in the GStreamer plugin\n>    *  - Implement GstElement::send_event\n> - *    + Allowing application to send EOS\n>    *    + Allowing application to use FLUSH/FLUSH_STOP\n>    *    + Prevent the main thread from accessing streaming thread\n>    *  - Implement renegotiation (even if slow)\n> @@ -29,6 +28,7 @@\n>\n>   #include \"gstlibcamerasrc.h\"\n>\n> +#include <atomic>\n>   #include <queue>\n>   #include <vector>\n>\n> @@ -144,6 +144,8 @@ struct _GstLibcameraSrc {\n>   \tgchar *camera_name;\n>   \tcontrols::AfModeEnum auto_focus_mode = controls::AfModeManual;\n>\n> +\tstd::atomic<GstEvent *> pending_eos;\n> +\n>   \tGstLibcameraSrcState *state;\n>   \tGstLibcameraAllocator *allocator;\n>   \tGstFlowCombiner *flow_combiner;\n> @@ -397,6 +399,14 @@ gst_libcamera_src_task_run(gpointer user_data)\n>\n>   \tbool doResume = false;\n>\n> +\tg_autoptr(GstEvent) event = self->pending_eos.exchange(nullptr);\n> +\tif (event) {\n> +\t\tfor (GstPad *srcpad : state->srcpads_)\n> +\t\t\tgst_pad_push_event(srcpad, gst_event_ref(event));\n> +\n> +\t\treturn;\n> +\t}\n> +\n>   \t/*\n>   \t * Create and queue one request. If no buffers are available the\n>   \t * function returns -ENOBUFS, which we ignore here as that's not a\n> @@ -747,6 +757,27 @@ gst_libcamera_src_change_state(GstElement *element, GstStateChange transition)\n>   \treturn ret;\n>   }\n>\n> +static gboolean\n> +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> +{\n> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> +\tgboolean ret = FALSE;\n> +\n> +\tswitch (GST_EVENT_TYPE(event)) {\n> +\tcase GST_EVENT_EOS: {\n> +\t\tg_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> +\n> +\t\tret = TRUE;\n> +\t\tbreak;\n> +\t}\n> +\tdefault:\n> +\t\tgst_event_unref(event);\n> +\t\tbreak;\n> +\t}\n> +\n> +\treturn ret;\n> +}\n> +\n>   static void\n>   gst_libcamera_src_finalize(GObject *object)\n>   {\n> @@ -779,6 +810,8 @@ gst_libcamera_src_init(GstLibcameraSrc *self)\n>   \tstate->srcpads_.push_back(gst_pad_new_from_template(templ, \"src\"));\n>   \tgst_element_add_pad(GST_ELEMENT(self), state->srcpads_.back());\n>\n> +\tGST_OBJECT_FLAG_SET(self, GST_ELEMENT_FLAG_SOURCE);\n> +\n>   \t/* C-style friend. */\n>   \tstate->src_ = self;\n>   \tself->state = state;\n> @@ -844,6 +877,7 @@ gst_libcamera_src_class_init(GstLibcameraSrcClass *klass)\n>   \telement_class->request_new_pad = gst_libcamera_src_request_new_pad;\n>   \telement_class->release_pad = gst_libcamera_src_release_pad;\n>   \telement_class->change_state = gst_libcamera_src_change_state;\n> +\telement_class->send_event = gst_libcamera_src_send_event;\n>\n>   \tgst_element_class_set_metadata(element_class,\n>   \t\t\t\t       \"libcamera Source\", \"Source/Video\",\n> --\n> 2.42.1","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 CC12EC3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Nov 2023 09:26:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0D7A4629B6;\n\tTue, 21 Nov 2023 10:26:04 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2E47C61DAC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Nov 2023 10:26:03 +0100 (CET)","from [192.168.1.104] (unknown [103.86.18.229])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4012A36C;\n\tTue, 21 Nov 2023 10:25:32 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700558765;\n\tbh=3krdjDsByDlyxVO/eEf+zZLFkXKGR06WmSEAEG+EFtw=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=k76DYlSFvqntEQbA4pF4nwp5KCp5qcTXVYtYUYAWPzm5zC7rFSpUtmFmWTGmbkvNo\n\t6Tq2PySY4cF+RISRZ5IvUHMepdcL5mvtl56hWlHzWxu7R1nTKQzVQLPoydFSF0fr/l\n\tjyIkMXKIpe26GZG6Gac09EDwAWA1oo4FOhbFzbRZVovfpwsYld5ix65pnSmXPDQdL+\n\tk2NfQrovrzV6NKobZ9Op7aGEHsmzXKolMr6brsuvOfVEQnz0oAAi7Q/Btp6KNRS557\n\t8T6atW9jPAVrFIinQTZJ4+BxiSq5iEvJ1eNGHacVsfMm0HONrWf3mAx4xcgs9xf0z7\n\tLbzKtEjIWhbTw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700558732;\n\tbh=3krdjDsByDlyxVO/eEf+zZLFkXKGR06WmSEAEG+EFtw=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=nGjrZVGODQjpbXCnAzq95W/O1QeDSuhXLiKc1sUG0H2zgdmz+CeiMrj+MvXjOhQlO\n\tdAKgcy/5RERchRFr+7M0eS50Sskd6Px7D9cq8xhoaW5jwdMo/3PWpz/sns/a5OAcCp\n\tTN31PyiIRUjwUU26NY19ioeSnbujf0jTQlUzxldI="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"nGjrZVGO\"; dkim-atps=neutral","Message-ID":"<d2e456b7-0c7c-512f-63a1-864a8ac48021@ideasonboard.com>","Date":"Tue, 21 Nov 2023 14:55:58 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.10.0","To":"Jaslo Ziska <jaslo@ziska.de>, libcamera-devel@lists.libcamera.org","References":"<20231114122800.10007-1-jaslo@ziska.de>","Content-Language":"en-US","In-Reply-To":"<20231114122800.10007-1-jaslo@ziska.de>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Cc":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28129,"web_url":"https://patchwork.libcamera.org/comment/28129/","msgid":"<20231122163849.GA22993@pendragon.ideasonboard.com>","date":"2023-11-22T16:38:49","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> This commit implements EOS handling for events sent to the libcamerasrc\n> element by the send_event method (which can happen when pressing\n> Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> downstream elements returning GST_FLOW_EOS are not considered here.\n> \n> To archive this add a function for the send_event method which handles\n> the GST_EVENT_EOS event. This function will set an atomic to the\n> received event and push this EOS event to all source pads in the running\n> task.\n> \n> Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> source element which enables it to receive EOS events sent to the\n> (pipeline) bin containing it.\n> This in turn enables libcamerasrc to for example receive EOS events from\n> gst-launch-1.0 when using the -e flag.\n> \n> Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> Signed-off-by: Jaslo Ziska <jaslo@ziska.de>\n> Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> ---\n> Thanks for all the advise on v2 everyone!\n> \n> In this revision I explain which EOS events are handled in the commit message a little bit more and link to the bug report.\n> \n> As recommended, g_autoptr is now used. I decided to declare g_autoptr(event) outside of the if-statement for now, I was not sure what the consensus on this is at the moment.\n> \n> Regards,\n> \n> Jaslo\n> \n>  src/gstreamer/gstlibcamerasrc.cpp | 36 ++++++++++++++++++++++++++++++-\n>  1 file changed, 35 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index 63d99571..767017db 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -9,7 +9,6 @@\n>  /**\n>   * \\todo The following is a list of items that needs implementation in the GStreamer plugin\n>   *  - Implement GstElement::send_event\n> - *    + Allowing application to send EOS\n>   *    + Allowing application to use FLUSH/FLUSH_STOP\n>   *    + Prevent the main thread from accessing streaming thread\n>   *  - Implement renegotiation (even if slow)\n> @@ -29,6 +28,7 @@\n> \n>  #include \"gstlibcamerasrc.h\"\n> \n> +#include <atomic>\n>  #include <queue>\n>  #include <vector>\n> \n> @@ -144,6 +144,8 @@ struct _GstLibcameraSrc {\n>  \tgchar *camera_name;\n>  \tcontrols::AfModeEnum auto_focus_mode = controls::AfModeManual;\n> \n> +\tstd::atomic<GstEvent *> pending_eos;\n> +\n>  \tGstLibcameraSrcState *state;\n>  \tGstLibcameraAllocator *allocator;\n>  \tGstFlowCombiner *flow_combiner;\n> @@ -397,6 +399,14 @@ gst_libcamera_src_task_run(gpointer user_data)\n> \n>  \tbool doResume = false;\n> \n> +\tg_autoptr(GstEvent) event = self->pending_eos.exchange(nullptr);\n> +\tif (event) {\n> +\t\tfor (GstPad *srcpad : state->srcpads_)\n> +\t\t\tgst_pad_push_event(srcpad, gst_event_ref(event));\n> +\n> +\t\treturn;\n> +\t}\n> +\n>  \t/*\n>  \t * Create and queue one request. If no buffers are available the\n>  \t * function returns -ENOBUFS, which we ignore here as that's not a\n> @@ -747,6 +757,27 @@ gst_libcamera_src_change_state(GstElement *element, GstStateChange transition)\n>  \treturn ret;\n>  }\n> \n> +static gboolean\n> +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> +{\n> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> +\tgboolean ret = FALSE;\n> +\n> +\tswitch (GST_EVENT_TYPE(event)) {\n> +\tcase GST_EVENT_EOS: {\n> +\t\tg_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n\nI'm afraid this causes a compilation breakage with clang :-(\n\n../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n                g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n                                    ^\n\nThe patch has been merged, can you propose a fix quickly, or should I\nrevert to give you more time ?\n\n> +\n> +\t\tret = TRUE;\n> +\t\tbreak;\n> +\t}\n> +\tdefault:\n> +\t\tgst_event_unref(event);\n> +\t\tbreak;\n> +\t}\n> +\n> +\treturn ret;\n> +}\n> +\n>  static void\n>  gst_libcamera_src_finalize(GObject *object)\n>  {\n> @@ -779,6 +810,8 @@ gst_libcamera_src_init(GstLibcameraSrc *self)\n>  \tstate->srcpads_.push_back(gst_pad_new_from_template(templ, \"src\"));\n>  \tgst_element_add_pad(GST_ELEMENT(self), state->srcpads_.back());\n> \n> +\tGST_OBJECT_FLAG_SET(self, GST_ELEMENT_FLAG_SOURCE);\n> +\n>  \t/* C-style friend. */\n>  \tstate->src_ = self;\n>  \tself->state = state;\n> @@ -844,6 +877,7 @@ gst_libcamera_src_class_init(GstLibcameraSrcClass *klass)\n>  \telement_class->request_new_pad = gst_libcamera_src_request_new_pad;\n>  \telement_class->release_pad = gst_libcamera_src_release_pad;\n>  \telement_class->change_state = gst_libcamera_src_change_state;\n> +\telement_class->send_event = gst_libcamera_src_send_event;\n> \n>  \tgst_element_class_set_metadata(element_class,\n>  \t\t\t\t       \"libcamera Source\", \"Source/Video\",","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 A270CC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 16:38:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 053F1629AF;\n\tWed, 22 Nov 2023 17:38:46 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 07BE261DAD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 17:38:44 +0100 (CET)","from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi\n\t[213.243.189.158])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7899729A;\n\tWed, 22 Nov 2023 17:38:12 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700671126;\n\tbh=l/Tc3+l4BNhZV5hbh4tT3SlxISfo6bXZ+uApa3etnq4=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=AJWXkjorNejxuY6ZcvTl8yCuHNN3ZCuud2OOm/PaRegmEXqm3t3D6KJfG1sl/T1NB\n\tR99amcKM4mnITOGYvnzW5q4aT4p3dbFLEZKKoTEr4hz5MF3OL0CZNKymVXouhVYFq+\n\tN/Y8PH1rbml4XGmXkJilbJtw/Swlw0Uu8ibC1wJPC048KnvqIWTvK6tuyce+AysrDP\n\tqRnh9OtbVoLG2gJxBX2/0h2wsnzP0IxL83Iz7+0hd9KI6XVr+nQrPuM/W9vvtZXfqQ\n\tFEzhw3KMc7Wlui34vfgy4wJjKVd4un90wcZol4jb8KOJLDiRZT3TUYROuFhL9z14fh\n\tw8CHgJTldecow==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700671092;\n\tbh=l/Tc3+l4BNhZV5hbh4tT3SlxISfo6bXZ+uApa3etnq4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=lb8pzTdvaihR2A264b06U7tEE5jdrlRBE7c1nK9xGvRJ1COBJU37muZDvD3nypHOK\n\ttrX17eAeOReuzqSyb07W6fZ0lXlmb4MJ37AB7lh2Qw/GhoAgb3J+8nbf5R31qx4Eo2\n\tGeCTj1d0MWpDguksrDU/QUx5SSQu4hwp1BF6meFQ="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"lb8pzTdv\"; dkim-atps=neutral","Date":"Wed, 22 Nov 2023 18:38:49 +0200","To":"Jaslo Ziska <jaslo@ziska.de>","Message-ID":"<20231122163849.GA22993@pendragon.ideasonboard.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20231114122800.10007-1-jaslo@ziska.de>","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28131,"web_url":"https://patchwork.libcamera.org/comment/28131/","msgid":"<87edghemyk.fsf@ziska.de>","date":"2023-11-22T16:59:15","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":173,"url":"https://patchwork.libcamera.org/api/people/173/","name":"Jaslo Ziska","email":"jaslo@ziska.de"},"content":"Hi,\n\nLaurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n> Hello,\n>\n> On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via \n> libcamera-devel wrote:\n>> This commit implements EOS handling for events sent to the \n>> libcamerasrc\n>> element by the send_event method (which can happen when \n>> pressing\n>> Ctrl-C while running gst-launch-1.0 -e, see below). EOS events \n>> from\n>> downstream elements returning GST_FLOW_EOS are not considered \n>> here.\n>>\n>> To archive this add a function for the send_event method which \n>> handles\n>> the GST_EVENT_EOS event. This function will set an atomic to \n>> the\n>> received event and push this EOS event to all source pads in \n>> the running\n>> task.\n>>\n>> Also set the GST_ELEMENT_FLAG_SOURCE flag to identify \n>> libcamerasrc as a\n>> source element which enables it to receive EOS events sent to \n>> the\n>> (pipeline) bin containing it.\n>> This in turn enables libcamerasrc to for example receive EOS \n>> events from\n>> gst-launch-1.0 when using the -e flag.\n>>\n>> Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n>> Signed-off-by: Jaslo Ziska <jaslo@ziska.de>\n>> Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n>> ---\n>> Thanks for all the advise on v2 everyone!\n>>\n>> In this revision I explain which EOS events are handled in the \n>> commit message a little bit more and link to the bug report.\n>>\n>> As recommended, g_autoptr is now used. I decided to declare \n>> g_autoptr(event) outside of the if-statement for now, I was not \n>> sure what the consensus on this is at the moment.\n>>\n>> Regards,\n>>\n>> Jaslo\n>>\n>>  src/gstreamer/gstlibcamerasrc.cpp | 36 \n>>  ++++++++++++++++++++++++++++++-\n>>  1 file changed, 35 insertions(+), 1 deletion(-)\n>>\n>> diff --git a/src/gstreamer/gstlibcamerasrc.cpp \n>> b/src/gstreamer/gstlibcamerasrc.cpp\n>> index 63d99571..767017db 100644\n>> --- a/src/gstreamer/gstlibcamerasrc.cpp\n>> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n>> @@ -9,7 +9,6 @@\n>>  /**\n>>   * \\todo The following is a list of items that needs \n>>   implementation in the GStreamer plugin\n>>   *  - Implement GstElement::send_event\n>> - *    + Allowing application to send EOS\n>>   *    + Allowing application to use FLUSH/FLUSH_STOP\n>>   *    + Prevent the main thread from accessing streaming \n>>   thread\n>>   *  - Implement renegotiation (even if slow)\n>> @@ -29,6 +28,7 @@\n>>\n>>  #include \"gstlibcamerasrc.h\"\n>>\n>> +#include <atomic>\n>>  #include <queue>\n>>  #include <vector>\n>>\n>> @@ -144,6 +144,8 @@ struct _GstLibcameraSrc {\n>>  \tgchar *camera_name;\n>>  \tcontrols::AfModeEnum auto_focus_mode = \n>>  controls::AfModeManual;\n>>\n>> +\tstd::atomic<GstEvent *> pending_eos;\n>> +\n>>  \tGstLibcameraSrcState *state;\n>>  \tGstLibcameraAllocator *allocator;\n>>  \tGstFlowCombiner *flow_combiner;\n>> @@ -397,6 +399,14 @@ gst_libcamera_src_task_run(gpointer \n>> user_data)\n>>\n>>  \tbool doResume = false;\n>>\n>> +\tg_autoptr(GstEvent) event = \n>> self->pending_eos.exchange(nullptr);\n>> +\tif (event) {\n>> +\t\tfor (GstPad *srcpad : state->srcpads_)\n>> +\t\t\tgst_pad_push_event(srcpad, gst_event_ref(event));\n>> +\n>> +\t\treturn;\n>> +\t}\n>> +\n>>  \t/*\n>>  \t * Create and queue one request. If no buffers are \n>>  available the\n>>  \t * function returns -ENOBUFS, which we ignore here as \n>>  that's not a\n>> @@ -747,6 +757,27 @@ gst_libcamera_src_change_state(GstElement \n>> *element, GstStateChange transition)\n>>  \treturn ret;\n>>  }\n>>\n>> +static gboolean\n>> +gst_libcamera_src_send_event(GstElement *element, GstEvent \n>> *event)\n>> +{\n>> +\tGstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n>> +\tgboolean ret = FALSE;\n>> +\n>> +\tswitch (GST_EVENT_TYPE(event)) {\n>> +\tcase GST_EVENT_EOS: {\n>> +\t\tg_autoptr(GstEvent) oldEvent = \n>> self->pending_eos.exchange(event);\n>\n> I'm afraid this causes a compilation breakage with clang :-(\n>\n> ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused \n> variable 'oldEvent' [-Werror,-Wunused-variable]\n>                 g_autoptr(GstEvent) oldEvent = \n>                 self->pending_eos.exchange(event);\n>                                     ^\n>\n> The patch has been merged, can you propose a fix quickly, or \n> should I\n> revert to give you more time ?\n\nIt's ok, I can do it right now. Should the fix be a new commit or \nalter the old one? Also do you have any preferred way of fixing \nthis?\n\nJaslo\n\n>> +\n>> +\t\tret = TRUE;\n>> +\t\tbreak;\n>> +\t}\n>> +\tdefault:\n>> +\t\tgst_event_unref(event);\n>> +\t\tbreak;\n>> +\t}\n>> +\n>> +\treturn ret;\n>> +}\n>> +\n>>  static void\n>>  gst_libcamera_src_finalize(GObject *object)\n>>  {\n>> @@ -779,6 +810,8 @@ gst_libcamera_src_init(GstLibcameraSrc \n>> *self)\n>>  \tstate->srcpads_.push_back(gst_pad_new_from_template(templ, \n>>  \"src\"));\n>>  \tgst_element_add_pad(GST_ELEMENT(self), \n>>  state->srcpads_.back());\n>>\n>> +\tGST_OBJECT_FLAG_SET(self, GST_ELEMENT_FLAG_SOURCE);\n>> +\n>>  \t/* C-style friend. */\n>>  \tstate->src_ = self;\n>>  \tself->state = state;\n>> @@ -844,6 +877,7 @@ \n>> gst_libcamera_src_class_init(GstLibcameraSrcClass *klass)\n>>  \telement_class->request_new_pad = \n>>  gst_libcamera_src_request_new_pad;\n>>  \telement_class->release_pad = \n>>  gst_libcamera_src_release_pad;\n>>  \telement_class->change_state = \n>>  gst_libcamera_src_change_state;\n>> +\telement_class->send_event = gst_libcamera_src_send_event;\n>>\n>>  \tgst_element_class_set_metadata(element_class,\n>>  \t\t\t\t       \"libcamera Source\", \"Source/Video\",","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 8E6EBC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 17:07:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F2C21629AF;\n\tWed, 22 Nov 2023 18:07:25 +0100 (CET)","from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de\n\t[85.215.255.20])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4C09261DAD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 18:07:24 +0100 (CET)","from archlinux by smtp.strato.de (RZmta 49.9.1 AUTH)\n\twith ESMTPSA id j3f4eezAMH7NodH\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))\n\t(Client did not present a certificate);\n\tWed, 22 Nov 2023 18:07:23 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700672846;\n\tbh=suBtItPRllhOMk8jrN6vf3Id2hnYdVHHoRmI2puTeVk=;\n\th=References:To:Date:In-reply-to:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=synZiMM5uLs/21ujm5uAAcAad7TkvRm8xewSnaB9sx+FiCrPMbz4sDcQuMqlEtoYI\n\tjpCyq3O2p8PeFRc0lsjqEs69KH+RDYyNiF+6RhiOsGFIzDXXHVEk31RbPQUOLn+O5M\n\t9jkJ94Oo/zX+d0McRbmt1Xw7yaDcqXO3yGehFlz9tRA6EXfI2HuAyYXtqLVKJUO109\n\tSaFCXag4QaD9nhmlHVHoOrHLbgUxFcS+o1scWODiYqVpEPefYsu+WnwihbavrPizST\n\tAwRSzwAcnPxbFAmWlOYpMqTDKlUmY7ejUj4BMONVc5V6jTMd2ZI3b1OoBDupLObmKg\n\t+f2ADaRdUhOHw==","v=1; a=rsa-sha256; c=relaxed/relaxed; t=1700672843;\n\ts=strato-dkim-0002; d=ziska.de;\n\th=Message-ID:In-reply-to:Date:Subject:Cc:To:From:References:Cc:Date:\n\tFrom:Subject:Sender;\n\tbh=tB2i8IFmZC3ubT/LVSg+4l1WjFWx/X4Dul8RuXZCBTk=;\n\tb=NZazhu2cioAw0TM7en2Q7y0/hjbwWr2C7OvVQiBOXQ/r8w9OTee+c2Cxt14mveDDqU\n\ty8uMP2USBaGTFo2bzVGqbNZbPAiGrrjn5J4nzuN13YH02v98WQYl9fpAFCuGIz6YuIHS\n\tU8CaM/HIubhi7QgikNEgsTmFcMcXL/G67pX3wv5iU6xpMNPwnP0AXoXIXLxx0Z8AMGBt\n\tMJHI8aiggb6+QZhWl7hJzXaAoFY03k1ahnx5AXL3sMmLoTdW3QcHKnSNGg7YXFuz4I1j\n\tvW8Bdai67eDuEt06PRbpyUecpz3cnXV8oins29q6M5bbseN9P9R1r+z3XAbc1Sg5zPmA\n\tQClQ==","v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1700672843;\n\ts=strato-dkim-0003; d=ziska.de;\n\th=Message-ID:In-reply-to:Date:Subject:Cc:To:From:References:Cc:Date:\n\tFrom:Subject:Sender;\n\tbh=tB2i8IFmZC3ubT/LVSg+4l1WjFWx/X4Dul8RuXZCBTk=;\n\tb=X/i1vWfawnlFX3NO4U9MMkHLCgNaeb9UQHD6XmfkLcXQQ7g2nG0W4j1BkhqhUVtQIs\n\tfQN0yV5qbVD0QqBB+mDQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=ziska.de header.i=@ziska.de\n\theader.b=\"NZazhu2c\"; \n\tdkim=permerror (0-bit key) header.d=ziska.de header.i=@ziska.de\n\theader.b=\"X/i1vWfa\"; dkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1700672843; cv=none;\n\td=strato.com; s=strato-dkim-0002;\n\tb=Mnim5T3dnU8JWOMdN+8PaLuntvSxDY1VzVUT6RJDYG0Y67PW+L2OgO2TcAO0xAUCBc\n\tT08nwhKxBF6AWsUceDI1/RhNB71v2iGZL45tbhMpBvv4ZvOn45TdYygqyaE3IPSkmmip\n\tdwmZMQa1BbJRvGPEgHLCL9RbZRkvOPst6unxmEloKJ/Ht+gun00l3RRCxAqtxue2Kmjx\n\t9KkfmH1zesDDkLja8PVnvKsRcdY9xyQsnvp0YAhHjDogxFulvdJmOcXnudE762s7qBI0\n\tig9cHnQN5YtNszuGnQ5zMAXCI0eFHt+T8ZFmy1E5Mr/nsZZl9w2gu1NYNADY5D5AIrsA\n\tAPSg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; t=1700672843;\n\ts=strato-dkim-0002; d=strato.com;\n\th=Message-ID:In-reply-to:Date:Subject:Cc:To:From:References:Cc:Date:\n\tFrom:Subject:Sender;\n\tbh=tB2i8IFmZC3ubT/LVSg+4l1WjFWx/X4Dul8RuXZCBTk=;\n\tb=UKMkznfegMj/oxWDRgTHnmwSQ0XzRcU4NDy74ZGD2KHlXi2TAItfk5SGTWn7+ka6GN\n\tbRb/rtlYxnIbWUaqZhk03oL0CGNdjrnYDIcuIj2EDw9q7BHpORHSCUK7D7UGt69BfL5T\n\tXe6XGwi+5uBdIsw9lqOSfKibUjCCl4gkHlEVEx3FAdzqfCroMM8FY9eW8r0rj7s5bemZ\n\t2ZdQt7sxTGDxT+l/1TZW1JGGPlw2uBE/FKKCODhmWFzOkpsWwBh7AuoS+BstgAr8UGC1\n\tDVA+gdYLKAfG0NPQkh9m5nlR0ty6P/ABM8v1XD3f0GnlyJyybUPRll9TV9KYh2vTSmFO\n\tw6kQ==","ARC-Authentication-Results":"i=1; strato.com;\n    arc=none;\n    dkim=none","X-RZG-CLASS-ID":"mo00","X-RZG-AUTH":"\":Jm0XeU+IYfb0x77LHmrjN5Wlb7TBwusQvJpnsql/jCNNVfDSgNWRnQi1f6u5kqcKHyab6bA1x2C45q5vVI8ICeF3CGzymFg=\"","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>","User-agent":"mu4e 1.10.8; emacs 29.1","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Wed, 22 Nov 2023 17:59:15 +0100","In-reply-to":"<20231122163849.GA22993@pendragon.ideasonboard.com>","Message-ID":"<87edghemyk.fsf@ziska.de>","MIME-Version":"1.0","Content-Type":"text/plain; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Jaslo Ziska via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jaslo Ziska <jaslo@ziska.de>","Cc":"libcamera-devel@lists.libcamera.org,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28132,"web_url":"https://patchwork.libcamera.org/comment/28132/","msgid":"<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>","date":"2023-11-22T17:08:35","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> Hello,\n> \n> On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > This commit implements EOS handling for events sent to the libcamerasrc\n> > element by the send_event method (which can happen when pressing\n> > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > downstream elements returning GST_FLOW_EOS are not considered here.\n> > \n> > To archive this add a function for the send_event method which handles\n> > the GST_EVENT_EOS event. This function will set an atomic to the\n> > received event and push this EOS event to all source pads in the running\n> > task.\n> > \n> > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > source element which enables it to receive EOS events sent to the\n> > (pipeline) bin containing it.\n> > This in turn enables libcamerasrc to for example receive EOS events from\n> > gst-launch-1.0 when using the -e flag.\n> > \n> > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > Signed-off-by: Jaslo Ziska <jaslo@ziska.de>\n> > Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> > ---\n<snip>\n\n> > +static gboolean\n> > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > +{\n> > +     GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > +     gboolean ret = FALSE;\n> > +\n> > +     switch (GST_EVENT_TYPE(event)) {\n> > +     case GST_EVENT_EOS: {\n> > +             g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> \n> I'm afraid this causes a compilation breakage with clang :-(\n> \n> ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n>                 g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n>                                     ^\n> \n> The patch has been merged, can you propose a fix quickly, or should I\n> revert to give you more time ?\n> \n\nI'm afraid with a broken build we're blocked on merging more patches -\nof which I'm now trying to do - so I'd probably ask if we can revert\nthis until it's fixed please.\n\n--\nKieran","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 DC6EAC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 17:08:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 90BC6629BD;\n\tWed, 22 Nov 2023 18:08:39 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 890F7629AF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 18:08:38 +0100 (CET)","from pendragon.ideasonboard.com\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3326B276;\n\tWed, 22 Nov 2023 18:08:07 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700672919;\n\tbh=xZ7unRF9eZ6g/HqRtNS87XuQNUAUaoHrBNknWr0qQGc=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=afrfzq5+9WqRH7OYLn1xiSaV6CIXjRv/JuE1zSEWPnaFpY33AtPsuXxoEXZADMGvA\n\tqWkfiyCgimr8E7Jb9Wv3m+xOIy+aaa71xqUw/rCak1jgtu9DFb8Ly4qTMrAWlBFsMS\n\tpXk0rjypCoSD/K9NkcKtrpqJoualneFbWkbO6LHX6aBHkHvAbCF0e6/h7j0dnTVcUC\n\tFRMfpkmJPH4wEpjVj2U4Dv9mjoG8FZkqJtaGmD41IlJTedd7O4FgGRRytmF1Nj1Gys\n\tge9yOicH4J6VtG8mdTH/6OBgyfce/dVXqYOZb+ecVv3D8AgM0cO2ryiP5QIIiKSm8Y\n\tdpejM/aD1nwjQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700672887;\n\tbh=xZ7unRF9eZ6g/HqRtNS87XuQNUAUaoHrBNknWr0qQGc=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=bJiFJcsxw9Rb6M1OMkyNA9Udj48k91sLedzejhJjotnhy1qa079ZiTieVLU55/+Jw\n\t2HpKBvUSnzTXQq6NatfBPOKM0hx2JqhcN2oPjltrhghabpDsqdjLIro+fzV7x6TKi/\n\tTciJj0XamFsLa1RETVEPIgew/+BVavOxDLBcsykE="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"bJiFJcsx\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20231122163849.GA22993@pendragon.ideasonboard.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>","To":"Jaslo Ziska <jaslo@ziska.de>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tLaurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Date":"Wed, 22 Nov 2023 17:08:35 +0000","Message-ID":"<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28134,"web_url":"https://patchwork.libcamera.org/comment/28134/","msgid":"<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>","date":"2023-11-22T17:24:09","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":133,"url":"https://patchwork.libcamera.org/api/people/133/","name":"Pőcze Barnabás","email":"pobrn@protonmail.com"},"content":"Hi\n\n\n2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n\n> Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> \n> > Hello,\n> > \n> > On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > \n> > > This commit implements EOS handling for events sent to the libcamerasrc\n> > > element by the send_event method (which can happen when pressing\n> > > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > > downstream elements returning GST_FLOW_EOS are not considered here.\n> > > \n> > > To archive this add a function for the send_event method which handles\n> > > the GST_EVENT_EOS event. This function will set an atomic to the\n> > > received event and push this EOS event to all source pads in the running\n> > > task.\n> > > \n> > > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > > source element which enables it to receive EOS events sent to the\n> > > (pipeline) bin containing it.\n> > > This in turn enables libcamerasrc to for example receive EOS events from\n> > > gst-launch-1.0 when using the -e flag.\n> > > \n> > > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > > Signed-off-by: Jaslo Ziska jaslo@ziska.de\n> > > Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n> > > ---\n> \n> <snip>\n> \n> > > +static gboolean\n> > > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > > +{\n> > > + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > > + gboolean ret = FALSE;\n> > > +\n> > > + switch (GST_EVENT_TYPE(event)) {\n> > > + case GST_EVENT_EOS: {\n> > > + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > \n> > I'm afraid this causes a compilation breakage with clang :-(\n> > \n> > ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n> > g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > ^\n> > \n> > The patch has been merged, can you propose a fix quickly, or should I\n> > revert to give you more time ?\n> \n> \n> I'm afraid with a broken build we're blocked on merging more patches -\n> of which I'm now trying to do - so I'd probably ask if we can revert\n> this until it's fixed please.\n> [...]\n\n[[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n\n?\n\n> [...]\n\nRegards,\nBarnabás Pőcze","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 1C3F5BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 17:24:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 163AB629BD;\n\tWed, 22 Nov 2023 18:24:32 +0100 (CET)","from mail-4316.protonmail.ch (mail-4316.protonmail.ch\n\t[185.70.43.16])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F2C12629AF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 18:24:30 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700673872;\n\tbh=LOiM6/XLh64L9+jUqzp8PjlbMh18IsATJp0oKvwUq+8=;\n\th=Date:To:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=xzaUM13nrx8OCuRLecI0w9vtULSZ5Fg2MT57P//VzL9oexh22QuaTY9Q2fOYL8a8S\n\tfANBFoeOwGPPRHChnG7Lt1bvKBKQdlIJ6Dfi1y8EIsnLF2sqUu2bnnzhwyKo8c63gz\n\tL0ppcBM7fXcbgtnipDR6agkJfW5xwC5ry2WerGezNFBbgLMKPF6oxYP2IP3xqw0pUh\n\tt6kS1hlZHcdSlg3OGv5F4et3jpmAmtrwInGkre/E4VrKtt1McqRqbEHWInlulZTyA5\n\tsBxl/fOrjEAtEn2micAWpp4jsNZXJ+eTUJ+ILDKeUKY9z5W8u+8ijD0ldYWwIxW5ut\n\t2HpbMm1aFw5zQ==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;\n\ts=protonmail3; t=1700673868; x=1700933068;\n\tbh=LOiM6/XLh64L9+jUqzp8PjlbMh18IsATJp0oKvwUq+8=;\n\th=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:\n\tFeedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:\n\tMessage-ID:BIMI-Selector;\n\tb=Mx+q+UWPl3YJxppmpuWEhtHvSS/oz78a2olJMHMd+b/iq3sM2fJeJr59EHUwS9yQT\n\tyvhhEiGqLixqvOfV3/UBreCd5prBzusjfgLPLNTR8TSjDFicDcUWX6JSNDvUwdN3TS\n\twihzC8rZQPHC2nYVastILtm+2NOBS7AtScqgpk+OIe8Uce//6hfVhW95s6khZ6rzI9\n\tFmv0hTA+i9i84JzgnM9+F0PKDM+6Z35jCfzZO13jBXWw5veOxj5kQmdcKt3GfzdXgq\n\tk702qrWEKw0kzt+dQTLcwRd3rr2YQ/0KckWP8QXxuylV0IxB2SEWkuvL78n711hsNX\n\tOF3kxLZiV8d4Q=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=protonmail.com\n\theader.i=@protonmail.com\n\theader.b=\"Mx+q+UWP\"; dkim-atps=neutral","Date":"Wed, 22 Nov 2023 17:24:09 +0000","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>","In-Reply-To":"<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>","Feedback-ID":"20568564:user:proton","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze_via_libcamera-devel?=\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28136,"web_url":"https://patchwork.libcamera.org/comment/28136/","msgid":"<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>","date":"2023-11-22T19:21:50","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":31,"url":"https://patchwork.libcamera.org/api/people/31/","name":"Nicolas Dufresne","email":"nicolas.dufresne@collabora.com"},"content":"Le mercredi 22 novembre 2023 à 17:24 +0000, Barnabás Pőcze a écrit :\n> Hi\n> \n> \n> 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n> \n> > Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> > \n> > > Hello,\n> > > \n> > > On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > > \n> > > > This commit implements EOS handling for events sent to the libcamerasrc\n> > > > element by the send_event method (which can happen when pressing\n> > > > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > > > downstream elements returning GST_FLOW_EOS are not considered here.\n> > > > \n> > > > To archive this add a function for the send_event method which handles\n> > > > the GST_EVENT_EOS event. This function will set an atomic to the\n> > > > received event and push this EOS event to all source pads in the running\n> > > > task.\n> > > > \n> > > > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > > > source element which enables it to receive EOS events sent to the\n> > > > (pipeline) bin containing it.\n> > > > This in turn enables libcamerasrc to for example receive EOS events from\n> > > > gst-launch-1.0 when using the -e flag.\n> > > > \n> > > > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > > > Signed-off-by: Jaslo Ziska jaslo@ziska.de\n> > > > Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n> > > > ---\n> > \n> > <snip>\n> > \n> > > > +static gboolean\n> > > > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > > > +{\n> > > > + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > > > + gboolean ret = FALSE;\n> > > > +\n> > > > + switch (GST_EVENT_TYPE(event)) {\n> > > > + case GST_EVENT_EOS: {\n> > > > + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > \n> > > I'm afraid this causes a compilation breakage with clang :-(\n> > > \n> > > ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n> > > g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > ^\n> > > \n> > > The patch has been merged, can you propose a fix quickly, or should I\n> > > revert to give you more time ?\n> > \n> > \n> > I'm afraid with a broken build we're blocked on merging more patches -\n> > of which I'm now trying to do - so I'd probably ask if we can revert\n> > this until it's fixed please.\n> > [...]\n> \n> [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n\nOr just, like the original patch did.\n\n   GstEvent *oldEvent = self->pending_eos.exchange(event);\n   gst_clear_event(&oldEvent);\n\nNot sure why this blocks anything, sounds a bit dramatic handling of a build\nwarning. In this case, its quite obvious that this is a false positive in clang\nwarning machinery, you will hit more of these with clang in my experience.\n\nNicolas\n\n> \n> ?\n> \n> > [...]\n> \n> Regards,\n> Barnabás Pőcze","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 39D3CBDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 19:22:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4BA58629BC;\n\tWed, 22 Nov 2023 20:22:02 +0100 (CET)","from madras.collabora.co.uk (madras.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4865861DAD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 20:22:01 +0100 (CET)","from nicolas-tpx395.localdomain (cola.collaboradmins.com\n\t[195.201.22.229])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: nicolas)\n\tby madras.collabora.co.uk (Postfix) with ESMTPSA id 2A9CC6607389;\n\tWed, 22 Nov 2023 19:22:00 +0000 (GMT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700680922;\n\tbh=jcuH39H66MbDNKKk99DAjeVi5QFh9jvxON4kL3KQzeQ=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=hLBFvSV3IHuOk9H82PJ4AZa3jmnLCx8Tr4UL+mdjY+nAaT09iEwZiXYkcdKChhcoG\n\tBFaoyzZAQ2/0cOQUGSIEiB/778E1OV4sl/XKe3yn1Eq0OV8mO6lTWg/o2HKgrjr+0z\n\tmXjyHNbD+j/AcWJhOsPi0e4/870PmMhnr9HdeT9TFFYBxfmPZ4cxBUJrbVgU3ZJgUS\n\tXEG+BGmd459CyyRMg4XfCQsM4YHINa7Xny+iZFhyAfLPOavxDbgpakg2kYQpn56a6l\n\tQU+cQNeFB82UiNM+0qmtqN7lGiqDRG7yTtlI7UGucw98RLbum3t2TynFVq7fALHXHF\n\t2C4TAh9xCVHzg==","v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1700680921;\n\tbh=jcuH39H66MbDNKKk99DAjeVi5QFh9jvxON4kL3KQzeQ=;\n\th=Subject:From:To:Cc:Date:In-Reply-To:References:From;\n\tb=hNn5GTZa9ksun1qgHb3oxltGfWTetvuR6LLIOZPPvVaNhr5dMRZgqXFOVgcVPB/QH\n\tIdYV3KYYBqlkGYMmOAwg3+1MXw9diSQfOc7e7jCdNTE8671zsTN13gH7wNbpI9VTcJ\n\ttVtDcUHkMDF9uBMo52ZtWdsGJVXD3FQkN2n7VSe/+DO/09DBdXVQClPtRAWsh47WL0\n\tYqwnTr41PAUw9wwkLkYOPOnTHRu1BoApCmPs+SKnB3tAkYoLEMzYzMjVweg8lvkVDc\n\tpAaKi5oGzg8OGBbeml0rH1m1UsZzXSFnRW1+Noj5KOtdeCm84OE3dk2r/89mPqWLn8\n\t73hr8yZA0jyjg=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=collabora.com\n\theader.i=@collabora.com\n\theader.b=\"hNn5GTZa\"; dkim-atps=neutral","Message-ID":"<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>, Kieran\n\tBingham <kieran.bingham@ideasonboard.com>","Date":"Wed, 22 Nov 2023 14:21:50 -0500","In-Reply-To":"<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.48.4 (3.48.4-1.fc38) ","MIME-Version":"1.0","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Nicolas Dufresne via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28137,"web_url":"https://patchwork.libcamera.org/comment/28137/","msgid":"<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>","date":"2023-11-22T20:58:07","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Nicolas Dufresne (2023-11-22 19:21:50)\n> Le mercredi 22 novembre 2023 à 17:24 +0000, Barnabás Pőcze a écrit :\n> > Hi\n> > \n> > \n> > 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n> > \n> > > Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> > > \n> > > > Hello,\n> > > > \n> > > > On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > > > \n> > > > > This commit implements EOS handling for events sent to the libcamerasrc\n> > > > > element by the send_event method (which can happen when pressing\n> > > > > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > > > > downstream elements returning GST_FLOW_EOS are not considered here.\n> > > > > \n> > > > > To archive this add a function for the send_event method which handles\n> > > > > the GST_EVENT_EOS event. This function will set an atomic to the\n> > > > > received event and push this EOS event to all source pads in the running\n> > > > > task.\n> > > > > \n> > > > > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > > > > source element which enables it to receive EOS events sent to the\n> > > > > (pipeline) bin containing it.\n> > > > > This in turn enables libcamerasrc to for example receive EOS events from\n> > > > > gst-launch-1.0 when using the -e flag.\n> > > > > \n> > > > > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > > > > Signed-off-by: Jaslo Ziska jaslo@ziska.de\n> > > > > Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n> > > > > ---\n> > > \n> > > <snip>\n> > > \n> > > > > +static gboolean\n> > > > > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > > > > +{\n> > > > > + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > > > > + gboolean ret = FALSE;\n> > > > > +\n> > > > > + switch (GST_EVENT_TYPE(event)) {\n> > > > > + case GST_EVENT_EOS: {\n> > > > > + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > \n> > > > I'm afraid this causes a compilation breakage with clang :-(\n> > > > \n> > > > ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n> > > > g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > ^\n> > > > \n> > > > The patch has been merged, can you propose a fix quickly, or should I\n> > > > revert to give you more time ?\n> > > \n> > > \n> > > I'm afraid with a broken build we're blocked on merging more patches -\n> > > of which I'm now trying to do - so I'd probably ask if we can revert\n> > > this until it's fixed please.\n> > > [...]\n> > \n> > [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> \n> Or just, like the original patch did.\n> \n>    GstEvent *oldEvent = self->pending_eos.exchange(event);\n>    gst_clear_event(&oldEvent);\n> \n> Not sure why this blocks anything, sounds a bit dramatic handling of a build\n> warning. In this case, its quite obvious that this is a false positive in clang\n> warning machinery, you will hit more of these with clang in my experience.\n\nSorry, it wasn't supposed to be dramatic. A real fix is fine too, but a\nrevert and re-apply fixed isnt hard either.\n\nThis patch was merged without going through our compliler matrix.\nOn my pc, I can't merge if the compiler matrix fails, but thats not set\nup for everyone. I've got four patches now lined up to merge for\nRaspberry Pi and blocked. I can wait ... if we have a fix\n\n--\nKieran\n\n\n> \n> Nicolas\n> \n> > \n> > ?\n> > \n> > > [...]\n> > \n> > Regards,\n> > Barnabás Pőcze\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 87309C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 20:58:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CF8F9629AF;\n\tWed, 22 Nov 2023 21:58:11 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 933E661DAD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 21:58:09 +0100 (CET)","from pendragon.ideasonboard.com\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E81AD29A;\n\tWed, 22 Nov 2023 21:57:37 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700686691;\n\tbh=a2U9PZqvlqMeBZFrIn/DCCH0r1bkVtMugS7eRV+FyH0=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=JVs+Ntv7tlsZF3U5Jt3ibo30zashXYGPEqo021sbAZKmGBVxkSICQFL+Q41sX3keG\n\t1IL6GWuarVSw4b/5FxF4Snm1kJQ92hu4AjtLoPR0UrabrgJyMGp0p77jee2byR3YRh\n\t4ZDdsNd6vV/veSIUm1OjDFZX/2KhmEGm8CQW7KyJ8ixSHaVD30DSZSHNa97JAeh8kb\n\tS230bbTlaP8dlGXx38+5kRXmm8ZIt+Kdb8WyDNTMjeN65d4fuiHd+LsuMDtmeflpHO\n\t0hRVkxkdYCzCM7/jwHanlEHsLcrhGETvuSkOFzKb9BUXjvKYsuLjjWJnSZbxCLBTep\n\tbtyfhQNzZ9nAg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700686658;\n\tbh=a2U9PZqvlqMeBZFrIn/DCCH0r1bkVtMugS7eRV+FyH0=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=Rfs8zLYhITpDNmdU1x67uVZIj20dybrA1Mot7go/yXmlTT7lSYvJeGgXq4mkJYOlK\n\tgENf+QjPc4ElRfJE2yqq9TEwwK3hFrqTHH4OXIcRyZSCWgWhl8ADz8NMzfaXKNBYw/\n\t18kHS2UgOsjQSebsrte8pJQznaYGVw6rZ+DJY538="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"Rfs8zLYh\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>\n\t<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Date":"Wed, 22 Nov 2023 20:58:07 +0000","Message-ID":"<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28138,"web_url":"https://patchwork.libcamera.org/comment/28138/","msgid":"<f422b3b7d2fade1ba278821343428f64e557f317.camel@collabora.com>","date":"2023-11-22T20:59:45","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":31,"url":"https://patchwork.libcamera.org/api/people/31/","name":"Nicolas Dufresne","email":"nicolas.dufresne@collabora.com"},"content":"Le mercredi 22 novembre 2023 à 20:58 +0000, Kieran Bingham a écrit :\n> Quoting Nicolas Dufresne (2023-11-22 19:21:50)\n> > Le mercredi 22 novembre 2023 à 17:24 +0000, Barnabás Pőcze a écrit :\n> > > Hi\n> > > \n> > > \n> > > 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n> > > \n> > > > Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> > > > \n> > > > > Hello,\n> > > > > \n> > > > > On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > > > > \n> > > > > > This commit implements EOS handling for events sent to the libcamerasrc\n> > > > > > element by the send_event method (which can happen when pressing\n> > > > > > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > > > > > downstream elements returning GST_FLOW_EOS are not considered here.\n> > > > > > \n> > > > > > To archive this add a function for the send_event method which handles\n> > > > > > the GST_EVENT_EOS event. This function will set an atomic to the\n> > > > > > received event and push this EOS event to all source pads in the running\n> > > > > > task.\n> > > > > > \n> > > > > > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > > > > > source element which enables it to receive EOS events sent to the\n> > > > > > (pipeline) bin containing it.\n> > > > > > This in turn enables libcamerasrc to for example receive EOS events from\n> > > > > > gst-launch-1.0 when using the -e flag.\n> > > > > > \n> > > > > > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > > > > > Signed-off-by: Jaslo Ziska jaslo@ziska.de\n> > > > > > Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n> > > > > > ---\n> > > > \n> > > > <snip>\n> > > > \n> > > > > > +static gboolean\n> > > > > > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > > > > > +{\n> > > > > > + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > > > > > + gboolean ret = FALSE;\n> > > > > > +\n> > > > > > + switch (GST_EVENT_TYPE(event)) {\n> > > > > > + case GST_EVENT_EOS: {\n> > > > > > + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > > \n> > > > > I'm afraid this causes a compilation breakage with clang :-(\n> > > > > \n> > > > > ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n> > > > > g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > > ^\n> > > > > \n> > > > > The patch has been merged, can you propose a fix quickly, or should I\n> > > > > revert to give you more time ?\n> > > > \n> > > > \n> > > > I'm afraid with a broken build we're blocked on merging more patches -\n> > > > of which I'm now trying to do - so I'd probably ask if we can revert\n> > > > this until it's fixed please.\n> > > > [...]\n> > > \n> > > [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > \n> > Or just, like the original patch did.\n> > \n> >    GstEvent *oldEvent = self->pending_eos.exchange(event);\n> >    gst_clear_event(&oldEvent);\n> > \n> > Not sure why this blocks anything, sounds a bit dramatic handling of a build\n> > warning. In this case, its quite obvious that this is a false positive in clang\n> > warning machinery, you will hit more of these with clang in my experience.\n> \n> Sorry, it wasn't supposed to be dramatic. A real fix is fine too, but a\n> revert and re-apply fixed isnt hard either.\n> \n> This patch was merged without going through our compliler matrix.\n> On my pc, I can't merge if the compiler matrix fails, but thats not set\n> up for everyone. I've got four patches now lined up to merge for\n> Raspberry Pi and blocked. I can wait ... if we have a fix\n\nAs a maintainer, it feels like if would have been simpler to just apply one of\nthe two suggestions we made.\n\nNicolas\n\n> \n> --\n> Kieran\n> \n> \n> > \n> > Nicolas\n> > \n> > > \n> > > ?\n> > > \n> > > > [...]\n> > > \n> > > Regards,\n> > > Barnabás Pőcze\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 F007CC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 22 Nov 2023 20:59:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7458C629BC;\n\tWed, 22 Nov 2023 21:59:58 +0100 (CET)","from madras.collabora.co.uk (madras.collabora.co.uk\n\t[46.235.227.172])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 46EA761DAD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 22 Nov 2023 21:59:57 +0100 (CET)","from nicolas-tpx395.localdomain (cola.collaboradmins.com\n\t[195.201.22.229])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: nicolas)\n\tby madras.collabora.co.uk (Postfix) with ESMTPSA id 26FCC6607319;\n\tWed, 22 Nov 2023 20:59:56 +0000 (GMT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700686798;\n\tbh=0iJzXF/Xk8oMzlyvhb8ViHlwI61Z0OpxjA79kG5HBOs=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=JtxYxestUyc7FjzgeMUvBYu3HCgysTJAXDsf0PqjamtikSmse8BFhNooXXf42yjWs\n\tyQRuFmY00uY8T9Kfuw3hB0Jf2w94pr7+8yKYK0Y+ivIVx0UCxCEy9XjHcTmGNFq5EG\n\to9onNdDFPlvEC0fNT5qwnQFZTbb4uiMcq+AdwRI4/weBDcGu7LGM03g1S4aBiujKXS\n\toqWc6i2GVNt9rqnNmVVcwiSBqUyK/0zyiCpjRd7ifRcrMCR9dRgWzfvxZ20dVrSAU9\n\tg2kFnHxZ+vqOELnfNXVJk892mm8xVDPdLWMlja/4cblwKtYbT4JTIrhtSQJ84ATdoD\n\tGLeUfdNQajrfg==","v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1700686797;\n\tbh=0iJzXF/Xk8oMzlyvhb8ViHlwI61Z0OpxjA79kG5HBOs=;\n\th=Subject:From:To:Cc:Date:In-Reply-To:References:From;\n\tb=oJ6XExhgxPpKbLwmOanAN/jz5R5myjVV2IJkkS4Y0k9zFkOpG6H9/ebdZpE9/SDRi\n\tSevtiiRNgJpAiUHkU5/jAjFX22up9FAJKTP1rMAo193LjeDc7wLg1jJ41pVlK9RAtJ\n\tqBh2KV8EwVPAs+4w2x49wa1am8l27NGrdxDFUuShobE5V4lQp4TPVgNWpQeutNkR8d\n\tFZSSzCKyvihjSfgvU0U+WV/m8IshwLph3o6ewf5+nOjhIP75BFZNfvmV7JjQ/qVV6H\n\t86ha5beVg3dPObsLvY9kb9dWWSZKwpso+zhiqBuOSLGPj9G/nBgvPGU3w/mgCYkVUC\n\tUCwPL16ROF9Mw=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=collabora.com\n\theader.i=@collabora.com\n\theader.b=\"oJ6XExhg\"; dkim-atps=neutral","Message-ID":"<f422b3b7d2fade1ba278821343428f64e557f317.camel@collabora.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab?=\n\t=?utf-8?b?w6FzIFDFkWN6ZQ==?= <pobrn@protonmail.com>","Date":"Wed, 22 Nov 2023 15:59:45 -0500","In-Reply-To":"<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>\n\t<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>\n\t<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.48.4 (3.48.4-1.fc38) ","MIME-Version":"1.0","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Nicolas Dufresne via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28139,"web_url":"https://patchwork.libcamera.org/comment/28139/","msgid":"<be5cf371-dd93-800c-7a24-6385a950bb4a@ideasonboard.com>","date":"2023-11-23T04:44:52","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi,\n\nOn 11/23/23 2:28 AM, Kieran Bingham via libcamera-devel wrote:\n> Quoting Nicolas Dufresne (2023-11-22 19:21:50)\n>> Le mercredi 22 novembre 2023 à 17:24 +0000, Barnabás Pőcze a écrit :\n>>> Hi\n>>>\n>>>\n>>> 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n>>>\n>>>> Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n>>>>\n>>>>> Hello,\n>>>>>\n>>>>> On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n>>>>>\n>>>>>> This commit implements EOS handling for events sent to the libcamerasrc\n>>>>>> element by the send_event method (which can happen when pressing\n>>>>>> Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n>>>>>> downstream elements returning GST_FLOW_EOS are not considered here.\n>>>>>>\n>>>>>> To archive this add a function for the send_event method which handles\n>>>>>> the GST_EVENT_EOS event. This function will set an atomic to the\n>>>>>> received event and push this EOS event to all source pads in the running\n>>>>>> task.\n>>>>>>\n>>>>>> Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n>>>>>> source element which enables it to receive EOS events sent to the\n>>>>>> (pipeline) bin containing it.\n>>>>>> This in turn enables libcamerasrc to for example receive EOS events from\n>>>>>> gst-launch-1.0 when using the -e flag.\n>>>>>>\n>>>>>> Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n>>>>>> Signed-off-by: Jaslo Ziska jaslo@ziska.de\n>>>>>> Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n>>>>>> ---\n>>>> <snip>\n>>>>\n>>>>>> +static gboolean\n>>>>>> +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n>>>>>> +{\n>>>>>> + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n>>>>>> + gboolean ret = FALSE;\n>>>>>> +\n>>>>>> + switch (GST_EVENT_TYPE(event)) {\n>>>>>> + case GST_EVENT_EOS: {\n>>>>>> + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n>>>>> I'm afraid this causes a compilation breakage with clang :-(\n>>>>>\n>>>>> ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n>>>>> g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n>>>>> ^\n>>>>>\n>>>>> The patch has been merged, can you propose a fix quickly, or should I\n>>>>> revert to give you more time ?\n>>>>\n>>>> I'm afraid with a broken build we're blocked on merging more patches -\n>>>> of which I'm now trying to do - so I'd probably ask if we can revert\n>>>> this until it's fixed please.\n>>>> [...]\n>>> [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n>> Or just, like the original patch did.\n>>\n>>     GstEvent *oldEvent = self->pending_eos.exchange(event);\n>>     gst_clear_event(&oldEvent);\n>>\n>> Not sure why this blocks anything, sounds a bit dramatic handling of a build\n>> warning. In this case, its quite obvious that this is a false positive in clang\n>> warning machinery, you will hit more of these with clang in my experience.\n> Sorry, it wasn't supposed to be dramatic. A real fix is fine too, but a\n> revert and re-apply fixed isnt hard either.\n\nI will post a revert and a re-appllied patch for review.\n>\n> This patch was merged without going through our compliler matrix.\n\nThis was my mistake. Apologies.\n\nCan you please collect and run through the compiler matrix please and \nhandle the merge along with other patches?\n\n> On my pc, I can't merge if the compiler matrix fails, but thats not set\n> up for everyone. I've got four patches now lined up to merge for\n> Raspberry Pi and blocked. I can wait ... if we have a fix\n\nYes, sorry :-/\n> --\n> Kieran\n>\n>\n>> Nicolas\n>>\n>>> ?\n>>>\n>>>> [...]\n>>> Regards,\n>>> Barnabás Pőcze","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 1871ABDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 23 Nov 2023 04:44:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7790C629BC;\n\tThu, 23 Nov 2023 05:44:58 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D304061DA6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 Nov 2023 05:44:56 +0100 (CET)","from [192.168.1.107] (unknown [103.251.226.72])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6CD8C749;\n\tThu, 23 Nov 2023 05:44:24 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700714698;\n\tbh=85gKQhiIDUXKVNGleIo39JnXeHhkEoYiuKXkG37LSVE=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=bVw8+d9ZdhVs1fYBd8a9CgWilAz5uDHQ79BD9lNB1TBU9ETSmp6miw0sf/PmPBo/v\n\tMYX3rzwW7K1GgBfrIol9BaHRkByd68LxG/egavc+qiZrg6HuGaQG+x8/GjrxqY84e5\n\t8Adi4RYmWmXyUNxH2C46mts6AXcqKP7dl0IxCFfcdCvGXM22YHmXGJtkZbiHEkTHsO\n\tJbeod1lz5+C5nm/uVk4EJdNR3oX5B7ogK+WlatiU03jyyAHaHyAzs4P6auHWIe37Vk\n\tVSlzC+TPxvE+QmMo5tMbPmUzmocXAN3Rv7A8jw2h2r6Nb7EL6j2UZ9mAdjN1mXbnBH\n\tOsQRoMC5zdU5w==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700714665;\n\tbh=85gKQhiIDUXKVNGleIo39JnXeHhkEoYiuKXkG37LSVE=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=m9LokcM7W2OQUZiDj1tTJZRNN25n1eMRlGUzKdpHPYoiuksjjktqsVClHKEMN16I4\n\t1JMY0Bpbztjd1ymqpJ3agHKY5reAYmnkxJxeZSpVtzgHQzE1SI13zc1ZqJiC5xD5rK\n\tAIKkt8SZiMZTmkxrrV6AOlHGeR/fw3vmq7WEd/fs="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"m9LokcM7\"; dkim-atps=neutral","Message-ID":"<be5cf371-dd93-800c-7a24-6385a950bb4a@ideasonboard.com>","Date":"Thu, 23 Nov 2023 10:14:52 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n\tThunderbird/102.10.0","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab?=\n\t=?utf-8?b?w6FzIFDFkWN6ZQ==?= <pobrn@protonmail.com>,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>\n\t<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>\n\t<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>","Content-Language":"en-US","In-Reply-To":"<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28141,"web_url":"https://patchwork.libcamera.org/comment/28141/","msgid":"<20231123074050.GB15697@pendragon.ideasonboard.com>","date":"2023-11-23T07:40:50","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Nicolas,\n\nOn Wed, Nov 22, 2023 at 03:59:45PM -0500, Nicolas Dufresne wrote:\n> Le mercredi 22 novembre 2023 à 20:58 +0000, Kieran Bingham a écrit :\n> > Quoting Nicolas Dufresne (2023-11-22 19:21:50)\n> > > Le mercredi 22 novembre 2023 à 17:24 +0000, Barnabás Pőcze a écrit :\n> > > > 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel írta:\n> > > > > Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> > > > > > On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > > > > > > This commit implements EOS handling for events sent to the libcamerasrc\n> > > > > > > element by the send_event method (which can happen when pressing\n> > > > > > > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > > > > > > downstream elements returning GST_FLOW_EOS are not considered here.\n> > > > > > > \n> > > > > > > To archive this add a function for the send_event method which handles\n> > > > > > > the GST_EVENT_EOS event. This function will set an atomic to the\n> > > > > > > received event and push this EOS event to all source pads in the running\n> > > > > > > task.\n> > > > > > > \n> > > > > > > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > > > > > > source element which enables it to receive EOS events sent to the\n> > > > > > > (pipeline) bin containing it.\n> > > > > > > This in turn enables libcamerasrc to for example receive EOS events from\n> > > > > > > gst-launch-1.0 when using the -e flag.\n> > > > > > > \n> > > > > > > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > > > > > > Signed-off-by: Jaslo Ziska jaslo@ziska.de\n> > > > > > > Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n> > > > > > > ---\n> > > > > \n> > > > > <snip>\n> > > > > \n> > > > > > > +static gboolean\n> > > > > > > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > > > > > > +{\n> > > > > > > + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > > > > > > + gboolean ret = FALSE;\n> > > > > > > +\n> > > > > > > + switch (GST_EVENT_TYPE(event)) {\n> > > > > > > + case GST_EVENT_EOS: {\n> > > > > > > + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > > > \n> > > > > > I'm afraid this causes a compilation breakage with clang :-(\n> > > > > > \n> > > > > > ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n> > > > > > g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > > > ^\n> > > > > > \n> > > > > > The patch has been merged, can you propose a fix quickly, or should I\n> > > > > > revert to give you more time ?\n> > > > > \n> > > > > I'm afraid with a broken build we're blocked on merging more patches -\n> > > > > of which I'm now trying to do - so I'd probably ask if we can revert\n> > > > > this until it's fixed please.\n> > > > > [...]\n> > > > \n> > > > [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > \n> > > Or just, like the original patch did.\n> > > \n> > >    GstEvent *oldEvent = self->pending_eos.exchange(event);\n> > >    gst_clear_event(&oldEvent);\n> > > \n> > > Not sure why this blocks anything, sounds a bit dramatic handling of a build\n> > > warning.\n\nNo drama here :-) This broke the build as libcamera is compiled with\n-Werror, thus breaking any script that checks further commits before\npushing them.\n\n> > > In this case, its quite obvious that this is a false positive in clang\n> > > warning machinery, you will hit more of these with clang in my experience.\n\nPossibly, yes. I've reported issues to gcc in the past to fix false\npositives, I'll let someone else handle clang :-)\n\n> > Sorry, it wasn't supposed to be dramatic. A real fix is fine too, but a\n> > revert and re-apply fixed isnt hard either.\n> > \n> > This patch was merged without going through our compliler matrix.\n> > On my pc, I can't merge if the compiler matrix fails, but thats not set\n> > up for everyone. I've got four patches now lined up to merge for\n> > Raspberry Pi and blocked. I can wait ... if we have a fix\n\nOn a side note, we should have automated compilation testing on the\nserver side before the end of the year, likely based on the fd.o gitlab\ninstance.\n\n> As a maintainer, it feels like if would have been simpler to just apply one of\n> the two suggestions we made.\n\nAs I just replied to Umang's series with a proposed fix, I don't see a\nneed to revert the commit here. I proposed reverting as an option to not\nput any pressure on anyone for submitting an urgent fix. Given that the\nfix is here, and nothing has been reverted so far, fixing on top is\nbest.\n\nI like your suggestion best, it's more explicit. The [[maybe_unused]]\nmay work, but I don't know what optimization the compiler may try to\nmake that would have side effects there.\n\n> > > > ?\n> > > > \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 925A0C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 23 Nov 2023 07:40:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EBD33629AF;\n\tThu, 23 Nov 2023 08:40:45 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DBE2A61DA6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 Nov 2023 08:40:43 +0100 (CET)","from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi\n\t[213.243.189.158])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2462C25A;\n\tThu, 23 Nov 2023 08:40:12 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700725245;\n\tbh=qDUphCH3sD1xj/MoR7+dlJhGyQF33tISsjjybwb+XRo=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=Yn5Fiv4wwBy051noy4UnDoVBI3hEZOXh+nJok0OIM78USuQH67EBhm2Efs7wa03PL\n\tOxqMkTWg3KK5+j9EaRi3EN75ya3YpfOyIBBcOtlPvpqrhdb9xHlb12AkKmZHfYcrQk\n\tnaxvKc6q2zH193FQjbvAA+GgrVR0Dn9DF5fqjQAiPUZaoX9sd+IJe2gyBEXo3EqVrH\n\tWRWUubvoTJT00Dd09lgWmfYOJ8q30V+xIkokPAmR08OwMgNIJKleYQ5ZsLvsjCV7jZ\n\tOz4t4lahk4RxYh3AxsGmejbfr/1SAThCrmjeh/QU/IXkC+urE3vBJXIHcD6SLA+eM8\n\tcQtLSkPo1bhtg==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700725212;\n\tbh=qDUphCH3sD1xj/MoR7+dlJhGyQF33tISsjjybwb+XRo=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=uOz0giOojaxjYSbr2Fn1XNQQtxKTHHDBbCqsKaRA0LomLU6Vhwn3H9n6Pmbwj/Krs\n\tfkzjZYku+HEW/augFAQgYMoOUuoG7VE2DmMga/xwMDPHwYRkP4XG/ITcjtD2XH0N/z\n\tGmoAOyc0RtsCuq5jKUp43bNRVPpUdDNiYm+I0/q0="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"uOz0giOo\"; dkim-atps=neutral","Date":"Thu, 23 Nov 2023 09:40:50 +0200","To":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Message-ID":"<20231123074050.GB15697@pendragon.ideasonboard.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>\n\t<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>\n\t<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>\n\t<f422b3b7d2fade1ba278821343428f64e557f317.camel@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<f422b3b7d2fade1ba278821343428f64e557f317.camel@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28166,"web_url":"https://patchwork.libcamera.org/comment/28166/","msgid":"<f6b810d343e5e330739d0353c85b54e0d04addc2.camel@collabora.com>","date":"2023-11-23T15:49:29","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":31,"url":"https://patchwork.libcamera.org/api/people/31/","name":"Nicolas Dufresne","email":"nicolas.dufresne@collabora.com"},"content":"Le jeudi 23 novembre 2023 à 10:14 +0530, Umang Jain a écrit :\n> Hi,\n> \n> On 11/23/23 2:28 AM, Kieran Bingham via libcamera-devel wrote:\n> > Quoting Nicolas Dufresne (2023-11-22 19:21:50)\n> > > Le mercredi 22 novembre 2023 à 17:24 +0000, Barnabás Pőcze a écrit :\n> > > > Hi\n> > > > \n> > > > \n> > > > 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n> > > > \n> > > > > Quoting Laurent Pinchart via libcamera-devel (2023-11-22 16:38:49)\n> > > > > \n> > > > > > Hello,\n> > > > > > \n> > > > > > On Tue, Nov 14, 2023 at 01:18:57PM +0100, Jaslo Ziska via libcamera-devel wrote:\n> > > > > > \n> > > > > > > This commit implements EOS handling for events sent to the libcamerasrc\n> > > > > > > element by the send_event method (which can happen when pressing\n> > > > > > > Ctrl-C while running gst-launch-1.0 -e, see below). EOS events from\n> > > > > > > downstream elements returning GST_FLOW_EOS are not considered here.\n> > > > > > > \n> > > > > > > To archive this add a function for the send_event method which handles\n> > > > > > > the GST_EVENT_EOS event. This function will set an atomic to the\n> > > > > > > received event and push this EOS event to all source pads in the running\n> > > > > > > task.\n> > > > > > > \n> > > > > > > Also set the GST_ELEMENT_FLAG_SOURCE flag to identify libcamerasrc as a\n> > > > > > > source element which enables it to receive EOS events sent to the\n> > > > > > > (pipeline) bin containing it.\n> > > > > > > This in turn enables libcamerasrc to for example receive EOS events from\n> > > > > > > gst-launch-1.0 when using the -e flag.\n> > > > > > > \n> > > > > > > Bug: https://bugs.libcamera.org/show_bug.cgi?id=91\n> > > > > > > Signed-off-by: Jaslo Ziska jaslo@ziska.de\n> > > > > > > Acked-by: Nicolas Dufresne nicolas.dufresne@collabora.com\n> > > > > > > ---\n> > > > > <snip>\n> > > > > \n> > > > > > > +static gboolean\n> > > > > > > +gst_libcamera_src_send_event(GstElement *element, GstEvent *event)\n> > > > > > > +{\n> > > > > > > + GstLibcameraSrc *self = GST_LIBCAMERA_SRC(element);\n> > > > > > > + gboolean ret = FALSE;\n> > > > > > > +\n> > > > > > > + switch (GST_EVENT_TYPE(event)) {\n> > > > > > > + case GST_EVENT_EOS: {\n> > > > > > > + g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > > > I'm afraid this causes a compilation breakage with clang :-(\n> > > > > > \n> > > > > > ../../src/gstreamer/gstlibcamerasrc.cpp:768:23: error: unused variable 'oldEvent' [-Werror,-Wunused-variable]\n> > > > > > g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > > > ^\n> > > > > > \n> > > > > > The patch has been merged, can you propose a fix quickly, or should I\n> > > > > > revert to give you more time ?\n> > > > > \n> > > > > I'm afraid with a broken build we're blocked on merging more patches -\n> > > > > of which I'm now trying to do - so I'd probably ask if we can revert\n> > > > > this until it's fixed please.\n> > > > > [...]\n> > > > [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > Or just, like the original patch did.\n> > > \n> > >     GstEvent *oldEvent = self->pending_eos.exchange(event);\n> > >     gst_clear_event(&oldEvent);\n> > > \n> > > Not sure why this blocks anything, sounds a bit dramatic handling of a build\n> > > warning. In this case, its quite obvious that this is a false positive in clang\n> > > warning machinery, you will hit more of these with clang in my experience.\n> > Sorry, it wasn't supposed to be dramatic. A real fix is fine too, but a\n> > revert and re-apply fixed isnt hard either.\n> \n> I will post a revert and a re-appllied patch for review.\n\nI'll start being annoying, but why all this complexity needed ? Why not just\nmake a patch that fix the previous one, you add add \"fixes\" tag to make it\nclear.\n\nNicolas\n\n> > \n> > This patch was merged without going through our compliler matrix.\n> \n> This was my mistake. Apologies.\n> \n> Can you please collect and run through the compiler matrix please and \n> handle the merge along with other patches?\n> \n> > On my pc, I can't merge if the compiler matrix fails, but thats not set\n> > up for everyone. I've got four patches now lined up to merge for\n> > Raspberry Pi and blocked. I can wait ... if we have a fix\n> \n> Yes, sorry :-/\n> > --\n> > Kieran\n> > \n> > \n> > > Nicolas\n> > > \n> > > > ?\n> > > > \n> > > > > [...]\n> > > > Regards,\n> > > > Barnabás Pőcze\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 A2FE8BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 23 Nov 2023 15:49:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 083ED629BC;\n\tThu, 23 Nov 2023 16:49:42 +0100 (CET)","from madras.collabora.co.uk (madras.collabora.co.uk\n\t[46.235.227.172])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 301A261DAC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 Nov 2023 16:49:40 +0100 (CET)","from nicolas-tpx395.localdomain (cola.collaboradmins.com\n\t[195.201.22.229])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (4096 bits)\n\tserver-digest SHA256)\n\t(No client certificate requested) (Authenticated sender: nicolas)\n\tby madras.collabora.co.uk (Postfix) with ESMTPSA id 33D8766073CA;\n\tThu, 23 Nov 2023 15:49:39 +0000 (GMT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700754582;\n\tbh=OlAgPvDWiWaqKkhIWhMi9mFWh+2yooqRDhLzAbEF/rQ=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=tMTbgG63xzxt1SpHvZM+UqOvs+vPkrGasImp17vBJjXwkE4ZZhgB41KTI8JJ0aTTG\n\tegcsZqPB/N3xgczgWRkek2wElPF1QXUa0/UVVzWe1yDSINcgVfoF5U6GNhkHl1XPhq\n\tWddxUNHa2BQCv53jdvIDFWlxUjr/s8CwSUSatYlsIvx3PziVVc8iUPySs6asPDr4qf\n\tDaqIrSladeU6Oolr1xqTCdnBG9a5LFr5xjTMBTjaqp9S/awYD3MjLYYXhQ4W08JvhP\n\tNRjFFsym5QraY8D8Di2LIXiqo8cQXfIHpbe/PXEx4alHViAWkAQE1JW9lIuzAln4z2\n\tYK/xwnXitRtoA==","v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com;\n\ts=mail; t=1700754579;\n\tbh=OlAgPvDWiWaqKkhIWhMi9mFWh+2yooqRDhLzAbEF/rQ=;\n\th=Subject:From:To:Cc:Date:In-Reply-To:References:From;\n\tb=bOg/47ELcNZxn7gxkWef7WVfr24GMPqZrYzuhxz37k5+aigknNXYoj/0SRoQTGsaC\n\tXo7PeameNcLChQqyU8YYsU8oL/4EaLKhF5hfHmN2jEyZFVaCHdilJPTIugQAr5iNTF\n\tL8D2cfDO9rsiBUX3gyA2P59X7QBPcT+n664zW8e/U0MfVGOXndQ8YCugsmZsOLp8oE\n\tzuGHJFlCL7N3wS/hWAQAC3cIUpGhD5xMGcQ20qUHIayraGDL3LYsH7GvmjQ2ASKaNd\n\tQL2Eav4a8zopYo5kguYzSlXYnGlnfklI5eN579F7JFFOy2+GC10xyR5s05Qzcx2UJp\n\tUqdpRkYy2APkg=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=collabora.com\n\theader.i=@collabora.com\n\theader.b=\"bOg/47EL\"; dkim-atps=neutral","Message-ID":"<f6b810d343e5e330739d0353c85b54e0d04addc2.camel@collabora.com>","To":"Umang Jain <umang.jain@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab?=\n\t=?utf-8?b?w6FzIFDFkWN6ZQ==?=  <pobrn@protonmail.com>","Date":"Thu, 23 Nov 2023 10:49:29 -0500","In-Reply-To":"<be5cf371-dd93-800c-7a24-6385a950bb4a@ideasonboard.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>\n\t<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>\n\t<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>\n\t<be5cf371-dd93-800c-7a24-6385a950bb4a@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","User-Agent":"Evolution 3.48.4 (3.48.4-1.fc38) ","MIME-Version":"1.0","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Nicolas Dufresne via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":28167,"web_url":"https://patchwork.libcamera.org/comment/28167/","msgid":"<170075903665.451646.13985748880955944974@ping.linuxembedded.co.uk>","date":"2023-11-23T17:03:56","subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Nicolas Dufresne (2023-11-23 15:49:29)\n> Le jeudi 23 novembre 2023 à 10:14 +0530, Umang Jain a écrit :\n> > Hi,\n> > > > > 2023. november 22., szerda 18:08 keltezéssel, Kieran Bingham via libcamera-devel <libcamera-devel@lists.libcamera.org> írta:\n> > > > > > \n> > > > > > I'm afraid with a broken build we're blocked on merging more patches -\n> > > > > > of which I'm now trying to do - so I'd probably ask if we can revert\n> > > > > > this until it's fixed please.\n> > > > > > [...]\n> > > > > [[maybe_unused]] g_autoptr(GstEvent) oldEvent = self->pending_eos.exchange(event);\n> > > > Or just, like the original patch did.\n> > > > \n> > > >     GstEvent *oldEvent = self->pending_eos.exchange(event);\n> > > >     gst_clear_event(&oldEvent);\n> > > > \n> > > > Not sure why this blocks anything, sounds a bit dramatic handling of a build\n> > > > warning. In this case, its quite obvious that this is a false positive in clang\n> > > > warning machinery, you will hit more of these with clang in my experience.\n> > > Sorry, it wasn't supposed to be dramatic. A real fix is fine too, but a\n> > > revert and re-apply fixed isnt hard either.\n> > \n> > I will post a revert and a re-appllied patch for review.\n> \n> I'll start being annoying, but why all this complexity needed ? Why not just\n> make a patch that fix the previous one, you add add \"fixes\" tag to make it\n> clear.\n\nYeah - mailing lists are rubbish ... if only this was all in a single\nthread or context and everything was in one place, then the final result\nhere would have been more obvious...\n\nhttps://patchwork.libcamera.org/patch/19230/\n\n--\nKieran","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 AE725C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 23 Nov 2023 17:04:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 036E3629AF;\n\tThu, 23 Nov 2023 18:04:01 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 980EA61DAC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 23 Nov 2023 18:03:59 +0100 (CET)","from pendragon.ideasonboard.com\n\t(aztw-30-b2-v4wan-166917-cust845.vm26.cable.virginm.net\n\t[82.37.23.78])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9BB9925A;\n\tThu, 23 Nov 2023 18:03:27 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1700759041;\n\tbh=DIevn3jEtLJb74f8Uor8YKcrIQDu7RkFhDg3G25LPaw=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=H3BVJEUHQifmCV6o4qC9KDgMC+T0JiMxBrtS+0pZEgkDeiq0h/M7OQBj40aXlvwii\n\tEgBFrveX8l1iJtnj22br0TKq8mi3utRudoaH0XukARrgilQNvens0SpySRbxy//Mw8\n\tXN6dY5GjLnkOj0BkrjpdcPfnsZaxM88IWzziNz0oYGtS0iPl0xmkWoBzdXI4mRutll\n\tkrAVzg2kfi7oE4hi1Z/Ly0sffRw58T20iYKBRdKJBojKI5DVMl2FagqlMVAkRDR/8J\n\tZJ/r8B6em6muI/jXFvs6t8MKBMU5zIPFiuXJnSVXC+6VHr7JCixuK5utHUyGYyceWu\n\tanqoKiPkdmSGQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1700759007;\n\tbh=DIevn3jEtLJb74f8Uor8YKcrIQDu7RkFhDg3G25LPaw=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=IpCZbvAX2gXVttIrINz4xG4sVFQSTvpoOm9pt/CfrfEG69BDzO7u5ZQrP061hQG/O\n\tkDL2U4W0rCM1opzoRgcsVJbuBZnOMB/DEsRYFGeP+SwLL3Vxm32TIlOxznYtz3FpJk\n\tjWSBJMuqQW0hde3vz4zs9Iwxz+acuguxOj6yDqsw="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"IpCZbvAX\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<f6b810d343e5e330739d0353c85b54e0d04addc2.camel@collabora.com>","References":"<20231114122800.10007-1-jaslo@ziska.de>\n\t<20231122163849.GA22993@pendragon.ideasonboard.com>\n\t<170067291592.4089757.8638329972343858365@ping.linuxembedded.co.uk>\n\t<QnSd_CbELdhh0Wbmz6TqLv6vImhb-gYZOeP2M0h12L1_SSww_9A5dmWQt7tP2sJs8gc1rq2-BguYy0hJcTddz3_O5Klypp1GS0yT0t9TJyI=@protonmail.com>\n\t<afd45900dfd68524bca3ccf18b53e1f8d945ebe3.camel@collabora.com>\n\t<170068668723.50049.8757344916539512228@ping.linuxembedded.co.uk>\n\t<be5cf371-dd93-800c-7a24-6385a950bb4a@ideasonboard.com>\n\t<f6b810d343e5e330739d0353c85b54e0d04addc2.camel@collabora.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>, Umang Jain\n\t<umang.jain@ideasonboard.com>","Date":"Thu, 23 Nov 2023 17:03:56 +0000","Message-ID":"<170075903665.451646.13985748880955944974@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v3] gstreamer: Implement element EOS\n\thandling","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":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]