[libcamera-devel] [PATCH 5/6] libcamera: pipeline: rkisp1: Add plumbing for IPA meta data
Niklas Söderlund
niklas.soderlund at ragnatech.se
Sat Aug 31 23:02:19 CEST 2019
Connect the pipeline handler to the IPA meta data signal. Add a check
for that IPA meta data is available to the conditions for completing a
request to the application.
Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
---
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index ab7c595f1e3bd39f..501edc20bb43514f 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -51,6 +51,7 @@ public:
private:
void updateSensor(V4L2ControlList controls);
void queueRequestHardware(const void *cookie);
+ void metaDataReady(const void *cookie, IPAMetaData metaData);
};
class RkISP1RequestData : public RequestData
@@ -143,6 +144,8 @@ int RkISP1CameraData::initIPA()
&RkISP1CameraData::updateSensor);
ipa_->queueRequest.connect(this,
&RkISP1CameraData::queueRequestHardware);
+ ipa_->metaDataReady.connect(this,
+ &RkISP1CameraData::metaDataReady);
return 0;
}
@@ -175,6 +178,17 @@ void RkISP1CameraData::queueRequestHardware(const void *cookie)
LOG(RkISP1, Error) << "Failed to queue video";
}
+void RkISP1CameraData::metaDataReady(const void *cookie, IPAMetaData metaData)
+{
+ Request *request = reinterpret_cast<Request *>(const_cast<void *>(cookie));
+ PipelineHandlerRkISP1 *pipe =
+ static_cast<PipelineHandlerRkISP1 *>(pipe_);
+
+ pipe->processMetaData(request, metaData);
+
+ pipe->tryCompleteRequest(request);
+}
+
RkISP1CameraConfiguration::RkISP1CameraConfiguration(Camera *camera,
RkISP1CameraData *data)
: CameraConfiguration()
@@ -709,6 +723,9 @@ void PipelineHandlerRkISP1::tryCompleteRequest(Request *request)
if (request->hasPendingBuffers())
return;
+ if (!request->metaData().ready)
+ return;
+
delete reqData;
request->data = nullptr;
@@ -734,8 +751,6 @@ void PipelineHandlerRkISP1::statReady(Buffer *buffer)
data->ipa_->updateStatistics(request, *buffer);
- /* TODO: Fetch libcamera status controls from IPA */
-
reqData->stat = nullptr;
statBuffers_.push(buffer);
--
2.22.1
More information about the libcamera-devel
mailing list