[PATCH v2 2/3] test: gstreamer: Simplify single stream test

Kieran Bingham kieran.bingham at ideasonboard.com
Thu May 9 16:50:18 CEST 2024


Quoting Nicolas Dufresne (2024-03-05 15:30:57)
> From: Nicolas Dufresne <nicolas.dufresne at collabora.com>
> 

Why? Is it just better?

I'll try to interpret as I read the patch. Please correct me whereever
I'm wrong.

"""
The single stream test for the gstreamer component has a simple pipeline
construction using only a fakesink.

The impelementation currently supports connecting to a more complex
stream construction defined by the streamDescription, but this is over
engineered for the simple need to start a stream to capture and discard
the frames.

Convert the use of gst_parse_bin_from_description_full() which uses only
a single element 'fakesink' to construct the fakesink directly and link
it to the libcamerasrc.
"""

> Signed-off-by: Nicolas Dufresne <nicolas.dufresne at collabora.com>


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
>  .../gstreamer_single_stream_test.cpp          | 27 +++++++------------
>  1 file changed, 9 insertions(+), 18 deletions(-)
> 
> diff --git a/test/gstreamer/gstreamer_single_stream_test.cpp b/test/gstreamer/gstreamer_single_stream_test.cpp
> index 301e4a93..815c6609 100644
> --- a/test/gstreamer/gstreamer_single_stream_test.cpp
> +++ b/test/gstreamer/gstreamer_single_stream_test.cpp
> @@ -29,30 +29,21 @@ protected:
>                 if (status_ != TestPass)
>                         return status_;
>  
> -               const gchar *streamDescription = "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);
> +               fakesink_ = gst_element_factory_make("fakesink", nullptr);
> +               if (!fakesink_) {
> +                       g_printerr("Your installation is missing 'fakesink'\n");
>                         return TestFail;
>                 }
> -               g_object_ref_sink(stream0_);
> -
> -               if (createPipeline() != TestPass)
> -                       return TestFail;
> +               g_object_ref_sink(fakesink_);
>  
> -               return TestPass;
> +               return createPipeline();
>         }
>  
>         int run() override
>         {
>                 /* Build the pipeline */
> -               gst_bin_add_many(GST_BIN(pipeline_), libcameraSrc_, stream0_, NULL);
> -               if (gst_element_link(libcameraSrc_, stream0_) != TRUE) {
> +               gst_bin_add_many(GST_BIN(pipeline_), libcameraSrc_, fakesink_, nullptr);
> +               if (!gst_element_link(libcameraSrc_, fakesink_)) {
>                         g_printerr("Elements could not be linked.\n");
>                         return TestFail;
>                 }
> @@ -68,11 +59,11 @@ protected:
>  
>         void cleanup() override
>         {
> -               g_clear_object(&stream0_);
> +               g_clear_object(&fakesink_);
>         }
>  
>  private:
> -       GstElement *stream0_;
> +       GstElement *fakesink_;
>  };
>  
>  TEST_REGISTER(GstreamerSingleStreamTest)
> -- 
> 2.43.2
>


More information about the libcamera-devel mailing list