[libcamera-devel,04/13] gstreamer: Pass Stream to RequestWrap::addBuffer()
diff mbox series

Message ID 20220623232210.18742-5-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • gstreamer: Queue multiple requests
Related show

Commit Message

Laurent Pinchart June 23, 2022, 11:22 p.m. UTC
For symmetry with RequestWrap::removeBuffer(), pass the Stream pointer
to addBuffer(). This handles streams at the GstPad level instead of the
GstBuffer level, which allows making the GstLibcameraPool API a bit
cleaner by removing the gst_libcamera_buffer_get_stream() helper
function.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/gstreamer/gstlibcamerapool.cpp | 7 -------
 src/gstreamer/gstlibcamerapool.h   | 2 --
 src/gstreamer/gstlibcamerasrc.cpp  | 8 ++++----
 3 files changed, 4 insertions(+), 13 deletions(-)

Comments

Nicolas Dufresne June 27, 2022, 8:48 p.m. UTC | #1
Le vendredi 24 juin 2022 à 02:22 +0300, Laurent Pinchart a écrit :
> For symmetry with RequestWrap::removeBuffer(), pass the Stream pointer
> to addBuffer(). This handles streams at the GstPad level instead of the
> GstBuffer level, which allows making the GstLibcameraPool API a bit
> cleaner by removing the gst_libcamera_buffer_get_stream() helper
> function.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Agreed, thanks.

Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>

