[libcamera-devel,WIP,0/9] Zero-copy RAW stream work
mbox series

Message ID 20200713084727.232422-1-naush@raspberrypi.com
Headers show
Series
  • Zero-copy RAW stream work
Related show

Message

Naushir Patuck July 13, 2020, 8:47 a.m. UTC
Hi,

Here is a preliminary set of patches to rework the Raspberry Pi stream handling to
support zero-copy captures.  The biggest change here is that we now export/import
buffers for all our streams, instead of v4l2_videodevice::allocate().  This will
allow any stream buffer to be returned to the application without a copy step.
This includes the statistics buffer (once we have a mechanism for requesting it).

This is still a work in progress, and in particular, patch 2 needs to be reworked
once Laurent's change for passing IPA configuration parameters is merged.  However,
everything else is in a more-or-less finished state, so I would appreciate any
comments.

Regards,
Naush


Naushir Patuck (9):
  libcamera: pipeline: raspberrypi: Move RPiStream into a separate
    header
  libcamera: pipeline: ipa: raspberrypi: Rework drop frame signalling
  libcamera: pipeline: raspberrypi: Add some debug logging
  libcamera: pipeline: raspberrypi: Increase the number of RAW buffers
  libcamera: pipeline: raspberrypi: Remove const qualifier from
    RPiStream
  libcamera: pipeline: raspberrypi: Rework stream buffer logic for
    zero-copy
  libcamera: pipeline: raspberrypi: Fix bug in passing configuration to
    IPA
  libcamera: pipeline: raspberrypi: Add more robust stream buffer logic
  libcamera: pipeline: raspberrypi: Move RPiStream methods to a cpp file

 include/libcamera/ipa/raspberrypi.h           |   2 +-
 src/ipa/raspberrypi/raspberrypi.cpp           |  21 +-
 .../pipeline/raspberrypi/meson.build          |   1 +
 .../pipeline/raspberrypi/raspberrypi.cpp      | 415 ++++++------------
 .../pipeline/raspberrypi/rpi_stream.cpp       | 167 +++++++
 .../pipeline/raspberrypi/rpi_stream.h         | 154 +++++++
 6 files changed, 464 insertions(+), 296 deletions(-)
 create mode 100644 src/libcamera/pipeline/raspberrypi/rpi_stream.cpp
 create mode 100644 src/libcamera/pipeline/raspberrypi/rpi_stream.h