[{"id":21463,"web_url":"https://patchwork.libcamera.org/comment/21463/","msgid":"<YaaQDqnAIlerOYUj@pendragon.ideasonboard.com>","date":"2021-11-30T20:56:46","subject":"Re: [libcamera-devel] [PATCH] test: gstreamer: Avoid call to\n\tdeprecated gst_element_get_request_pad()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Xavier,\n\n(CC'ing Nicolas)\n\nThank you for the patch.\n\nOn Tue, Nov 30, 2021 at 07:29:43PM +0100, Xavier Roumegue (OSS) wrote:\n> From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>\n> \n> gst_element_get_request_pad() is being replaced by gst_element_request_simple()\n> since 1.19.1, throwing a warning in case of use until its definitive\n> replacement on 1.20.\n> \n> Hence, prefer using gst_element_request_simple() in case gstreamer\n> version is >= 1.19.1 to avoid the compilation error below (tested on f35):\n> \n> [3/88] Compiling C++ object test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o\n> FAILED: test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o\n> c++ -Itest/gstreamer/multi_stream_test.p -Itest/gstreamer -I../test/gstreamer -Itest/libtest -I../test/libtest -Iinclude -I../include -Iinclude/libcamera/ipa -Iinclude/libcamera -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -std=c++17 -g -Wshadow -include config.h -pthread -DLIBCAMERA_BASE_PRIVATE -MD -MQ test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o -MF test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o.d -o test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o -c ../test/gstreamer/gstreamer_multi_stream_test.cpp\n> ../test/gstreamer/gstreamer_multi_stream_test.cpp: In member function ‘virtual int GstreamerMultiStreamTest::run()’:\n> ../test/gstreamer/gstreamer_multi_stream_test.cpp:97:72: error: ‘GstPad* gst_element_get_request_pad(GstElement*, const gchar*)’ is deprecated: Use 'gst_element_request_pad_simple' instead [-Werror=deprecated-declarations]\n>    97 |                 g_autoptr(GstPad) request_pad = GST_ELEMENT_REQUEST_PAD(libcameraSrc_, \"src_%u\");\n>       |                                                                        ^\n> In file included from /usr/include/gstreamer-1.0/gst/gstbin.h:27,\n>                  from /usr/include/gstreamer-1.0/gst/gst.h:35,\n>                  from ../test/gstreamer/gstreamer_multi_stream_test.cpp:13:\n> /usr/include/gstreamer-1.0/gst/gstelement.h:1042:25: note: declared here\n>  1042 | GstPad*                 gst_element_get_request_pad     (GstElement *element, const gchar *name);\n>       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~\n> cc1plus: all warnings being treated as errors\n> \n> Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>\n> ---\n>  test/gstreamer/gstreamer_multi_stream_test.cpp | 8 +++++++-\n>  1 file changed, 7 insertions(+), 1 deletion(-)\n> \n> diff --git a/test/gstreamer/gstreamer_multi_stream_test.cpp b/test/gstreamer/gstreamer_multi_stream_test.cpp\n> index d3d7a9d3..1e3c9f18 100644\n> --- a/test/gstreamer/gstreamer_multi_stream_test.cpp\n> +++ b/test/gstreamer/gstreamer_multi_stream_test.cpp\n> @@ -15,6 +15,12 @@\n>  #include \"gstreamer_test.h\"\n>  #include \"test.h\"\n>  \n> +#if GST_CHECK_VERSION(1, 19, 1)\n> +#define GST_ELEMENT_REQUEST_PAD gst_element_request_pad_simple\n> +#else\n> +#define GST_ELEMENT_REQUEST_PAD gst_element_get_request_pad\n> +#endif\n\nI wonder if we could use the new function name unconditionally in the\ncode, and define a wrapper for older gstreamer versions:\n\n#if !GST_CHECK_VERSION(1, 19, 1)\nstatic inline GstPad *gst_element_request_pad_simple(GstElement *element,\n\t\t\t\t\t\t     const gchar *name)\n{\n\treturn gst_element_get_request_pad(element, name);\n}\n#endif\n\n> +\n>  using namespace std;\n>  \n>  class GstreamerMultiStreamTest : public GstreamerTest, public Test\n> @@ -87,7 +93,7 @@ protected:\n>  \t\t\t\t stream0_, stream1_, NULL);\n>  \n>  \t\tg_autoptr(GstPad) src_pad = gst_element_get_static_pad(libcameraSrc_, \"src\");\n> -\t\tg_autoptr(GstPad) request_pad = gst_element_get_request_pad(libcameraSrc_, \"src_%u\");\n> +\t\tg_autoptr(GstPad) request_pad = GST_ELEMENT_REQUEST_PAD(libcameraSrc_, \"src_%u\");\n>  \n>  \t\t{\n>  \t\t\tg_autoptr(GstPad) queue0_sink_pad = gst_element_get_static_pad(stream0_, \"sink\");","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 EE533BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 30 Nov 2021 20:57:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 50B1560720;\n\tTue, 30 Nov 2021 21:57:13 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3AB22605C4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 30 Nov 2021 21:57:12 +0100 (CET)","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 B14B28F0;\n\tTue, 30 Nov 2021 21:57:11 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ogLosSpn\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1638305831;\n\tbh=7wj/3V7e+WUUiLe7qiiedqMK0ImSktpgB1hWPKHI5V8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=ogLosSpnsw0lXvXUdS+GfGOX6MJ+3VNEIGYBuFSMf+5/MrPrI6WvH46Iob20HAC5I\n\tD7gZh7evKxP/DlAx78VLg+qJJ1TXVDdtJ/mPslR2TfECqHfhiuktUUQPYuKeM2Pwrh\n\tmNBwLMO7/mN0JSLBpco/ZUP9lKOdqV1iYbx/YjLA=","Date":"Tue, 30 Nov 2021 22:56:46 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"\"Xavier Roumegue (OSS)\" <xavier.roumegue@oss.nxp.com>","Message-ID":"<YaaQDqnAIlerOYUj@pendragon.ideasonboard.com>","References":"<20211130182943.155481-1-xavier.roumegue@oss.nxp.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20211130182943.155481-1-xavier.roumegue@oss.nxp.com>","Subject":"Re: [libcamera-devel] [PATCH] test: gstreamer: Avoid call to\n\tdeprecated gst_element_get_request_pad()","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,\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":21522,"web_url":"https://patchwork.libcamera.org/comment/21522/","msgid":"<83fe5f811d95d235a881187f6e819052a59c31e6.camel@collabora.com>","date":"2021-12-01T13:17:32","subject":"Re: [libcamera-devel] [PATCH] test: gstreamer: Avoid call to\n\tdeprecated gst_element_get_request_pad()","submitter":{"id":31,"url":"https://patchwork.libcamera.org/api/people/31/","name":"Nicolas Dufresne","email":"nicolas.dufresne@collabora.com"},"content":"Le mardi 30 novembre 2021 à 22:56 +0200, Laurent Pinchart a écrit :\n> Hi Xavier,\n> \n> (CC'ing Nicolas)\n> \n> Thank you for the patch.\n> \n> On Tue, Nov 30, 2021 at 07:29:43PM +0100, Xavier Roumegue (OSS) wrote:\n> > From: Xavier Roumegue <xavier.roumegue@oss.nxp.com>\n> > \n> > gst_element_get_request_pad() is being replaced by gst_element_request_simple()\n> > since 1.19.1, throwing a warning in case of use until its definitive\n> > replacement on 1.20.\n> > \n> > Hence, prefer using gst_element_request_simple() in case gstreamer\n> > version is >= 1.19.1 to avoid the compilation error below (tested on f35):\n> > \n> > [3/88] Compiling C++ object test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o\n> > FAILED: test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o\n> > c++ -Itest/gstreamer/multi_stream_test.p -Itest/gstreamer -I../test/gstreamer -Itest/libtest -I../test/libtest -Iinclude -I../include -Iinclude/libcamera/ipa -Iinclude/libcamera -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-4 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -std=c++17 -g -Wshadow -include config.h -pthread -DLIBCAMERA_BASE_PRIVATE -MD -MQ test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o -MF test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o.d -o test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o -c ../test/gstreamer/gstreamer_multi_stream_test.cpp\n> > ../test/gstreamer/gstreamer_multi_stream_test.cpp: In member function ‘virtual int GstreamerMultiStreamTest::run()’:\n> > ../test/gstreamer/gstreamer_multi_stream_test.cpp:97:72: error: ‘GstPad* gst_element_get_request_pad(GstElement*, const gchar*)’ is deprecated: Use 'gst_element_request_pad_simple' instead [-Werror=deprecated-declarations]\n> >    97 |                 g_autoptr(GstPad) request_pad = GST_ELEMENT_REQUEST_PAD(libcameraSrc_, \"src_%u\");\n> >       |                                                                        ^\n> > In file included from /usr/include/gstreamer-1.0/gst/gstbin.h:27,\n> >                  from /usr/include/gstreamer-1.0/gst/gst.h:35,\n> >                  from ../test/gstreamer/gstreamer_multi_stream_test.cpp:13:\n> > /usr/include/gstreamer-1.0/gst/gstelement.h:1042:25: note: declared here\n> >  1042 | GstPad*                 gst_element_get_request_pad     (GstElement *element, const gchar *name);\n> >       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~\n> > cc1plus: all warnings being treated as errors\n> > \n> > Signed-off-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>\n> > ---\n> >  test/gstreamer/gstreamer_multi_stream_test.cpp | 8 +++++++-\n> >  1 file changed, 7 insertions(+), 1 deletion(-)\n> > \n> > diff --git a/test/gstreamer/gstreamer_multi_stream_test.cpp b/test/gstreamer/gstreamer_multi_stream_test.cpp\n> > index d3d7a9d3..1e3c9f18 100644\n> > --- a/test/gstreamer/gstreamer_multi_stream_test.cpp\n> > +++ b/test/gstreamer/gstreamer_multi_stream_test.cpp\n> > @@ -15,6 +15,12 @@\n> >  #include \"gstreamer_test.h\"\n> >  #include \"test.h\"\n> >  \n> > +#if GST_CHECK_VERSION(1, 19, 1)\n> > +#define GST_ELEMENT_REQUEST_PAD gst_element_request_pad_simple\n> > +#else\n> > +#define GST_ELEMENT_REQUEST_PAD gst_element_get_request_pad\n> > +#endif\n> \n> I wonder if we could use the new function name unconditionally in the\n> code, and define a wrapper for older gstreamer versions:\n\nI would also prefer this, it keeps the code more readable. Notice this is a\nrename, nothing have changed otherwise.\n\n> \n> #if !GST_CHECK_VERSION(1, 19, 1)\n> static inline GstPad *gst_element_request_pad_simple(GstElement *element,\n> \t\t\t\t\t\t     const gchar *name)\n> {\n> \treturn gst_element_get_request_pad(element, name);\n> }\n> #endif\n> \n> > +\n> >  using namespace std;\n> >  \n> >  class GstreamerMultiStreamTest : public GstreamerTest, public Test\n> > @@ -87,7 +93,7 @@ protected:\n> >  \t\t\t\t stream0_, stream1_, NULL);\n> >  \n> >  \t\tg_autoptr(GstPad) src_pad = gst_element_get_static_pad(libcameraSrc_, \"src\");\n> > -\t\tg_autoptr(GstPad) request_pad = gst_element_get_request_pad(libcameraSrc_, \"src_%u\");\n> > +\t\tg_autoptr(GstPad) request_pad = GST_ELEMENT_REQUEST_PAD(libcameraSrc_, \"src_%u\");\n> >  \n> >  \t\t{\n> >  \t\t\tg_autoptr(GstPad) queue0_sink_pad = gst_element_get_static_pad(stream0_, \"sink\");\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 89F5BBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  1 Dec 2021 13:17:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EC63F6071A;\n\tWed,  1 Dec 2021 14:17:47 +0100 (CET)","from bhuna.collabora.co.uk (bhuna.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 238046011A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  1 Dec 2021 14:17:46 +0100 (CET)","from [127.0.0.1] (localhost [127.0.0.1])\n\t(Authenticated sender: nicolas) with ESMTPSA id E03A11F45ADE"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=collabora.com header.i=@collabora.com\n\theader.b=\"WuaoOcW/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=simple/simple; d=collabora.com; s=mail; \n\tt=1638364665; bh=eHVzUshjjdih5gqlVgCck7UpNCOda8704d9VzxS9f2I=;\n\th=Subject:From:To:Cc:Date:In-Reply-To:References:From;\n\tb=WuaoOcW/yCAW48vIRsosIWXTuuwp5aNDe3ACzeXcYvofvyYczoBRUNusYl02qKV5H\n\tD2Xy3u/9E+gVcn5VIaBCQV59aDhVamK5YT7MXZrRfdGTzTCKDXyeD7BtLonSr5fB19\n\tqDwol7a2TqUUDKcDYqSJRwnSQythHsYbORbLtecYabtJiBwhZdpr4OoA77+6/vjxy0\n\t86u6U3xRcyuoT1N91EpWpmXBtI9ed4C0mByhk60/AAgidIZRXUg3ul+XIrYpy7LvNG\n\tCEW7x5sPQMnZvhnMxkTXrBHEGv0kxe63NdpV80DckMfV/upE4+O3uwe35WZuQ/0nMY\n\tVg7Jm/1qROGXA==","Message-ID":"<83fe5f811d95d235a881187f6e819052a59c31e6.camel@collabora.com>","From":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>, \"Xavier Roumegue\n\t(OSS)\" <xavier.roumegue@oss.nxp.com>","Date":"Wed, 01 Dec 2021 08:17:32 -0500","In-Reply-To":"<YaaQDqnAIlerOYUj@pendragon.ideasonboard.com>","References":"<20211130182943.155481-1-xavier.roumegue@oss.nxp.com>\n\t<YaaQDqnAIlerOYUj@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","User-Agent":"Evolution 3.42.1 (3.42.1-1.fc35) ","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH] test: gstreamer: Avoid call to\n\tdeprecated gst_element_get_request_pad()","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>"}}]