[libcamera-devel] [RFC PATCH v3 0/3] ipu3: Enable to handle a number of concurrent requests

Hirokazu Honda hiroh at chromium.org
Thu Apr 8 10:50:58 CEST 2021


PipelineHandler originally discards a request with ENOBUFS or
ENOMEM when a buffer is not available. The request will be
successful if enough buffers are available. This patch series
enables to process requests even if no buffer is available then
by storing the requests and retry queuing later.

Change in v3:
- Cancel pending buffers correctly upon PipelineHandlerIPU3::stop()

Change in v2:
- Move a queue of pending requests to IPU3CameraData
- Pass queuePendingRequests() as signal to CIO2Device and
  IPU3Frame and invoke it from them.

Hirokazu Honda (3):
  pipeline: ipu3: Store requests in the case a buffer shortage
  libcamera: ipu3: Try queuing pending requests if a buffer is available
  libcamera: ipu3: Cancel pending requests correctly

 include/libcamera/buffer.h             |  3 +
 src/libcamera/pipeline/ipu3/cio2.cpp   |  4 +-
 src/libcamera/pipeline/ipu3/cio2.h     |  3 +
 src/libcamera/pipeline/ipu3/frames.cpp |  6 +-
 src/libcamera/pipeline/ipu3/frames.h   |  5 ++
 src/libcamera/pipeline/ipu3/ipu3.cpp   | 77 +++++++++++++++++++-------
 6 files changed, 75 insertions(+), 23 deletions(-)

--
2.31.0.208.g409f899ff0-goog


More information about the libcamera-devel mailing list