@@ -552,20 +552,13 @@ int ImgUDevice::allocateBuffers(unsigned int bufferCount)
return ret;
}
- ret = param_->importBuffers(bufferCount);
+ ret = param_->allocateBuffers(bufferCount, ¶mBuffers_);
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";
@@ -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;