[libcamera-devel,v1,18/23] gst: libcamerapad: Allow storing a pool

Message ID 20200129033210.278800-19-nicolas@ndufresne.ca
State Superseded
Headers show
Series
  • GStreamer Element for libcamera
Related show

Commit Message

Nicolas Dufresne Jan. 29, 2020, 3:32 a.m. UTC
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>

This add get/set helper to store a pool on the pad.

Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
---
 src/gstreamer/gstlibcamerapad.cpp | 18 ++++++++++++++++++
 src/gstreamer/gstlibcamerapad.h   |  6 ++++++
 2 files changed, 24 insertions(+)

Comments

Laurent Pinchart Feb. 12, 2020, 12:23 a.m. UTC | #1
Hi Nicolas,

Thank you for the patch.

On Tue, Jan 28, 2020 at 10:32:05PM -0500, Nicolas Dufresne wrote:
> From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
> 
> This add get/set helper to store a pool on the pad.

s/add/adds/

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

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

> ---
>  src/gstreamer/gstlibcamerapad.cpp | 18 ++++++++++++++++++
>  src/gstreamer/gstlibcamerapad.h   |  6 ++++++
>  2 files changed, 24 insertions(+)
> 
> diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp
> index b18584c..b9e6dc5 100644
> --- a/src/gstreamer/gstlibcamerapad.cpp
> +++ b/src/gstreamer/gstlibcamerapad.cpp
> @@ -16,6 +16,7 @@ using namespace libcamera;
>  struct _GstLibcameraPad {
>  	GstPad parent;
>  	StreamRole role;
> +	GstLibcameraPool *pool;
>  };
>  
>  enum {
> @@ -107,3 +108,20 @@ gst_libcamera_pad_get_role(GstPad *pad)
>  	GST_OBJECT_LOCKER(self);
>  	return self->role;
>  }
> +
> +GstLibcameraPool *
> +gst_libcamera_pad_get_pool(GstPad *pad)
> +{
> +	auto *self = GST_LIBCAMERA_PAD(pad);
> +	return self->pool;
> +}
> +
> +void
> +gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool)
> +{
> +	auto *self = GST_LIBCAMERA_PAD(pad);
> +	
> +	if (self->pool)
> +		g_object_unref(self->pool);
> +	self->pool = pool;
> +}
> diff --git a/src/gstreamer/gstlibcamerapad.h b/src/gstreamer/gstlibcamerapad.h
> index 3dea0e7..4570c0c 100644
> --- a/src/gstreamer/gstlibcamerapad.h
> +++ b/src/gstreamer/gstlibcamerapad.h
> @@ -9,6 +9,8 @@
>  #include <gst/gst.h>
>  #include <libcamera/stream.h>
>  
> +#include "gstlibcamerapool.h"
> +
>  #ifndef __GST_LIBCAMERA_PAD_H__
>  #define __GST_LIBCAMERA_PAD_H__
>  
> @@ -18,4 +20,8 @@ G_DECLARE_FINAL_TYPE(GstLibcameraPad, gst_libcamera_pad,
>  
>  libcamera::StreamRole gst_libcamera_pad_get_role(GstPad *pad);
>  
> +GstLibcameraPool *gst_libcamera_pad_get_pool(GstPad *pad);
> +
> +void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);
> +
>  #endif /* __GST_LIBCAMERA_PAD_H__ */

Patch

diff --git a/src/gstreamer/gstlibcamerapad.cpp b/src/gstreamer/gstlibcamerapad.cpp
index b18584c..b9e6dc5 100644
--- a/src/gstreamer/gstlibcamerapad.cpp
+++ b/src/gstreamer/gstlibcamerapad.cpp
@@ -16,6 +16,7 @@  using namespace libcamera;
 struct _GstLibcameraPad {
 	GstPad parent;
 	StreamRole role;
+	GstLibcameraPool *pool;
 };
 
 enum {
@@ -107,3 +108,20 @@  gst_libcamera_pad_get_role(GstPad *pad)
 	GST_OBJECT_LOCKER(self);
 	return self->role;
 }
+
+GstLibcameraPool *
+gst_libcamera_pad_get_pool(GstPad *pad)
+{
+	auto *self = GST_LIBCAMERA_PAD(pad);
+	return self->pool;
+}
+
+void
+gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool)
+{
+	auto *self = GST_LIBCAMERA_PAD(pad);
+	
+	if (self->pool)
+		g_object_unref(self->pool);
+	self->pool = pool;
+}
diff --git a/src/gstreamer/gstlibcamerapad.h b/src/gstreamer/gstlibcamerapad.h
index 3dea0e7..4570c0c 100644
--- a/src/gstreamer/gstlibcamerapad.h
+++ b/src/gstreamer/gstlibcamerapad.h
@@ -9,6 +9,8 @@ 
 #include <gst/gst.h>
 #include <libcamera/stream.h>
 
+#include "gstlibcamerapool.h"
+
 #ifndef __GST_LIBCAMERA_PAD_H__
 #define __GST_LIBCAMERA_PAD_H__
 
@@ -18,4 +20,8 @@  G_DECLARE_FINAL_TYPE(GstLibcameraPad, gst_libcamera_pad,
 
 libcamera::StreamRole gst_libcamera_pad_get_role(GstPad *pad);
 
+GstLibcameraPool *gst_libcamera_pad_get_pool(GstPad *pad);
+
+void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);
+
 #endif /* __GST_LIBCAMERA_PAD_H__ */