[libcamera-devel] [PATCH] test: gstreamer_single_stream: Check for cameras before running

Nicolas Dufresne nicolas at ndufresne.ca
Thu Jul 21 15:49:17 CEST 2022


Hi Umang,

thanks for the patch ...

Le jeudi 21 juillet 2022 à 16:00 +0530, Umang Jain via libcamera-devel a écrit :
> Before running or setting up the pipeline, check for cameras availablity
> first. If no cameras are available, skip the test.
> 
> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
>  test/gstreamer/gstreamer_single_stream_test.cpp | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/test/gstreamer/gstreamer_single_stream_test.cpp b/test/gstreamer/gstreamer_single_stream_test.cpp
> index a0dd12cf..1e0801e8 100644
> --- a/test/gstreamer/gstreamer_single_stream_test.cpp
> +++ b/test/gstreamer/gstreamer_single_stream_test.cpp
> @@ -8,6 +8,8 @@
>  #include <iostream>
>  #include <unistd.h>
>  
> +#include <libcamera/libcamera.h>
> +
>  #include <gst/gst.h>
>  
>  #include "gstreamer_test.h"
> @@ -29,6 +31,17 @@ protected:
>  		if (status_ != TestPass)
>  			return status_;
>  
> +		libcamera::CameraManager cm;
> +		cm.start();
> +
> +		bool cameraFound = cm.cameras().size() > 1 ? true : false;
> +		if (!cameraFound) {
> +			cm.stop();
> +			return TestSkip;
> +		}
> +
> +		cm.stop();
> +

I think starting a CM here might be problematic (even racy), specially that it
is not destroyed before GStreamer starts using it. But perhaps things have
improved ...

At the same time, I feel like this is avoiding some obvious testing. Instead of
that, perhaps you should let if fail and handle the error code ? Or even better,
perhaps you should use the device provider instead of custom libcamera code ?

regards,
Nicolas

>  		const gchar *streamDescription = "videoconvert ! fakesink";
>  		g_autoptr(GError) error0 = NULL;
>  		stream0_ = gst_parse_bin_from_description_full(streamDescription, TRUE,



More information about the libcamera-devel mailing list