[libcamera-devel] [PATCH v2 25/27] gst: utils: Factor-out the task resume helper

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Feb 29 16:02:23 CET 2020


Hi Nicolas and Jakub,

Thank you for the patch.

On Thu, Feb 27, 2020 at 03:04:05PM -0500, Nicolas Dufresne wrote:
> From: Jakub Adam <jakub.adam at collabora.com>
> 
> Task resume will be added in the core GStreamer API in the future and
> we will need to call this in another location in the following patches.
> 
> Signed-off-by: Jakub Adam <jakub.adam at collabora.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  src/gstreamer/gstlibcamera-utils.cpp | 11 +++++++++++
>  src/gstreamer/gstlibcamera-utils.h   |  1 +
>  src/gstreamer/gstlibcamerasrc.cpp    | 10 +---------
>  3 files changed, 13 insertions(+), 9 deletions(-)
> 
> diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp
> index 231f3c5..11c2d56 100644
> --- a/src/gstreamer/gstlibcamera-utils.cpp
> +++ b/src/gstreamer/gstlibcamera-utils.cpp
> @@ -160,3 +160,14 @@ gst_libcamera_configure_stream_from_caps(StreamConfiguration &stream_cfg,
>  	stream_cfg.size.width = width;
>  	stream_cfg.size.height = height;
>  }
> +
> +void
> +gst_libcamera_resume_task(GstTask *task)
> +{
> +	/* We only want to resume the task if it's paused. */
> +	GLibLocker lock(GST_OBJECT(task));
> +	if (GST_TASK_STATE(task) == GST_TASK_PAUSED) {
> +		GST_TASK_STATE(task) = GST_TASK_STARTED;
> +		GST_TASK_SIGNAL(task);
> +	}
> +}
> diff --git a/src/gstreamer/gstlibcamera-utils.h b/src/gstreamer/gstlibcamera-utils.h
> index 51898a0..440f196 100644
> --- a/src/gstreamer/gstlibcamera-utils.h
> +++ b/src/gstreamer/gstlibcamera-utils.h
> @@ -17,6 +17,7 @@ GstCaps *gst_libcamera_stream_formats_to_caps(const libcamera::StreamFormats &fo
>  GstCaps *gst_libcamera_stream_configuration_to_caps(const libcamera::StreamConfiguration &stream_cfg);
>  void gst_libcamera_configure_stream_from_caps(libcamera::StreamConfiguration &stream_cfg,
>  					      GstCaps *caps);
> +void gst_libcamera_resume_task(GstTask *task);
>  
>  /**
>   * \class GLibLocker
> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
> index 1e55916..fe60584 100644
> --- a/src/gstreamer/gstlibcamerasrc.cpp
> +++ b/src/gstreamer/gstlibcamerasrc.cpp
> @@ -193,15 +193,7 @@ GstLibcameraSrcState::requestCompleted(Request *request)
>  		gst_libcamera_pad_queue_buffer(srcpad, buffer);
>  	}
>  
> -	{
> -		/* We only want to resume the task if it's paused. */
> -		GstTask *task = this->src->task;
> -		GLibLocker lock(GST_OBJECT(task));
> -		if (GST_TASK_STATE(task) == GST_TASK_PAUSED) {
> -			GST_TASK_STATE(task) = GST_TASK_STARTED;
> -			GST_TASK_SIGNAL(task);
> -		}
> -	}
> +	gst_libcamera_resume_task(this->src->task);
>  }
>  
>  static bool

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list