From fa9a9d7f6b6452bf8d0fdd5de03512547b84204a Mon Sep 17 00:00:00 2001 From: Vedant Paranjape Date: Tue, 21 Sep 2021 23:09:54 +0530 Subject: test: gstreamer: Simplify single stream test using functions from GstUtils Simplify memory handling and complexity of the test by using gst_parse_bin_from_description_full [1]. [1]: https://gstreamer.freedesktop.org/documentation/gstreamer/gstutils.html?gi-language=c#gst_parse_bin_from_description_full Signed-off-by: Vedant Paranjape Reviewed-by: Nicolas Dufresne Reviewed-by: Paul Elder Signed-off-by: Paul Elder --- test/gstreamer/gstreamer_single_stream_test.cpp | 32 +++++++++++-------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/test/gstreamer/gstreamer_single_stream_test.cpp b/test/gstreamer/gstreamer_single_stream_test.cpp index 2b561d6b..4a12e795 100644 --- a/test/gstreamer/gstreamer_single_stream_test.cpp +++ b/test/gstreamer/gstreamer_single_stream_test.cpp @@ -33,20 +33,18 @@ protected: if (status_ != TestPass) return status_; - g_autoptr(GstElement) convert0 = gst_element_factory_make("videoconvert", "convert0"); - g_autoptr(GstElement) sink0 = gst_element_factory_make("fakesink", "sink0"); - g_object_ref_sink(convert0); - g_object_ref_sink(sink0); - - if (!convert0 || !sink0) { - g_printerr("Not all elements could be created. %p.%p\n", - convert0, sink0); - + const gchar *streamDescription = "videoconvert ! fakesink"; + g_autoptr(GError) error0 = NULL; + stream0_ = gst_parse_bin_from_description_full(streamDescription, TRUE, + NULL, + GST_PARSE_FLAG_FATAL_ERRORS, + &error0); + + if (!stream0_) { + g_printerr("Bin could not be created (%s)\n", error0->message); return TestFail; } - - convert0_ = reinterpret_cast(g_steal_pointer(&convert0)); - sink0_ = reinterpret_cast(g_steal_pointer(&sink0)); + g_object_ref_sink(stream0_); if (createPipeline() != TestPass) return TestFail; @@ -57,8 +55,8 @@ protected: int run() override { /* Build the pipeline */ - gst_bin_add_many(GST_BIN(pipeline_), libcameraSrc_, convert0_, sink0_, NULL); - if (gst_element_link_many(libcameraSrc_, convert0_, sink0_, NULL) != TRUE) { + gst_bin_add_many(GST_BIN(pipeline_), libcameraSrc_, stream0_, NULL); + if (gst_element_link(libcameraSrc_, stream0_) != TRUE) { g_printerr("Elements could not be linked.\n"); return TestFail; } @@ -74,13 +72,11 @@ protected: void cleanup() override { - g_clear_object(&convert0_); - g_clear_object(&sink0_); + g_clear_object(&stream0_); } private: - GstElement *convert0_; - GstElement *sink0_; + GstElement *stream0_; }; TEST_REGISTER(GstreamerSingleStreamTest) -- cgit v1.2.1