> ---
>  src/gstreamer/gstlibcamerapool.cpp | 7 -------
>  src/gstreamer/gstlibcamerapool.h   | 2 --
>  src/gstreamer/gstlibcamerasrc.cpp  | 8 ++++----
>  3 files changed, 4 insertions(+), 13 deletions(-)
> 
> diff --git a/src/gstreamer/gstlibcamerapool.cpp b/src/gstreamer/gstlibcamerapool.cpp
> index 118bc6db7067..c7b7fe54cbe1 100644
> --- a/src/gstreamer/gstlibcamerapool.cpp
> +++ b/src/gstreamer/gstlibcamerapool.cpp
> @@ -133,10 +133,3 @@ gst_libcamera_pool_get_stream(GstLibcameraPool *self)
>  {
>  	return self->stream;
>  }
> -
> -Stream *
> -gst_libcamera_buffer_get_stream(GstBuffer *buffer)
> -{
> -	auto *self = (GstLibcameraPool *)buffer->pool;
> -	return self->stream;
> -}
> diff --git a/src/gstreamer/gstlibcamerapool.h b/src/gstreamer/gstlibcamerapool.h
> index 06b38cb296fc..0ad14be4adf3 100644
> --- a/src/gstreamer/gstlibcamerapool.h
> +++ b/src/gstreamer/gstlibcamerapool.h
> @@ -24,5 +24,3 @@ GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
>  					 libcamera::Stream *stream);
>  
>  libcamera::Stream *gst_libcamera_pool_get_stream(GstLibcameraPool *self);
> -
> -libcamera::Stream *gst_libcamera_buffer_get_stream(GstBuffer *buffer);
> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
> index dea143961d69..700bee2bf877 100644
> --- a/src/gstreamer/gstlibcamerasrc.cpp
> +++ b/src/gstreamer/gstlibcamerasrc.cpp
> @@ -51,7 +51,7 @@ struct RequestWrap {
>  	RequestWrap(std::unique_ptr<Request> request);
>  	~RequestWrap();
>  
> -	void attachBuffer(GstBuffer *buffer);
> +	void attachBuffer(Stream *stream, GstBuffer *buffer);
>  	GstBuffer *detachBuffer(Stream *stream);
>  
>  	std::unique_ptr<Request> request_;
> @@ -71,10 +71,9 @@ RequestWrap::~RequestWrap()
>  	}
>  }
>  
> -void RequestWrap::attachBuffer(GstBuffer *buffer)
> +void RequestWrap::attachBuffer(Stream *stream, GstBuffer *buffer)
>  {
>  	FrameBuffer *fb = gst_libcamera_buffer_get_frame_buffer(buffer);
> -	Stream *stream = gst_libcamera_buffer_get_stream(buffer);
>  
>  	request_->addBuffer(stream, fb);
>  
> @@ -275,6 +274,7 @@ gst_libcamera_src_task_run(gpointer user_data)
>  		std::make_unique<RequestWrap>(std::move(request));
>  
>  	for (GstPad *srcpad : state->srcpads_) {
> +		Stream *stream = gst_libcamera_pad_get_stream(srcpad);
>  		GstLibcameraPool *pool = gst_libcamera_pad_get_pool(srcpad);
>  		GstBuffer *buffer;
>  		GstFlowReturn ret;
> @@ -290,7 +290,7 @@ gst_libcamera_src_task_run(gpointer user_data)
>  			break;
>  		}
>  
> -		wrap->attachBuffer(buffer);
> +		wrap->attachBuffer(stream, buffer);
>  	}
>  
>  	if (wrap) {
Umang Jain June 29, 2022, 11:31 a.m. UTC | #2
Hi Laurent,

Thank you for the patch.

On 6/24/22 04:52, Laurent Pinchart via libcamera-devel wrote:
> For symmetry with RequestWrap::removeBuffer(), pass the Stream pointer
> to addBuffer(). This handles streams at the GstPad level instead of the
> GstBuffer level, which allows making the GstLibcameraPool API a bit
> cleaner by removing the gst_libcamera_buffer_get_stream() helper
> function.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>


Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>

> ---
>   src/gstreamer/gstlibcamerapool.cpp | 7 -------
>   src/gstreamer/gstlibcamerapool.h   | 2 --
>   src/gstreamer/gstlibcamerasrc.cpp  | 8 ++++----
>   3 files changed, 4 insertions(+), 13 deletions(-)
>
> diff --git a/src/gstreamer/gstlibcamerapool.cpp b/src/gstreamer/gstlibcamerapool.cpp
> index 118bc6db7067..c7b7fe54cbe1 100644
> --- a/src/gstreamer/gstlibcamerapool.cpp
> +++ b/src/gstreamer/gstlibcamerapool.cpp
> @@ -133,10 +133,3 @@ gst_libcamera_pool_get_stream(GstLibcameraPool *self)
>   {
>   	return self->stream;
>   }
> -
> -Stream *
> -gst_libcamera_buffer_get_stream(GstBuffer *buffer)
> -{
> -	auto *self = (GstLibcameraPool *)buffer->pool;
> -	return self->stream;
> -}
> diff --git a/src/gstreamer/gstlibcamerapool.h b/src/gstreamer/gstlibcamerapool.h
> index 06b38cb296fc..0ad14be4adf3 100644
> --- a/src/gstreamer/gstlibcamerapool.h
> +++ b/src/gstreamer/gstlibcamerapool.h
> @@ -24,5 +24,3 @@ GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
>   					 libcamera::Stream *stream);
>   
>   libcamera::Stream *gst_libcamera_pool_get_stream(GstLibcameraPool *self);
> -
> -libcamera::Stream *gst_libcamera_buffer_get_stream(GstBuffer *buffer);
> diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
> index dea143961d69..700bee2bf877 100644
> --- a/src/gstreamer/gstlibcamerasrc.cpp
> +++ b/src/gstreamer/gstlibcamerasrc.cpp
> @@ -51,7 +51,7 @@ struct RequestWrap {
>   	RequestWrap(std::unique_ptr<Request> request);
>   	~RequestWrap();
>   
> -	void attachBuffer(GstBuffer *buffer);
> +	void attachBuffer(Stream *stream, GstBuffer *buffer);
>   	GstBuffer *detachBuffer(Stream *stream);
>   
>   	std::unique_ptr<Request> request_;
> @@ -71,10 +71,9 @@ RequestWrap::~RequestWrap()
>   	}
>   }
>   
> -void RequestWrap::attachBuffer(GstBuffer *buffer)
> +void RequestWrap::attachBuffer(Stream *stream, GstBuffer *buffer)
>   {
>   	FrameBuffer *fb = gst_libcamera_buffer_get_frame_buffer(buffer);
> -	Stream *stream = gst_libcamera_buffer_get_stream(buffer);
>   
>   	request_->addBuffer(stream, fb);
>   
> @@ -275,6 +274,7 @@ gst_libcamera_src_task_run(gpointer user_data)
>   		std::make_unique<RequestWrap>(std::move(request));
>   
>   	for (GstPad *srcpad : state->srcpads_) {
> +		Stream *stream = gst_libcamera_pad_get_stream(srcpad);
>   		GstLibcameraPool *pool = gst_libcamera_pad_get_pool(srcpad);
>   		GstBuffer *buffer;
>   		GstFlowReturn ret;
> @@ -290,7 +290,7 @@ gst_libcamera_src_task_run(gpointer user_data)
>   			break;
>   		}
>   
> -		wrap->attachBuffer(buffer);
> +		wrap->attachBuffer(stream, buffer);
>   	}
>   
>   	if (wrap) {

Patch
diff mbox series

diff --git a/src/gstreamer/gstlibcamerapool.cpp b/src/gstreamer/gstlibcamerapool.cpp
index 118bc6db7067..c7b7fe54cbe1 100644
--- a/src/gstreamer/gstlibcamerapool.cpp
+++ b/src/gstreamer/gstlibcamerapool.cpp
@@ -133,10 +133,3 @@  gst_libcamera_pool_get_stream(GstLibcameraPool *self)
 {
 	return self->stream;
 }
-
-Stream *
-gst_libcamera_buffer_get_stream(GstBuffer *buffer)
-{
-	auto *self = (GstLibcameraPool *)buffer->pool;
-	return self->stream;
-}
diff --git a/src/gstreamer/gstlibcamerapool.h b/src/gstreamer/gstlibcamerapool.h
index 06b38cb296fc..0ad14be4adf3 100644
--- a/src/gstreamer/gstlibcamerapool.h
+++ b/src/gstreamer/gstlibcamerapool.h
@@ -24,5 +24,3 @@  GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
 					 libcamera::Stream *stream);
 
 libcamera::Stream *gst_libcamera_pool_get_stream(GstLibcameraPool *self);
