[libcamera-devel] [PATCH v2 11/13] libcamera: pipeline: rkisp1: Track buffers for self path
Niklas Söderlund
niklas.soderlund at ragnatech.se
Mon Sep 14 16:21:47 CEST 2020
In preparation of supporting both the main and self path extend
RkISP1FrameInfo to track buffers from the self path stream.
Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
---
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 01cd461427e3a6dc..bc961f8e78f2c979 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -69,6 +69,7 @@ struct RkISP1FrameInfo {
FrameBuffer *paramBuffer;
FrameBuffer *statBuffer;
FrameBuffer *mainPathBuffer;
+ FrameBuffer *selfPathBuffer;
bool paramFilled;
bool paramDequeued;
@@ -272,7 +273,8 @@ RkISP1FrameInfo *RkISP1Frames::create(const RkISP1CameraData *data, Request *req
FrameBuffer *statBuffer = pipe_->availableStatBuffers_.front();
FrameBuffer *mainPathBuffer = request->findBuffer(&data->mainPathStream_);
- if (!mainPathBuffer) {
+ FrameBuffer *selfPathBuffer = request->findBuffer(&data->selfPathStream_);
+ if (!mainPathBuffer && !selfPathBuffer) {
LOG(RkISP1, Error)
<< "Attempt to queue request with invalid stream";
return nullptr;
@@ -287,6 +289,7 @@ RkISP1FrameInfo *RkISP1Frames::create(const RkISP1CameraData *data, Request *req
info->request = request;
info->paramBuffer = paramBuffer;
info->mainPathBuffer = mainPathBuffer;
+ info->selfPathBuffer = selfPathBuffer;
info->statBuffer = statBuffer;
info->paramFilled = false;
info->paramDequeued = false;
@@ -345,7 +348,8 @@ RkISP1FrameInfo *RkISP1Frames::find(FrameBuffer *buffer)
if (info->paramBuffer == buffer ||
info->statBuffer == buffer ||
- info->mainPathBuffer == buffer)
+ info->mainPathBuffer == buffer ||
+ info->selfPathBuffer == buffer)
return info;
}
@@ -417,7 +421,12 @@ protected:
pipe_->param_->queueBuffer(info->paramBuffer);
pipe_->stat_->queueBuffer(info->statBuffer);
- pipe_->mainPathVideo_->queueBuffer(info->mainPathBuffer);
+
+ if (info->mainPathBuffer)
+ pipe_->mainPathVideo_->queueBuffer(info->mainPathBuffer);
+
+ if (info->selfPathBuffer)
+ pipe_->selfPathVideo_->queueBuffer(info->selfPathBuffer);
}
private:
--
2.28.0
More information about the libcamera-devel
mailing list