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>
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user