summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-11-04 03:12:29 +0100
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2021-02-05 01:20:32 +0100
commit60b5f3b8b9e60c956d6db0ab82ca5a3930e0e3f3 (patch)
tree7a5400be423720a25e8e75bfc75ff77bbe2fa526 /src/libcamera/pipeline
parent9cdad8461e61e815ddb7378e87cb047ab168d290 (diff)
libcamera: ipu3: imgu: Allocate buffers for stats and param
Instead of preparing for buffer importing allocate buffers that can be used by an IPA. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline')
-rw-r--r--src/libcamera/pipeline/ipu3/imgu.cpp14
-rw-r--r--src/libcamera/pipeline/ipu3/imgu.h3
2 files changed, 8 insertions, 9 deletions
diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp
index c8610220..d5cf05b0 100644
--- a/src/libcamera/pipeline/ipu3/imgu.cpp
+++ b/src/libcamera/pipeline/ipu3/imgu.cpp
@@ -552,20 +552,13 @@ int ImgUDevice::allocateBuffers(unsigned int bufferCount)
return ret;
}
- ret = param_->importBuffers(bufferCount);
+ ret = param_->allocateBuffers(bufferCount, &paramBuffers_);
if (ret < 0) {
LOG(IPU3, Error) << "Failed to allocate ImgU param buffers";
goto error;
}
- /*
- * The kernel fails to start if buffers are not either imported or
- * allocated for the statistics video device. As statistics buffers are
- * not yet used by the pipeline import buffers to save memory.
- *
- * \todo To be revised when we'll actually use the stat node.
- */
- ret = stat_->importBuffers(bufferCount);
+ ret = stat_->allocateBuffers(bufferCount, &statBuffers_);
if (ret < 0) {
LOG(IPU3, Error) << "Failed to allocate ImgU stat buffers";
goto error;
@@ -603,6 +596,9 @@ void ImgUDevice::freeBuffers()
{
int ret;
+ paramBuffers_.clear();
+ statBuffers_.clear();
+
ret = output_->releaseBuffers();
if (ret)
LOG(IPU3, Error) << "Failed to release ImgU output buffers";
diff --git a/src/libcamera/pipeline/ipu3/imgu.h b/src/libcamera/pipeline/ipu3/imgu.h
index 4a1896e2..9d491511 100644
--- a/src/libcamera/pipeline/ipu3/imgu.h
+++ b/src/libcamera/pipeline/ipu3/imgu.h
@@ -76,6 +76,9 @@ public:
std::unique_ptr<V4L2VideoDevice> viewfinder_;
std::unique_ptr<V4L2VideoDevice> stat_;
+ std::vector<std::unique_ptr<FrameBuffer>> paramBuffers_;
+ std::vector<std::unique_ptr<FrameBuffer>> statBuffers_;
+
private:
static constexpr unsigned int PAD_INPUT = 0;
static constexpr unsigned int PAD_PARAM = 1;