[libcamera-devel,v3,12/27] gst: libcamerasrc: Store the srcpad in a vector

Message ID 20200306202637.525587-13-nicolas@ndufresne.ca
State Accepted
Headers show
Series
  • GStreamer Element for libcamera
Related show

Commit Message

Nicolas Dufresne March 6, 2020, 8:26 p.m. UTC
From: Nicolas Dufresne <nicolas.dufresne@collabora.com>

This will allow implementing generic algorithm even if we cannot
request pads yet.

Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/gstreamer/gstlibcamerasrc.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Patch

diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
index 35f7512..aa91619 100644
--- a/src/gstreamer/gstlibcamerasrc.cpp
+++ b/src/gstreamer/gstlibcamerasrc.cpp
@@ -8,6 +8,8 @@ 
 
 #include "gstlibcamerasrc.h"
 
+#include <vector>
+
 #include <libcamera/camera.h>
 #include <libcamera/camera_manager.h>
 
@@ -23,6 +25,7 @@  GST_DEBUG_CATEGORY_STATIC(source_debug);
 struct GstLibcameraSrcState {
 	std::unique_ptr<CameraManager> cm_;
 	std::shared_ptr<Camera> cam_;
+	std::vector<GstPad *> srcpads_;
 };
 
 struct _GstLibcameraSrc {
@@ -30,7 +33,6 @@  struct _GstLibcameraSrc {
 
 	GRecMutex stream_lock;
 	GstTask *task;
-	GstPad *srcpad;
 
 	gchar *camera_name;
 
@@ -265,8 +267,8 @@  gst_libcamera_src_init(GstLibcameraSrc *self)
 	gst_task_set_leave_callback(self->task, gst_libcamera_src_task_leave, self, nullptr);
 	gst_task_set_lock(self->task, &self->stream_lock);
 
-	self->srcpad = gst_pad_new_from_template(templ, "src");
-	gst_element_add_pad(GST_ELEMENT(self), self->srcpad);
+	state->srcpads_.push_back(gst_pad_new_from_template(templ, "src"));
+	gst_element_add_pad(GST_ELEMENT(self), state->srcpads_[0]);
 	self->state = state;
 }