<div dir="ltr"><div>Hello Laurent,</div><div><br></div><div>I think Rishikesh can test this on his Raspberry Pi setup. He's already working on the gstreamer element.</div><div><br></div><div>cc'ing him here.</div><div><br></div><div>Regards,</div><div>Vedant Paranjape<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 27, 2022 at 1:30 AM Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com">laurent.pinchart@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Jun 24, 2022 at 01:42:46PM +0100, Kieran Bingham wrote:<br>
> Quoting Laurent Pinchart via libcamera-devel (2022-06-24 00:21:57)<br>
> > Hello,<br>
> > <br>
> > This patch series fixes a long-standing issue in the libcamerasrc<br>
> > element, namely the fact that it never queues more than one request at a<br>
> > time.<br>
> <br>
> Excellent, I've heard reports of performance on Raspberry Pi with<br>
> libcamerasrc being half the expected rate as well, so I suspect this was<br>
> also a cause - and will fix things there.<br>
<br>
Any volunteer to test this on Raspberry Pi ? :-)<br>
<br>
> \o/<br>
> <br>
> > It took me quite a while to grasp the implementation of libcamerasrc,<br>
> > and this probably shows through the patch series. I don't claim any of<br>
> > this is particularly good, only that it enables libcamerasrc usage with<br>
> > rkisp1 and vimc, which isn't possible today, and that it didn't<br>
> > introduce any regression I could notice.<br>
> > <br>
> > Reviews from developers with more experience in GStreamer than me would<br>
> > be appreciated :-)<br>
> > <br>
> > Laurent Pinchart (13):<br>
> >   gstreamer: Use gst_task_resume() when available<br>
> >   gstreamer: Inline gst_libcamera_buffer_get_frame_buffer()<br>
> >   gstreamer: Move variable to loop scope<br>
> >   gstreamer: Pass Stream to RequestWrap::addBuffer()<br>
> >   gstreamer: Move timestamp calculation out of pad loop<br>
> >   gstreamer: Rename queued requests queue to queuedRequests_<br>
> >   gstreamer: Handle completed requests in the libcamerasrc task<br>
> >   gstreamer: Combine the two pad loops in the task run handler<br>
> >   gstreamer: Use dedicated lock for request queues<br>
> >   gstreamer: Fix pads locking<br>
> >   gstreamer: Split request creation to a separate function<br>
> >   gstreamer: Split completed request processing to a separate function<br>
> >   gstreamer: Fix race conditions in task pause/resume<br>
> > <br>
> >  src/gstreamer/gstlibcamera-utils.cpp    |  16 +-<br>
> >  src/gstreamer/gstlibcamera-utils.h      |   4 +-<br>
> >  src/gstreamer/gstlibcameraallocator.cpp |   3 +-<br>
> >  src/gstreamer/gstlibcameraallocator.h   |   2 +-<br>
> >  src/gstreamer/gstlibcamerapad.cpp       |  35 ---<br>
> >  src/gstreamer/gstlibcamerapad.h         |   6 -<br>
> >  src/gstreamer/gstlibcamerapool.cpp      |  14 --<br>
> >  src/gstreamer/gstlibcamerapool.h        |   4 -<br>
> >  src/gstreamer/gstlibcamerasrc.cpp       | 308 ++++++++++++++++--------<br>
> >  9 files changed, 227 insertions(+), 165 deletions(-)<br>
> > <br>
> > <br>
> > base-commit: 7ec3bfedbe22962600b438a13d9e13d37d55ce25<br>
<br>
-- <br>
Regards,<br>
<br>
Laurent Pinchart<br>
</blockquote></div>