-
-libcamera::Stream *gst_libcamera_buffer_get_stream(GstBuffer *buffer);
diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
index dea143961d69..700bee2bf877 100644
--- a/src/gstreamer/gstlibcamerasrc.cpp
+++ b/src/gstreamer/gstlibcamerasrc.cpp
@@ -51,7 +51,7 @@  struct RequestWrap {
 	RequestWrap(std::unique_ptr<Request> request);
 	~RequestWrap();
 
-	void attachBuffer(GstBuffer *buffer);
+	void attachBuffer(Stream *stream, GstBuffer *buffer);
 	GstBuffer *detachBuffer(Stream *stream);
 
 	std::unique_ptr<Request> request_;
@@ -71,10 +71,9 @@  RequestWrap::~RequestWrap()
 	}
 }
 
-void RequestWrap::attachBuffer(GstBuffer *buffer)
+void RequestWrap::attachBuffer(Stream *stream, GstBuffer *buffer)
 {
 	FrameBuffer *fb = gst_libcamera_buffer_get_frame_buffer(buffer);
-	Stream *stream = gst_libcamera_buffer_get_stream(buffer);
 
 	request_->addBuffer(stream, fb);
 
@@ -275,6 +274,7 @@  gst_libcamera_src_task_run(gpointer user_data)
 		std::make_unique<RequestWrap>(std::move(request));
 
 	for (GstPad *srcpad : state->srcpads_) {
+		Stream *stream = gst_libcamera_pad_get_stream(srcpad);
 		GstLibcameraPool *pool = gst_libcamera_pad_get_pool(srcpad);
 		GstBuffer *buffer;
 		GstFlowReturn ret;
@@ -290,7 +290,7 @@  gst_libcamera_src_task_run(gpointer user_data)
 			break;
 		}
 
-		wrap->attachBuffer(buffer);
+		wrap->attachBuffer(stream, buffer);
 	}
 
 	if (wrap) {