[PATCH] gstreamer: Merge initControls_ with request controls

Umang Jain umang.jain at ideasonboard.com
Fri Nov 1 18:22:20 CET 2024


It turns out there a few pipeline-handler/IPA that do not honor
the controls passed during start() phase. For instance, he gstreamer
libcamerasrc element, passes the target framerate during start() to
libcamera. As rkisp1 pipeline-handler/IPA doesn't do anything with
controls passed during start(), the target fps is unable to take
effect on rkisp1 platform.

Hence, merge the initControls_ with request controls with
ControlList::MergePolicy::KeepExisting. This way, the controls passed
by libcamerasrc during start(), can atleast get honoured on the
platform through requests' control.

Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
---
 src/gstreamer/gstlibcamerasrc.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/gstreamer/gstlibcamerasrc.cpp b/src/gstreamer/gstlibcamerasrc.cpp
index 912a8d55..0d615f4a 100644
--- a/src/gstreamer/gstlibcamerasrc.cpp
+++ b/src/gstreamer/gstlibcamerasrc.cpp
@@ -208,6 +208,7 @@ int GstLibcameraSrcState::queueRequest()
 	}
 
 	GST_TRACE_OBJECT(src_, "Requesting buffers");
+	wrap->request_.get()->controls().merge(initControls_, ControlList::MergePolicy::KeepExisting);
 	cam_->queueRequest(wrap->request_.get());
 
 	{
-- 
2.45.0



More information about the libcamera-devel mailing list