[libcamera-devel] [PATCH v3 10/10] libcamera: pipeline: vimc: add dummy IPA

Paul Elder paul.elder at ideasonboard.com
Wed Jun 5 02:53:16 CEST 2019


Make the vimc pipeline handler get the dummy IPA, to show how an IPA can
be acquired by a pipeline handler.

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
Changes in v3:
- save IPA to VIMC pipeline data
- no IPA is non-fatal warning

Changes in v2:
- save IPA to pipeline data
- no IPA is fatal error

 src/libcamera/pipeline/vimc.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp
index 0e4eede..ad4577a 100644
--- a/src/libcamera/pipeline/vimc.cpp
+++ b/src/libcamera/pipeline/vimc.cpp
@@ -9,10 +9,13 @@
 #include <array>
 
 #include <libcamera/camera.h>
+#include <libcamera/ipa/ipa_interface.h>
+#include <libcamera/ipa/ipa_module_info.h>
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
 #include "device_enumerator.h"
+#include "ipa_manager.h"
 #include "log.h"
 #include "media_device.h"
 #include "pipeline_handler.h"
@@ -77,6 +80,8 @@ private:
 		return static_cast<VimcCameraData *>(
 			PipelineHandler::cameraData(camera));
 	}
+
+	std::unique_ptr<IPAInterface> ipa_;
 };
 
 VimcCameraConfiguration::VimcCameraConfiguration()
@@ -248,6 +253,12 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
 	if (!media)
 		return false;
 
+	ipa_ = IPAManager::instance()->createIPA(this, 0, 0);
+	if (ipa_ == nullptr)
+		LOG(VIMC, Warning) << "no matching IPA found";
+	else
+		ipa_->init();
+
 	std::unique_ptr<VimcCameraData> data = utils::make_unique<VimcCameraData>(this);
 
 	/* Locate and open the capture video node. */
-- 
2.20.1



More information about the libcamera-devel mailing list