summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/ipu3/ipu3.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-07-09 13:56:55 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-07-14 16:00:51 +0300
commit9bb36ec274da530e509fe2f4010b262c43e812f3 (patch)
tree1b422e3abc7d7fcd801ae1df8704f1a138c290ca /src/libcamera/pipeline/ipu3/ipu3.cpp
parent33d3c4e2046044ec595ac2cb7ee7db4011e83fb7 (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/ipu3.cpp')
-rw-r--r--src/libcamera/pipeline/ipu3/ipu3.cpp13
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)