[libcamera-devel] [PATCH] test: gstreamer: Avoid call to deprecated gst_element_get_request_pad()

Nicolas Dufresne nicolas.dufresne at collabora.com
Wed Dec 1 14:17:32 CET 2021


Le mardi 30 novembre 2021 à 22:56 +0200, Laurent Pinchart a écrit :
> Hi Xavier,
> 
> (CC'ing Nicolas)
> 
> Thank you for the patch.
> 
> On Tue, Nov 30, 2021 at 07:29:43PM +0100, Xavier Roumegue (OSS) wrote:
> > From: Xavier Roumegue <xavier.roumegue at oss.nxp.com>
> > 
> > gst_element_get_request_pad() is being replaced by gst_element_request_simple()
> > since 1.19.1, throwing a warning in case of use until its definitive
> > replacement on 1.20.
> > 
> > Hence, prefer using gst_element_request_simple() in case gstreamer
> > version is >= 1.19.1 to avoid the compilation error below (tested on f35):
> > 
> > [3/88] Compiling C++ object test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o
> > FAILED: test/gstreamer/multi_stream_test.p/gstreamer_multi_stream_test.cpp.o
> > 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
> > ../test/gstreamer/gstreamer_multi_stream_test.cpp: In member function ‘virtual int GstreamerMultiStreamTest::run()’:
> > ../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]
> >    97 |                 g_autoptr(GstPad) request_pad = GST_ELEMENT_REQUEST_PAD(libcameraSrc_, "src_%u");
> >       |                                                                        ^
> > In file included from /usr/include/gstreamer-1.0/gst/gstbin.h:27,
> >                  from /usr/include/gstreamer-1.0/gst/gst.h:35,
> >                  from ../test/gstreamer/gstreamer_multi_stream_test.cpp:13:
> > /usr/include/gstreamer-1.0/gst/gstelement.h:1042:25: note: declared here
> >  1042 | GstPad*                 gst_element_get_request_pad     (GstElement *element, const gchar *name);
> >       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> > cc1plus: all warnings being treated as errors
> > 
> > Signed-off-by: Xavier Roumegue <xavier.roumegue at oss.nxp.com>
> > ---
> >  test/gstreamer/gstreamer_multi_stream_test.cpp | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> > 
> > diff --git a/test/gstreamer/gstreamer_multi_stream_test.cpp b/test/gstreamer/gstreamer_multi_stream_test.cpp
> > index d3d7a9d3..1e3c9f18 100644
> > --- a/test/gstreamer/gstreamer_multi_stream_test.cpp
> > +++ b/test/gstreamer/gstreamer_multi_stream_test.cpp
> > @@ -15,6 +15,12 @@
> >  #include "gstreamer_test.h"
> >  #include "test.h"
> >  
> > +#if GST_CHECK_VERSION(1, 19, 1)
> > +#define GST_ELEMENT_REQUEST_PAD gst_element_request_pad_simple
> > +#else
> > +#define GST_ELEMENT_REQUEST_PAD gst_element_get_request_pad
> > +#endif
> 
> I wonder if we could use the new function name unconditionally in the
> code, and define a wrapper for older gstreamer versions:

I would also prefer this, it keeps the code more readable. Notice this is a
rename, nothing have changed otherwise.

> 
> #if !GST_CHECK_VERSION(1, 19, 1)
> static inline GstPad *gst_element_request_pad_simple(GstElement *element,
> 						     const gchar *name)
> {
> 	return gst_element_get_request_pad(element, name);
> }
> #endif
> 
> > +
> >  using namespace std;
> >  
> >  class GstreamerMultiStreamTest : public GstreamerTest, public Test
> > @@ -87,7 +93,7 @@ protected:
> >  				 stream0_, stream1_, NULL);
> >  
> >  		g_autoptr(GstPad) src_pad = gst_element_get_static_pad(libcameraSrc_, "src");
> > -		g_autoptr(GstPad) request_pad = gst_element_get_request_pad(libcameraSrc_, "src_%u");
> > +		g_autoptr(GstPad) request_pad = GST_ELEMENT_REQUEST_PAD(libcameraSrc_, "src_%u");
> >  
> >  		{
> >  			g_autoptr(GstPad) queue0_sink_pad = gst_element_get_static_pad(stream0_, "sink");
> 



More information about the libcamera-devel mailing list