summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/vimc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/pipeline/vimc')
-rw-r--r--src/libcamera/pipeline/vimc/vimc.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index e434cfbe..92b30f2e 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -52,6 +52,7 @@ public:
int init();
int allocateMockIPABuffers();
void bufferReady(FrameBuffer *buffer);
+ void paramsFilled(unsigned int id);
MediaDevice *media_;
std::unique_ptr<CameraSensor> sensor_;
@@ -431,6 +432,8 @@ int PipelineHandlerVimc::queueRequestDevice(Camera *camera, Request *request)
if (ret < 0)
return ret;
+ data->ipa_->processControls(request->sequence(), request->controls());
+
return 0;
}
@@ -464,6 +467,8 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
return false;
}
+ data->ipa_->paramsFilled.connect(data.get(), &VimcCameraData::paramsFilled);
+
std::string conf = data->ipa_->configurationFile("vimc.conf");
data->ipa_->init(IPASettings{ conf, data->sensor_->model() });
@@ -568,6 +573,8 @@ void VimcCameraData::bufferReady(FrameBuffer *buffer)
pipe_->completeBuffer(request, buffer);
pipe_->completeRequest(request);
+
+ ipa_->fillParams(request->sequence(), mockIPABufs_[0]->cookie());
}
int VimcCameraData::allocateMockIPABuffers()
@@ -585,6 +592,10 @@ int VimcCameraData::allocateMockIPABuffers()
return video_->exportBuffers(kBufCount, &mockIPABufs_);
}
+void VimcCameraData::paramsFilled([[maybe_unused]] unsigned int id)
+{
+}
+
REGISTER_PIPELINE_HANDLER(PipelineHandlerVimc)
} /* namespace libcamera */