[{"id":18226,"web_url":"https://patchwork.libcamera.org/comment/18226/","msgid":"<20210719072424.GM2395@pyrite.rasen.tech>","date":"2021-07-19T07:24:24","subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Vedant,\n\nOn Sun, Jul 18, 2021 at 12:18:50PM +0530, Vedant Paranjape wrote:\n> This patch creates gst_libcamera_pad_push_stream_start function to\n> create stream id and to push the stream start. This is a non functional\n> change.\n> \n> Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com>\n> ---\n>  src/gstreamer/gstlibcamerapad.cpp | 13 +++++++++++++\n>  src/gstreamer/gstlibcamerapad.h   |  2 ++\n>  src/gstreamer/gstlibcamerasrc.cpp |  7 +------\n>  3 files changed, 16 insertions(+), 6 deletions(-)\n> \n> diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp\n> index c00e81c8..6f889472 100644\n> --- a/src/gstreamer/gstlibcamerapad.cpp\n> +++ b/src/gstreamer/gstlibcamerapad.cpp\n> @@ -155,6 +155,19 @@ gst_libcamera_pad_get_stream(GstPad *pad)\n>  \treturn nullptr;\n>  }\n>  \n> +void\n> +gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id)\n> +{\n> +\tGstElement *element = gst_pad_get_parent_element(pad);\n> +\tstatic gint stream_id_num = 0;\n\nIf gst_libcamera_src_task_enter() is called more than once then this won't\nbe reset to zero, as the original behavior was.\n\n\nPaul\n\n> +\n> +\tg_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\", group_id, stream_id_num++);\n> +\tg_autofree gchar *stream_id = gst_pad_create_stream_id(pad, element, stream_id_intermediate);\n> +\tGstEvent *event = gst_event_new_stream_start(stream_id);\n> +\tgst_event_set_group_id(event, group_id);\n> +\tgst_pad_push_event(pad, event);\n> +}\n> +\n>  void\n>  gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer)\n>  {\n> diff --git a/src/gstreamer/gstlibcamerapad.h b/src/gstreamer/gstlibcamerapad.h\n> index 779f2d13..7693374f 100644\n> --- a/src/gstreamer/gstlibcamerapad.h\n> +++ b/src/gstreamer/gstlibcamerapad.h\n> @@ -26,6 +26,8 @@ void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);\n>  \n>  libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);\n>  \n> +void gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id);\n> +\n>  void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer);\n>  \n>  GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad);\n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index 79b0d867..f9ac50ef 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -364,15 +364,10 @@ gst_libcamera_src_task_enter(GstTask *task, [[maybe_unused]] GThread *thread,\n>  \tif (state->group_id_ == 0) {\n>  \t\tstate->group_id_ = gst_util_group_id_next();\n>  \t}\n> -\tgint stream_id_num = 0;\n>  \tStreamRoles roles;\n>  \tfor (GstPad *srcpad : state->srcpads_) {\n>  \t\t/* Create stream-id and push stream-start. */\n> -\t\tg_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\", state->group_id_, stream_id_num++);\n> -\t\tg_autofree gchar *stream_id = gst_pad_create_stream_id(srcpad, GST_ELEMENT(self), stream_id_intermediate);\n> -\t\tGstEvent *event = gst_event_new_stream_start(stream_id);\n> -\t\tgst_event_set_group_id(event, state->group_id_);\n> -\t\tgst_pad_push_event(srcpad, event);\n> +\t\tgst_libcamera_pad_push_stream_start(srcpad, state->group_id_);\n>  \n>  \t\t/* Collect the streams roles for the next iteration. */\n>  \t\troles.push_back(gst_libcamera_pad_get_role(srcpad));\n> -- \n> 2.25.1\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 6B1C8C322B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jul 2021 07:24:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BD88768537;\n\tMon, 19 Jul 2021 09:24:33 +0200 (CEST)","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 08AF468536\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 09:24:32 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8686B465;\n\tMon, 19 Jul 2021 09:24:30 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"DBjHcp56\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1626679471;\n\tbh=veGlXY5WN/Sa4lQMham3JDhzQD2LxsAI6PSDlSYvGHU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=DBjHcp56Fn+i8A3+BHornIvQSFWXg/bFadTOHRdJJcnryBRMhmiPyGLrQYzkZ8Bol\n\ttae26RvqRW89iq70JcL44EqR4+/tgJf4RkxLfcwmavnwi5BYobgksyso4MX0IGBazi\n\txDx6lfaOKD0rJSxLO9+KT8l0dEP+3dCLEwELzJi0=","Date":"Mon, 19 Jul 2021 16:24:24 +0900","From":"paul.elder@ideasonboard.com","To":"Vedant Paranjape <vedantparanjape160201@gmail.com>","Message-ID":"<20210719072424.GM2395@pyrite.rasen.tech>","References":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18227,"web_url":"https://patchwork.libcamera.org/comment/18227/","msgid":"<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>","date":"2021-07-19T07:26:55","subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","submitter":{"id":85,"url":"https://patchwork.libcamera.org/api/people/85/","name":"Vedant Paranjape","email":"vedantparanjape160201@gmail.com"},"content":"Hi Paul,\nYes, it is expected behaviour. group_id should stay same throughout\nlifetime of application.\n\nI will remove the non-functional part from commit message.\n\nRegards\nVedant\n\nOn Mon, 19 Jul, 2021, 12:54 , <paul.elder@ideasonboard.com> wrote:\n\n> Hi Vedant,\n>\n> On Sun, Jul 18, 2021 at 12:18:50PM +0530, Vedant Paranjape wrote:\n> > This patch creates gst_libcamera_pad_push_stream_start function to\n> > create stream id and to push the stream start. This is a non functional\n> > change.\n> >\n> > Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com>\n> > ---\n> >  src/gstreamer/gstlibcamerapad.cpp | 13 +++++++++++++\n> >  src/gstreamer/gstlibcamerapad.h   |  2 ++\n> >  src/gstreamer/gstlibcamerasrc.cpp |  7 +------\n> >  3 files changed, 16 insertions(+), 6 deletions(-)\n> >\n> > diff --git a/src/gstreamer/gstlibcamerapad.cpp\n> b/src/gstreamer/gstlibcamerapad.cpp\n> > index c00e81c8..6f889472 100644\n> > --- a/src/gstreamer/gstlibcamerapad.cpp\n> > +++ b/src/gstreamer/gstlibcamerapad.cpp\n> > @@ -155,6 +155,19 @@ gst_libcamera_pad_get_stream(GstPad *pad)\n> >       return nullptr;\n> >  }\n> >\n> > +void\n> > +gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id)\n> > +{\n> > +     GstElement *element = gst_pad_get_parent_element(pad);\n> > +     static gint stream_id_num = 0;\n>\n> If gst_libcamera_src_task_enter() is called more than once then this won't\n> be reset to zero, as the original behavior was.\n>\n>\n> Paul\n>\n> > +\n> > +     g_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\",\n> group_id, stream_id_num++);\n> > +     g_autofree gchar *stream_id = gst_pad_create_stream_id(pad,\n> element, stream_id_intermediate);\n> > +     GstEvent *event = gst_event_new_stream_start(stream_id);\n> > +     gst_event_set_group_id(event, group_id);\n> > +     gst_pad_push_event(pad, event);\n> > +}\n> > +\n> >  void\n> >  gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer)\n> >  {\n> > diff --git a/src/gstreamer/gstlibcamerapad.h\n> b/src/gstreamer/gstlibcamerapad.h\n> > index 779f2d13..7693374f 100644\n> > --- a/src/gstreamer/gstlibcamerapad.h\n> > +++ b/src/gstreamer/gstlibcamerapad.h\n> > @@ -26,6 +26,8 @@ void gst_libcamera_pad_set_pool(GstPad *pad,\n> GstLibcameraPool *pool);\n> >\n> >  libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);\n> >\n> > +void gst_libcamera_pad_push_stream_start(GstPad *pad, const guint\n> group_id);\n> > +\n> >  void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer);\n> >\n> >  GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad);\n> > diff --git a/src/gstreamer/gstlibcamerasrc.cpp\n> b/src/gstreamer/gstlibcamerasrc.cpp\n> > index 79b0d867..f9ac50ef 100644\n> > --- a/src/gstreamer/gstlibcamerasrc.cpp\n> > +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> > @@ -364,15 +364,10 @@ gst_libcamera_src_task_enter(GstTask *task,\n> [[maybe_unused]] GThread *thread,\n> >       if (state->group_id_ == 0) {\n> >               state->group_id_ = gst_util_group_id_next();\n> >       }\n> > -     gint stream_id_num = 0;\n> >       StreamRoles roles;\n> >       for (GstPad *srcpad : state->srcpads_) {\n> >               /* Create stream-id and push stream-start. */\n> > -             g_autofree gchar *stream_id_intermediate =\n> g_strdup_printf(\"%i%i\", state->group_id_, stream_id_num++);\n> > -             g_autofree gchar *stream_id =\n> gst_pad_create_stream_id(srcpad, GST_ELEMENT(self), stream_id_intermediate);\n> > -             GstEvent *event = gst_event_new_stream_start(stream_id);\n> > -             gst_event_set_group_id(event, state->group_id_);\n> > -             gst_pad_push_event(srcpad, event);\n> > +             gst_libcamera_pad_push_stream_start(srcpad,\n> state->group_id_);\n> >\n> >               /* Collect the streams roles for the next iteration. */\n> >               roles.push_back(gst_libcamera_pad_get_role(srcpad));\n> > --\n> > 2.25.1\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 BCD61C322B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jul 2021 07:27:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 40C4468537;\n\tMon, 19 Jul 2021 09:27:09 +0200 (CEST)","from mail-yb1-xb36.google.com (mail-yb1-xb36.google.com\n\t[IPv6:2607:f8b0:4864:20::b36])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 824F968536\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 09:27:08 +0200 (CEST)","by mail-yb1-xb36.google.com with SMTP id i18so26251539yba.13\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 00:27:08 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"Q9ukmBB/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=rsDzWeg9DJWdHuiA5/iFjD2GOYnL4ig4J8koeHcn1qo=;\n\tb=Q9ukmBB/PSmvl0WcdBs9OlgfMLRZRuF/iIXPUdYXyhmo+DJfAoSOMLBE7mQQtbBwDx\n\tQeaCr/aYgwSAyG38r8RRnEmSqTtssTn39wjSNz4yXP6QfAiJuEvDFpvSgBM6IZSpKxHV\n\t03d0Zo8jNKm9dJ/zW6V8k5crmi96FSB0DJlZcuo7YB/qqum0DuGjYE4+xdYHN5MOQXjT\n\tY/QFvT4IaXPbdZKGbVI3YOV+WYXzu/2UUmy0pQ91O+LN4SKT1Imh0dI4x/iGWhImImhT\n\tElUJlNBZ3jDpxBcw+A3boJNkLOyrxg6g8gUMVotJXAbiYzDUPYOPUW819H7k15BSFb6B\n\tcaSA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=rsDzWeg9DJWdHuiA5/iFjD2GOYnL4ig4J8koeHcn1qo=;\n\tb=UKrPcX3cLRlbMNdTKTIlhlCwAMn8sjU1ZTVgRa1E8TwTuW0iXgA7yE1LwCcvLVUtvP\n\tZFEEk5dr17kc7MdL08glMh3oCViVYhIq2k3QMlMkxY57cABjPY6wziX8/TDequF6yxuq\n\tMEfgCOWjXKBTJwv/3otuohddpYS1W9OPi221D6N+WGYP0Vz20601oOHOVXsdfc6TOFb6\n\tIMAN+CvLowaF07Icnv92RFh/IheKpDdtaGRHelYuC6jaTtqLTBryUDp5jPFAT6y5WNT3\n\tdF5eenpvx1G6bD2a+87u+dZBXD9CCKxGyvowUuYstp4RiQ6P+l1JviUeynmgeOVHMXSN\n\tInLg==","X-Gm-Message-State":"AOAM532G6DqzuV+5rllnDbCoYNJen+iGFhd1VamnO4MsRzn4uFOLEQ9A\n\tx3lKRDevjEeYzypagH3XdU/p2c6E1WBW+fPso/0=","X-Google-Smtp-Source":"ABdhPJyHZEC6sgg5NdjYWDpJIQ0d2Poyif6AuPxOolmcAXMa3mHXFHo++2IJQovC8k+F7rb1W+9fki2bjYkJ+E97oqc=","X-Received":"by 2002:a25:1c1:: with SMTP id\n\t184mr29390219ybb.175.1626679627200; \n\tMon, 19 Jul 2021 00:27:07 -0700 (PDT)","MIME-Version":"1.0","References":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>\n\t<20210719072424.GM2395@pyrite.rasen.tech>","In-Reply-To":"<20210719072424.GM2395@pyrite.rasen.tech>","From":"Vedant Paranjape <vedantparanjape160201@gmail.com>","Date":"Mon, 19 Jul 2021 12:56:55 +0530","Message-ID":"<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000057bb6e05c774ddfe\"","Subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18228,"web_url":"https://patchwork.libcamera.org/comment/18228/","msgid":"<20210719094139.GN2395@pyrite.rasen.tech>","date":"2021-07-19T09:41:39","subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Vedant,\n\nOn Mon, Jul 19, 2021 at 12:56:55PM +0530, Vedant Paranjape wrote:\n> Hi Paul,\n> Yes, it is expected behaviour. group_id should stay same throughout lifetime of\n> application.\n\nI'm confused. I'm talking about stream_id_num. The previous behavior is\nthat every gst_libcamera_src_task_enter() would assign the stream_id\nfrom 0 to state->srcpads_.size(). The new behavior is that the stream_id\nwould be assigned from (0 * call_count) to (state->srcpads_.size() *\ncall_count), where call_count is the number of times\ngst_libcamera_src_task_enter() has been called. That change is\nintentional?\n\n\nPaul\n\n> \n> I will remove the non-functional part from commit message.\n> \n> On Mon, 19 Jul, 2021, 12:54 , <paul.elder@ideasonboard.com> wrote:\n> \n>     Hi Vedant,\n> \n>     On Sun, Jul 18, 2021 at 12:18:50PM +0530, Vedant Paranjape wrote:\n>     > This patch creates gst_libcamera_pad_push_stream_start function to\n>     > create stream id and to push the stream start. This is a non functional\n>     > change.\n>     >\n>     > Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com>\n>     > ---\n>     >  src/gstreamer/gstlibcamerapad.cpp | 13 +++++++++++++\n>     >  src/gstreamer/gstlibcamerapad.h   |  2 ++\n>     >  src/gstreamer/gstlibcamerasrc.cpp |  7 +------\n>     >  3 files changed, 16 insertions(+), 6 deletions(-)\n>     >\n>     > diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/\n>     gstlibcamerapad.cpp\n>     > index c00e81c8..6f889472 100644\n>     > --- a/src/gstreamer/gstlibcamerapad.cpp\n>     > +++ b/src/gstreamer/gstlibcamerapad.cpp\n>     > @@ -155,6 +155,19 @@ gst_libcamera_pad_get_stream(GstPad *pad)\n>     >       return nullptr;\n>     >  }\n>     > \n>     > +void\n>     > +gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id)\n>     > +{\n>     > +     GstElement *element = gst_pad_get_parent_element(pad);\n>     > +     static gint stream_id_num = 0;\n> \n>     If gst_libcamera_src_task_enter() is called more than once then this won't\n>     be reset to zero, as the original behavior was.\n> \n> \n>     Paul\n> \n>     > +\n>     > +     g_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\",\n>     group_id, stream_id_num++);\n>     > +     g_autofree gchar *stream_id = gst_pad_create_stream_id(pad,\n>     element, stream_id_intermediate);\n>     > +     GstEvent *event = gst_event_new_stream_start(stream_id);\n>     > +     gst_event_set_group_id(event, group_id);\n>     > +     gst_pad_push_event(pad, event);\n>     > +}\n>     > +\n>     >  void\n>     >  gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer)\n>     >  {\n>     > diff --git a/src/gstreamer/gstlibcamerapad.h b/src/gstreamer/\n>     gstlibcamerapad.h\n>     > index 779f2d13..7693374f 100644\n>     > --- a/src/gstreamer/gstlibcamerapad.h\n>     > +++ b/src/gstreamer/gstlibcamerapad.h\n>     > @@ -26,6 +26,8 @@ void gst_libcamera_pad_set_pool(GstPad *pad,\n>     GstLibcameraPool *pool);\n>     > \n>     >  libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);\n>     > \n>     > +void gst_libcamera_pad_push_stream_start(GstPad *pad, const guint\n>     group_id);\n>     > +\n>     >  void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer);\n>     > \n>     >  GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad);\n>     > diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/\n>     gstlibcamerasrc.cpp\n>     > index 79b0d867..f9ac50ef 100644\n>     > --- a/src/gstreamer/gstlibcamerasrc.cpp\n>     > +++ b/src/gstreamer/gstlibcamerasrc.cpp\n>     > @@ -364,15 +364,10 @@ gst_libcamera_src_task_enter(GstTask *task,\n>     [[maybe_unused]] GThread *thread,\n>     >       if (state->group_id_ == 0) {\n>     >               state->group_id_ = gst_util_group_id_next();\n>     >       }\n>     > -     gint stream_id_num = 0;\n>     >       StreamRoles roles;\n>     >       for (GstPad *srcpad : state->srcpads_) {\n>     >               /* Create stream-id and push stream-start. */\n>     > -             g_autofree gchar *stream_id_intermediate = g_strdup_printf\n>     (\"%i%i\", state->group_id_, stream_id_num++);\n>     > -             g_autofree gchar *stream_id = gst_pad_create_stream_id\n>     (srcpad, GST_ELEMENT(self), stream_id_intermediate);\n>     > -             GstEvent *event = gst_event_new_stream_start(stream_id);\n>     > -             gst_event_set_group_id(event, state->group_id_);\n>     > -             gst_pad_push_event(srcpad, event);\n>     > +             gst_libcamera_pad_push_stream_start(srcpad, state->\n>     group_id_);\n>     > \n>     >               /* Collect the streams roles for the next iteration. */\n>     >               roles.push_back(gst_libcamera_pad_get_role(srcpad));\n>     > --\n>     > 2.25.1\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 E8DC1C0109\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jul 2021 09:41:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 44C4968537;\n\tMon, 19 Jul 2021 11:41:49 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 125BF68536\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 11:41:48 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 289E4465;\n\tMon, 19 Jul 2021 11:41:45 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"OD0oySrh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1626687707;\n\tbh=TX66FMSqb8KNzxO21cRm+HmlpT5XoxuZLwU6X5/SkOQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=OD0oySrhr28q7yrdXmVSxYjTwz1bvyXbW4KP+e9XpTlRFeIJTRJdeND2evd+/yMbo\n\tL79HBrAiNQNQuHUB5j6THK4PpjQ/5wOiqJqUC+Cvsg6Gl6hzFzLXh4q0fTS4IU1phm\n\t+/CO/ElQH6T3/L11Ky7M+UOtdbxpmQUCsWF+budc=","Date":"Mon, 19 Jul 2021 18:41:39 +0900","From":"paul.elder@ideasonboard.com","To":"Vedant Paranjape <vedantparanjape160201@gmail.com>","Message-ID":"<20210719094139.GN2395@pyrite.rasen.tech>","References":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>\n\t<20210719072424.GM2395@pyrite.rasen.tech>\n\t<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18231,"web_url":"https://patchwork.libcamera.org/comment/18231/","msgid":"<f26da8d32ed3b9993ce22882975625c6a07f8304.camel@ndufresne.ca>","date":"2021-07-19T13:28:36","subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","submitter":{"id":30,"url":"https://patchwork.libcamera.org/api/people/30/","name":"Nicolas Dufresne","email":"nicolas@ndufresne.ca"},"content":"Le dimanche 18 juillet 2021 à 12:18 +0530, Vedant Paranjape a écrit :\n> This patch creates gst_libcamera_pad_push_stream_start function to\n> create stream id and to push the stream start. This is a non functional\n> change.\n\nNone functional changes should not be sent separately but with other patches\nmaking use of it.\n\n> \n> Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com>\n> ---\n>  src/gstreamer/gstlibcamerapad.cpp | 13 +++++++++++++\n>  src/gstreamer/gstlibcamerapad.h   |  2 ++\n>  src/gstreamer/gstlibcamerasrc.cpp |  7 +------\n>  3 files changed, 16 insertions(+), 6 deletions(-)\n> \n> diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp\n> index c00e81c8..6f889472 100644\n> --- a/src/gstreamer/gstlibcamerapad.cpp\n> +++ b/src/gstreamer/gstlibcamerapad.cpp\n> @@ -155,6 +155,19 @@ gst_libcamera_pad_get_stream(GstPad *pad)\n>  \treturn nullptr;\n>  }\n>  \n> +void\n> +gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id)\n> +{\n> +\tGstElement *element = gst_pad_get_parent_element(pad);\n> +\tstatic gint stream_id_num = 0;\n> +\n> +\tg_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\", group_id, stream_id_num++);\n> +\tg_autofree gchar *stream_id = gst_pad_create_stream_id(pad, element, stream_id_intermediate);\n> +\tGstEvent *event = gst_event_new_stream_start(stream_id);\n> +\tgst_event_set_group_id(event, group_id);\n> +\tgst_pad_push_event(pad, event);\n> +}\n> +\n>  void\n>  gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer)\n>  {\n> diff --git a/src/gstreamer/gstlibcamerapad.h b/src/gstreamer/gstlibcamerapad.h\n> index 779f2d13..7693374f 100644\n> --- a/src/gstreamer/gstlibcamerapad.h\n> +++ b/src/gstreamer/gstlibcamerapad.h\n> @@ -26,6 +26,8 @@ void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);\n>  \n>  libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);\n>  \n> +void gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id);\n> +\n>  void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer);\n>  \n>  GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad);\n> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> index 79b0d867..f9ac50ef 100644\n> --- a/src/gstreamer/gstlibcamerasrc.cpp\n> +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> @@ -364,15 +364,10 @@ gst_libcamera_src_task_enter(GstTask *task, [[maybe_unused]] GThread *thread,\n>  \tif (state->group_id_ == 0) {\n>  \t\tstate->group_id_ = gst_util_group_id_next();\n>  \t}\n> -\tgint stream_id_num = 0;\n>  \tStreamRoles roles;\n>  \tfor (GstPad *srcpad : state->srcpads_) {\n>  \t\t/* Create stream-id and push stream-start. */\n> -\t\tg_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\", state->group_id_, stream_id_num++);\n> -\t\tg_autofree gchar *stream_id = gst_pad_create_stream_id(srcpad, GST_ELEMENT(self), stream_id_intermediate);\n> -\t\tGstEvent *event = gst_event_new_stream_start(stream_id);\n> -\t\tgst_event_set_group_id(event, state->group_id_);\n> -\t\tgst_pad_push_event(srcpad, event);\n> +\t\tgst_libcamera_pad_push_stream_start(srcpad, state->group_id_);\n>  \n>  \t\t/* Collect the streams roles for the next iteration. */\n>  \t\troles.push_back(gst_libcamera_pad_get_role(srcpad));","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 8DA03C0109\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jul 2021 13:28:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 37BA96853C;\n\tMon, 19 Jul 2021 15:28:40 +0200 (CEST)","from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com\n\t[IPv6:2607:f8b0:4864:20::72e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 982116851F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 15:28:38 +0200 (CEST)","by mail-qk1-x72e.google.com with SMTP id p202so16589785qka.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 06:28:38 -0700 (PDT)","from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net.\n\t[173.246.12.168]) by smtp.gmail.com with ESMTPSA id\n\tt62sm8014589qkc.26.2021.07.19.06.28.36\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 19 Jul 2021 06:28:37 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ndufresne-ca.20150623.gappssmtp.com\n\theader.i=@ndufresne-ca.20150623.gappssmtp.com\n\theader.b=\"EKlYzwlh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ndufresne-ca.20150623.gappssmtp.com; s=20150623;\n\th=message-id:subject:from:to:date:in-reply-to:references:user-agent\n\t:mime-version:content-transfer-encoding;\n\tbh=Gq8Zgwqevl6FA0rOKDlMpyaWGhRefPinW3dN3Ute8wc=;\n\tb=EKlYzwlh9rV3X+NQw3A2pW/PAUbEJIrFKeCQ9m1V9DR4iFKF1Z4RqWkuI3z5At2F4m\n\tFS0lRHCWSgONPQC83Byt2cnFK44neIHLZpPc3T5GG9/XtE94YbJ4n8++zWROaEuFuz+A\n\teBCiyuagoQp2QUUcjsqUFORuXxFJR93zYkZnSVXmXBclrlGkXE9vXHTPD/i8SU84r81v\n\tcRd6HVr+wDzTMVM3UYPUtVdVCFsGu8r64df66YkxHn0oNW8fWAvy7gyd4O+r72GvceTB\n\tmy2jKVPkNPHGZ2yYu5JhK473492qHnh6Y2H4XoFhoVMAj4/B6k1Hf+Xs09JMYwvz3lWb\n\thVkA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:message-id:subject:from:to:date:in-reply-to\n\t:references:user-agent:mime-version:content-transfer-encoding;\n\tbh=Gq8Zgwqevl6FA0rOKDlMpyaWGhRefPinW3dN3Ute8wc=;\n\tb=JbPd4xtwypfBw6xJbluyRqd/vxCTCVa6xIqTvooE3lfkiCM/4CZr0APZg+U+hKsXLt\n\tLJwK6OBM0cfDCdB4gL+iWh5jEBT0XgPFJmAdnO329YXNZxwsHwvcSEM+TAATD7oa8/SV\n\tG1ukVLlsk2RyU4l3wCReJiR5LsE02iDXhX/3jn9JZKr10+GUv2aXfEzNqZlJcArFIMop\n\tesk5EUKdBcIgWcJ/d2onXpVFtqbBVwDxorreljd5VGIJF4yzjc6xQAdM1dZhzlhvjuN2\n\tSq9OitC1s2mI7e38Pm3T21/rULnroB/xMXG/6lgHsPIkqFzKOz/7KIuU+DzvF6TCkLVb\n\tj1Ew==","X-Gm-Message-State":"AOAM533iTzjS9gy3MxYMUmYUGpL0rJPOay7xyn1C3oNzq6cJ5f8A67+U\n\tC0Ntl51P8QLQBSrMHekdpqVg8w==","X-Google-Smtp-Source":"ABdhPJyUXKF8VJD61IBf6lCFkdchTyHYbpDHLXBUdLHUFn7iVyUBbbsa44xo5R7cW0+anAHZ9OlpJQ==","X-Received":"by 2002:a37:858:: with SMTP id 85mr24002280qki.70.1626701317526; \n\tMon, 19 Jul 2021 06:28:37 -0700 (PDT)","Message-ID":"<f26da8d32ed3b9993ce22882975625c6a07f8304.camel@ndufresne.ca>","From":"Nicolas Dufresne <nicolas@ndufresne.ca>","To":"Vedant Paranjape <vedantparanjape160201@gmail.com>, \n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 19 Jul 2021 09:28:36 -0400","In-Reply-To":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>","References":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>","Content-Type":"text/plain; charset=\"UTF-8\"","User-Agent":"Evolution 3.40.3 (3.40.3-1.fc34) ","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18233,"web_url":"https://patchwork.libcamera.org/comment/18233/","msgid":"<YPWU2oBbsIfCsIQV@pendragon.ideasonboard.com>","date":"2021-07-19T15:06:02","subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Jul 19, 2021 at 12:56:55PM +0530, Vedant Paranjape wrote:\n> Hi Paul,\n> Yes, it is expected behaviour. group_id should stay same throughout\n> lifetime of application.\n> \n> I will remove the non-functional part from commit message.\n\nBetter, please split the patch in two, with the non-functional\nrefactoring and the functional change in two separate patches.\n\n> On Mon, 19 Jul, 2021, 12:54 , <paul.elder@ideasonboard.com> wrote:\n> > On Sun, Jul 18, 2021 at 12:18:50PM +0530, Vedant Paranjape wrote:\n> > > This patch creates gst_libcamera_pad_push_stream_start function to\n> > > create stream id and to push the stream start. This is a non functional\n> > > change.\n> > >\n> > > Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com>\n> > > ---\n> > >  src/gstreamer/gstlibcamerapad.cpp | 13 +++++++++++++\n> > >  src/gstreamer/gstlibcamerapad.h   |  2 ++\n> > >  src/gstreamer/gstlibcamerasrc.cpp |  7 +------\n> > >  3 files changed, 16 insertions(+), 6 deletions(-)\n> > >\n> > > diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp\n> > > index c00e81c8..6f889472 100644\n> > > --- a/src/gstreamer/gstlibcamerapad.cpp\n> > > +++ b/src/gstreamer/gstlibcamerapad.cpp\n> > > @@ -155,6 +155,19 @@ gst_libcamera_pad_get_stream(GstPad *pad)\n> > >       return nullptr;\n> > >  }\n> > >\n> > > +void\n> > > +gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id)\n> > > +{\n> > > +     GstElement *element = gst_pad_get_parent_element(pad);\n> > > +     static gint stream_id_num = 0;\n> >\n> > If gst_libcamera_src_task_enter() is called more than once then this won't\n> > be reset to zero, as the original behavior was.\n> >\n> > > +\n> > > +     g_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\", group_id, stream_id_num++);\n> > > +     g_autofree gchar *stream_id = gst_pad_create_stream_id(pad, element, stream_id_intermediate);\n> > > +     GstEvent *event = gst_event_new_stream_start(stream_id);\n> > > +     gst_event_set_group_id(event, group_id);\n> > > +     gst_pad_push_event(pad, event);\n> > > +}\n> > > +\n> > >  void\n> > >  gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer)\n> > >  {\n> > > diff --git a/src/gstreamer/gstlibcamerapad.h b/src/gstreamer/gstlibcamerapad.h\n> > > index 779f2d13..7693374f 100644\n> > > --- a/src/gstreamer/gstlibcamerapad.h\n> > > +++ b/src/gstreamer/gstlibcamerapad.h\n> > > @@ -26,6 +26,8 @@ void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);\n> > >\n> > >  libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);\n> > >\n> > > +void gst_libcamera_pad_push_stream_start(GstPad *pad, const guint group_id);\n> > > +\n> > >  void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer);\n> > >\n> > >  GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad);\n> > > diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp\n> > > index 79b0d867..f9ac50ef 100644\n> > > --- a/src/gstreamer/gstlibcamerasrc.cpp\n> > > +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> > > @@ -364,15 +364,10 @@ gst_libcamera_src_task_enter(GstTask *task, [[maybe_unused]] GThread *thread,\n> > >       if (state->group_id_ == 0) {\n> > >               state->group_id_ = gst_util_group_id_next();\n> > >       }\n> > > -     gint stream_id_num = 0;\n> > >       StreamRoles roles;\n> > >       for (GstPad *srcpad : state->srcpads_) {\n> > >               /* Create stream-id and push stream-start. */\n> > > -             g_autofree gchar *stream_id_intermediate = g_strdup_printf(\"%i%i\", state->group_id_, stream_id_num++);\n> > > -             g_autofree gchar *stream_id = gst_pad_create_stream_id(srcpad, GST_ELEMENT(self), stream_id_intermediate);\n> > > -             GstEvent *event = gst_event_new_stream_start(stream_id);\n> > > -             gst_event_set_group_id(event, state->group_id_);\n> > > -             gst_pad_push_event(srcpad, event);\n> > > +             gst_libcamera_pad_push_stream_start(srcpad, state->group_id_);\n> > >\n> > >               /* Collect the streams roles for the next iteration. */\n> > >               roles.push_back(gst_libcamera_pad_get_role(srcpad));","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 4A186C322B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jul 2021 15:06:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AC48F6853E;\n\tMon, 19 Jul 2021 17:06:08 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 747EF6851F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jul 2021 17:06:07 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C4CF2465;\n\tMon, 19 Jul 2021 17:06:06 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qFxf7pv3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1626707167;\n\tbh=Dcd9rWKE/6neJ7cWlFeY7He6YtxG0UcE1CAMUjwfHxY=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=qFxf7pv3dX3+GsKAoHgYFLoXEdaFKcGex6TaaEZ+Rdvn1RGVYsR/aKLMyjmk5gXJX\n\tzOZT4CSf6ZCI+v8J2WZxoOY4v4tPEFEAMs/ZOpTYQvFnuVvAOu+NAeCxpCYOoE5tni\n\tTiLosxR0nYlVM0VDKJMI11gXcMyp9IsgyjP4ltSY=","Date":"Mon, 19 Jul 2021 18:06:02 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Vedant Paranjape <vedantparanjape160201@gmail.com>","Message-ID":"<YPWU2oBbsIfCsIQV@pendragon.ideasonboard.com>","References":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>\n\t<20210719072424.GM2395@pyrite.rasen.tech>\n\t<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18237,"web_url":"https://patchwork.libcamera.org/comment/18237/","msgid":"<CACGrz-M0EAsvgYgYeBc5kcfXN+NmUP0jpD_OsrVuvBf2OmFV=A@mail.gmail.com>","date":"2021-07-20T11:40:32","subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","submitter":{"id":85,"url":"https://patchwork.libcamera.org/api/people/85/","name":"Vedant Paranjape","email":"vedantparanjape160201@gmail.com"},"content":"Hi Laurent,\nSure, I will divide it into 2 patches.\n\nRegards,\nVedant Paranjape\n\nOn Mon, Jul 19, 2021 at 8:36 PM Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> On Mon, Jul 19, 2021 at 12:56:55PM +0530, Vedant Paranjape wrote:\n> > Hi Paul,\n> > Yes, it is expected behaviour. group_id should stay same throughout\n> > lifetime of application.\n> >\n> > I will remove the non-functional part from commit message.\n>\n> Better, please split the patch in two, with the non-functional\n> refactoring and the functional change in two separate patches.\n>\n> > On Mon, 19 Jul, 2021, 12:54 , <paul.elder@ideasonboard.com> wrote:\n> > > On Sun, Jul 18, 2021 at 12:18:50PM +0530, Vedant Paranjape wrote:\n> > > > This patch creates gst_libcamera_pad_push_stream_start function to\n> > > > create stream id and to push the stream start. This is a non\n> functional\n> > > > change.\n> > > >\n> > > > Signed-off-by: Vedant Paranjape <vedantparanjape160201@gmail.com>\n> > > > ---\n> > > >  src/gstreamer/gstlibcamerapad.cpp | 13 +++++++++++++\n> > > >  src/gstreamer/gstlibcamerapad.h   |  2 ++\n> > > >  src/gstreamer/gstlibcamerasrc.cpp |  7 +------\n> > > >  3 files changed, 16 insertions(+), 6 deletions(-)\n> > > >\n> > > > diff --git a/src/gstreamer/gstlibcamerapad.cpp\n> b/src/gstreamer/gstlibcamerapad.cpp\n> > > > index c00e81c8..6f889472 100644\n> > > > --- a/src/gstreamer/gstlibcamerapad.cpp\n> > > > +++ b/src/gstreamer/gstlibcamerapad.cpp\n> > > > @@ -155,6 +155,19 @@ gst_libcamera_pad_get_stream(GstPad *pad)\n> > > >       return nullptr;\n> > > >  }\n> > > >\n> > > > +void\n> > > > +gst_libcamera_pad_push_stream_start(GstPad *pad, const guint\n> group_id)\n> > > > +{\n> > > > +     GstElement *element = gst_pad_get_parent_element(pad);\n> > > > +     static gint stream_id_num = 0;\n> > >\n> > > If gst_libcamera_src_task_enter() is called more than once then this\n> won't\n> > > be reset to zero, as the original behavior was.\n> > >\n> > > > +\n> > > > +     g_autofree gchar *stream_id_intermediate =\n> g_strdup_printf(\"%i%i\", group_id, stream_id_num++);\n> > > > +     g_autofree gchar *stream_id = gst_pad_create_stream_id(pad,\n> element, stream_id_intermediate);\n> > > > +     GstEvent *event = gst_event_new_stream_start(stream_id);\n> > > > +     gst_event_set_group_id(event, group_id);\n> > > > +     gst_pad_push_event(pad, event);\n> > > > +}\n> > > > +\n> > > >  void\n> > > >  gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer)\n> > > >  {\n> > > > diff --git a/src/gstreamer/gstlibcamerapad.h\n> b/src/gstreamer/gstlibcamerapad.h\n> > > > index 779f2d13..7693374f 100644\n> > > > --- a/src/gstreamer/gstlibcamerapad.h\n> > > > +++ b/src/gstreamer/gstlibcamerapad.h\n> > > > @@ -26,6 +26,8 @@ void gst_libcamera_pad_set_pool(GstPad *pad,\n> GstLibcameraPool *pool);\n> > > >\n> > > >  libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);\n> > > >\n> > > > +void gst_libcamera_pad_push_stream_start(GstPad *pad, const guint\n> group_id);\n> > > > +\n> > > >  void gst_libcamera_pad_queue_buffer(GstPad *pad, GstBuffer *buffer);\n> > > >\n> > > >  GstFlowReturn gst_libcamera_pad_push_pending(GstPad *pad);\n> > > > diff --git a/src/gstreamer/gstlibcamerasrc.cpp\n> b/src/gstreamer/gstlibcamerasrc.cpp\n> > > > index 79b0d867..f9ac50ef 100644\n> > > > --- a/src/gstreamer/gstlibcamerasrc.cpp\n> > > > +++ b/src/gstreamer/gstlibcamerasrc.cpp\n> > > > @@ -364,15 +364,10 @@ gst_libcamera_src_task_enter(GstTask *task,\n> [[maybe_unused]] GThread *thread,\n> > > >       if (state->group_id_ == 0) {\n> > > >               state->group_id_ = gst_util_group_id_next();\n> > > >       }\n> > > > -     gint stream_id_num = 0;\n> > > >       StreamRoles roles;\n> > > >       for (GstPad *srcpad : state->srcpads_) {\n> > > >               /* Create stream-id and push stream-start. */\n> > > > -             g_autofree gchar *stream_id_intermediate =\n> g_strdup_printf(\"%i%i\", state->group_id_, stream_id_num++);\n> > > > -             g_autofree gchar *stream_id =\n> gst_pad_create_stream_id(srcpad, GST_ELEMENT(self), stream_id_intermediate);\n> > > > -             GstEvent *event =\n> gst_event_new_stream_start(stream_id);\n> > > > -             gst_event_set_group_id(event, state->group_id_);\n> > > > -             gst_pad_push_event(srcpad, event);\n> > > > +             gst_libcamera_pad_push_stream_start(srcpad,\n> state->group_id_);\n> > > >\n> > > >               /* Collect the streams roles for the next iteration. */\n> > > >               roles.push_back(gst_libcamera_pad_get_role(srcpad));\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\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 18859C0109\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Jul 2021 11:40:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 72EE568541;\n\tTue, 20 Jul 2021 13:40:45 +0200 (CEST)","from mail-yb1-xb2c.google.com (mail-yb1-xb2c.google.com\n\t[IPv6:2607:f8b0:4864:20::b2c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9C45C68521\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Jul 2021 13:40:44 +0200 (CEST)","by mail-yb1-xb2c.google.com with SMTP id i18so32218479yba.13\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Jul 2021 04:40:44 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"L8M8NCCy\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=uhfTSLGYAPf6ZK6A/kYf2YoL5BBomd4kL1cWemJ9iI0=;\n\tb=L8M8NCCyQN2zysE5hpZ/1XBgNKNnb9oeLjyVHjt8Z532h+k9umvmEmSBlTAuS4Bw0h\n\tkImLn5ze2IjC3iZ4djbmLLf/2H+dwg0XenB3IrXzCLfPQ4ecbISRTqj6jxWTZrqzyCvZ\n\toEOHKHpFAStsDdgCQ94tkZcPD1r4uCH7Afdpnwx36z9zrxAvCULTntMyJaXQlZQ8K30w\n\tq97Q3O07LT609wAliU6vLPRnJtbcfhpa3eupLLhqAnwZwiiB9mkKCExKuxeSmfEcCH6M\n\tS1gz0fFlq/v0zos5W9VQ8r2dO8S0A8v93eVGUCNWsB6zyTzhMcX87sI0AWfP0hrx6o72\n\t5i4g==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=uhfTSLGYAPf6ZK6A/kYf2YoL5BBomd4kL1cWemJ9iI0=;\n\tb=A3oLAPNeP+0R9MwQP5TbALZN8+ymBTIYGgJS48Ik7eKfzVbKWSUS1yxV4v9qVVSSlj\n\tlk7llk066KrG1wce0XoEuLrIp/QttcGmhglwP2q0S6CZYz0vPvScsMWYhFV45Xur/Wdi\n\tduPjbSrWhv+bx/88UBtd2JkERHcdWZ4TrFmXzLhAyqpHjSQZrK6d2U1snz0dlida7ULK\n\tOcR5k/Vl9nuSYtwcXkseP3k8Co0Yxt+qx6ZMmnlTPl1V/0NzMhQu+mg6fz5Wg2Klq3Ix\n\t1B5NVCF9KHyhUadh+K+UXVKcYvrCb2+b8lFNMKSox3C0E0HhYcnQgE4N75WXIDTwgN7s\n\tA6bQ==","X-Gm-Message-State":"AOAM533YfURpBGjl1RkFrG2X4tWabuVcq4OluolMxGKAwWazLfVAnmSN\n\tTYDj6EMh7S+uHsetW/MiyDXfz41lAVwyvSLguY8=","X-Google-Smtp-Source":"ABdhPJyrSl+FYe6qhh/3jcZGt9GmqZutZ6splzpM6nhePpy6fae0jV0iiKLpN5Muh3hNDwjZg+PuUzYH+eAVkJvadAk=","X-Received":"by 2002:a25:d310:: with SMTP id\n\te16mr40770475ybf.63.1626781243266; \n\tTue, 20 Jul 2021 04:40:43 -0700 (PDT)","MIME-Version":"1.0","References":"<20210718064850.837873-1-vedantparanjape160201@gmail.com>\n\t<20210719072424.GM2395@pyrite.rasen.tech>\n\t<CACGrz-NjPjpouApPcn=yrDAcxjRBJcGDtNUpeBJspzQ9_Gx_Mg@mail.gmail.com>\n\t<YPWU2oBbsIfCsIQV@pendragon.ideasonboard.com>","In-Reply-To":"<YPWU2oBbsIfCsIQV@pendragon.ideasonboard.com>","From":"Vedant Paranjape <vedantparanjape160201@gmail.com>","Date":"Tue, 20 Jul 2021 17:10:32 +0530","Message-ID":"<CACGrz-M0EAsvgYgYeBc5kcfXN+NmUP0jpD_OsrVuvBf2OmFV=A@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000021da4605c78c868b\"","Subject":"Re: [libcamera-devel] [PATCH v1] gstreamer: Factor out\n\t_pad_push_stream_start from _task_enter","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]