diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp index 35f75124..aa91619f 100644 --- a/src/gstreamer/gstlibcamerasrc.cpp +++ b/src/gstreamer/gstlibcamerasrc.cpp @@ -8,6 +8,8 @@ #include "gstlibcamerasrc.h" +#include + #include #include @@ -23,6 +25,7 @@ GST_DEBUG_CATEGORY_STATIC(source_debug); struct GstLibcameraSrcState { std::unique_ptr cm_; std::shared_ptr cam_; + std::vector 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; }