[libcamera-devel,v2,2/3] test: gstreamer: Simplify single stream test using functions from GstUtils
diff mbox series

Message ID 20210921173955.20408-2-vedantparanjape160201@gmail.com
State Accepted
Commit fa9a9d7f6b6452bf8d0fdd5de03512547b84204a
Headers show
Series
  • [libcamera-devel,v2,1/3] test: gstreamer_single_stream_test: Fix memory leak
Related show

Commit Message

Vedant Paranjape Sept. 21, 2021, 5:39 p.m. UTC
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 <vedantparanjape160201@gmail.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
---
 .../gstreamer_single_stream_test.cpp          | 32 ++++++++-----------
 1 file changed, 14 insertions(+), 18 deletions(-)

Comments

Paul Elder Sept. 22, 2021, 4:56 a.m. UTC | #1
Hi Vedant,

On Tue, Sep 21, 2021 at 11:09:54PM +0530, Vedant Paranjape wrote:
> 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 <vedantparanjape160201@gmail.com>
> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

> ---
>  .../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 2b561d6bf9f2..bd74ada0e244 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<GstElement *>(g_steal_pointer(&convert0));
> -		sink0_ = reinterpret_cast<GstElement *>(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)
> -- 
> 2.25.1
>

Patch
diff mbox series

diff --git a/test/gstreamer/gstreamer_single_stream_test.cpp b/test/gstreamer/gstreamer_single_stream_test.cpp
index 2b561d6bf9f2..bd74ada0e244 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<GstElement *>(g_steal_pointer(&convert0));
-		sink0_ = reinterpret_cast<GstElement *>(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)