summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/vimc/vimc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/pipeline/vimc/vimc.cpp')
-rw-r--r--src/libcamera/pipeline/vimc/vimc.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index 90e0d558..e434cfbe 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -334,6 +334,14 @@ int PipelineHandlerVimc::start(Camera *camera, [[maybe_unused]] const ControlLis
if (ret < 0)
return ret;
+ /* Map the mock IPA buffers to VIMC IPA to exercise IPC code paths. */
+ std::vector<IPABuffer> ipaBuffers;
+ for (auto [i, buffer] : utils::enumerate(data->mockIPABufs_)) {
+ buffer->setCookie(i + 1);
+ ipaBuffers.emplace_back(buffer->cookie(), buffer->planes());
+ }
+ data->ipa_->mapBuffers(ipaBuffers);
+
ret = data->ipa_->start();
if (ret) {
data->video_->releaseBuffers();
@@ -354,7 +362,13 @@ void PipelineHandlerVimc::stop(Camera *camera)
{
VimcCameraData *data = cameraData(camera);
data->video_->streamOff();
+
+ std::vector<unsigned int> ids;
+ for (const std::unique_ptr<FrameBuffer> &buffer : data->mockIPABufs_)
+ ids.push_back(buffer->cookie());
+ data->ipa_->unmapBuffers(ids);
data->ipa_->stop();
+
data->video_->releaseBuffers();
}