summaryrefslogtreecommitdiff
path: root/src/gstreamer/gstlibcamerasrc.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-21 22:47:53 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-07-04 23:07:53 +0300
commit3ae535ceb4beb82b4ea44fa30527de6d87c87346 (patch)
tree879a004d956cb45f62d37650fb5e5f450a2ed766 /src/gstreamer/gstlibcamerasrc.cpp
parent413dbfb1e7ba3192a01b5a3a5cbd9245513da496 (diff)
gstreamer: Combine the two pad loops in the task run handler
This simplifies the code, and allows removing the internal queue in the GstLibcameraPad object. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Diffstat (limited to 'src/gstreamer/gstlibcamerasrc.cpp')
-rw-r--r--src/gstreamer/gstlibcamerasrc.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
index 2cb91563..8c1cd701 100644
--- a/src/gstreamer/gstlibcamerasrc.cpp
+++ b/src/gstreamer/gstlibcamerasrc.cpp
@@ -311,6 +311,9 @@ gst_libcamera_src_task_run(gpointer user_data)
return;
}
+ GstFlowReturn ret = GST_FLOW_OK;
+ gst_flow_combiner_reset(self->flow_combiner);
+
for (GstPad *srcpad : state->srcpads_) {
Stream *stream = gst_libcamera_pad_get_stream(srcpad);
GstBuffer *buffer = wrap->detachBuffer(stream);
@@ -327,13 +330,7 @@ gst_libcamera_src_task_run(gpointer user_data)
GST_BUFFER_OFFSET(buffer) = fb->metadata().sequence;
GST_BUFFER_OFFSET_END(buffer) = fb->metadata().sequence;
- gst_libcamera_pad_queue_buffer(srcpad, buffer);
- }
-
- GstFlowReturn ret = GST_FLOW_OK;
- gst_flow_combiner_reset(self->flow_combiner);
- for (GstPad *srcpad : state->srcpads_) {
- ret = gst_libcamera_pad_push_pending(srcpad);
+ ret = gst_pad_push(srcpad, buffer);
ret = gst_flow_combiner_update_pad_flow(self->flow_combiner,
srcpad, ret);
}