summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libcamera/ipa/rkisp1.mojom4
-rw-r--r--src/ipa/rkisp1/rkisp1.cpp11
-rw-r--r--src/libcamera/pipeline/rkisp1/rkisp1.cpp5
3 files changed, 13 insertions, 7 deletions
diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom
index f50f1e11..e3537385 100644
--- a/include/libcamera/ipa/rkisp1.mojom
+++ b/include/libcamera/ipa/rkisp1.mojom
@@ -23,8 +23,8 @@ interface IPARkISP1Interface {
mapBuffers(array<libcamera.IPABuffer> buffers);
unmapBuffers(array<uint32> ids);
- [async] queueRequest(uint32 frame, uint32 bufferId,
- libcamera.ControlList reqControls);
+ [async] queueRequest(uint32 frame, libcamera.ControlList reqControls);
+ [async] fillParamsBuffer(uint32 frame, uint32 bufferId);
[async] processStatsBuffer(uint32 frame, uint32 bufferId,
libcamera.ControlList sensorControls);
};
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 13ab1cdc..ef1f0d56 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -54,8 +54,8 @@ public:
void mapBuffers(const std::vector<IPABuffer> &buffers) override;
void unmapBuffers(const std::vector<unsigned int> &ids) override;
- void queueRequest(const uint32_t frame, const uint32_t bufferId,
- const ControlList &controls) override;
+ void queueRequest(const uint32_t frame, const ControlList &controls) override;
+ void fillParamsBuffer(const uint32_t frame, const uint32_t bufferId) override;
void processStatsBuffer(const uint32_t frame, const uint32_t bufferId,
const ControlList &sensorControls) override;
private:
@@ -235,9 +235,14 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)
}
}
-void IPARkISP1::queueRequest(const uint32_t frame, const uint32_t bufferId,
+void IPARkISP1::queueRequest([[maybe_unused]] const uint32_t frame,
[[maybe_unused]] const ControlList &controls)
{
+ /* \todo Start processing for 'frame' based on 'controls'. */
+}
+
+void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)
+{
rkisp1_params_cfg *params =
reinterpret_cast<rkisp1_params_cfg *>(
mappedBuffers_.at(bufferId).planes()[0].data());
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index e6fc582b..1624e2ec 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -855,8 +855,9 @@ int PipelineHandlerRkISP1::queueRequestDevice(Camera *camera, Request *request)
if (!info)
return -ENOENT;
- data->ipa_->queueRequest(data->frame_, info->paramBuffer->cookie(),
- request->controls());
+ data->ipa_->queueRequest(data->frame_, request->controls());
+ data->ipa_->fillParamsBuffer(data->frame_, info->paramBuffer->cookie());
+
data->frame_++;
return 0;