[libcamera-devel] [PATCH 00/13] gstreamer: Queue multiple requests

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Jun 24 01:21:57 CEST 2022


Hello,

This patch series fixes a long-standing issue in the libcamerasrc
element, namely the fact that it never queues more than one request at a
time.

It took me quite a while to grasp the implementation of libcamerasrc,
and this probably shows through the patch series. I don't claim any of
this is particularly good, only that it enables libcamerasrc usage with
rkisp1 and vimc, which isn't possible today, and that it didn't
introduce any regression I could notice.

Reviews from developers with more experience in GStreamer than me would
be appreciated :-)

Laurent Pinchart (13):
  gstreamer: Use gst_task_resume() when available
  gstreamer: Inline gst_libcamera_buffer_get_frame_buffer()
  gstreamer: Move variable to loop scope
  gstreamer: Pass Stream to RequestWrap::addBuffer()
  gstreamer: Move timestamp calculation out of pad loop
  gstreamer: Rename queued requests queue to queuedRequests_
  gstreamer: Handle completed requests in the libcamerasrc task
  gstreamer: Combine the two pad loops in the task run handler
  gstreamer: Use dedicated lock for request queues
  gstreamer: Fix pads locking
  gstreamer: Split request creation to a separate function
  gstreamer: Split completed request processing to a separate function
  gstreamer: Fix race conditions in task pause/resume

 src/gstreamer/gstlibcamera-utils.cpp    |  16 +-
 src/gstreamer/gstlibcamera-utils.h      |   4 +-
 src/gstreamer/gstlibcameraallocator.cpp |   3 +-
 src/gstreamer/gstlibcameraallocator.h   |   2 +-
 src/gstreamer/gstlibcamerapad.cpp       |  35 ---
 src/gstreamer/gstlibcamerapad.h         |   6 -
 src/gstreamer/gstlibcamerapool.cpp      |  14 --
 src/gstreamer/gstlibcamerapool.h        |   4 -
 src/gstreamer/gstlibcamerasrc.cpp       | 308 ++++++++++++++++--------
 9 files changed, 227 insertions(+), 165 deletions(-)


base-commit: 7ec3bfedbe22962600b438a13d9e13d37d55ce25
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list