diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-09 13:56:55 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-14 16:00:51 +0300 |
commit | 9bb36ec274da530e509fe2f4010b262c43e812f3 (patch) | |
tree | 1b422e3abc7d7fcd801ae1df8704f1a138c290ca /src/libcamera/pipeline/ipu3 | |
parent | 33d3c4e2046044ec595ac2cb7ee7db4011e83fb7 (diff) |
libcamera: v4l2_videodevice: Add helper to queue all buffers
When starting the stream on a capture video device it is often needed to
queue all the allocated buffers. Add a helper method to do so, and
refactor the existing queueBuffer() method to make it clearer.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/libcamera/pipeline/ipu3')
-rw-r--r-- | src/libcamera/pipeline/ipu3/ipu3.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 1abd20e5..5a14edb6 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -131,6 +131,7 @@ public: CameraSensor *sensor_; BufferPool pool_; + std::vector<std::unique_ptr<Buffer>> buffers_; }; class IPU3Stream : public Stream @@ -1430,11 +1431,9 @@ int CIO2Device::start() { int ret; - for (Buffer &buffer : pool_.buffers()) { - ret = output_->queueBuffer(&buffer); - if (ret) - return ret; - } + buffers_ = output_->queueAllBuffers(); + if (buffers_.empty()) + return -EINVAL; ret = output_->streamOn(); if (ret) @@ -1445,7 +1444,9 @@ int CIO2Device::start() int CIO2Device::stop() { - return output_->streamOff(); + int ret = output_->streamOff(); + buffers_.clear(); + return ret; } int CIO2Device::mediaBusToFormat(unsigned int code) |