[libcamera-devel] [RFC PATCH v2 5/5] libcamera: pipelines: uvcvideo: add IPAManager
Paul Elder
paul.elder at ideasonboard.com
Thu May 23 18:42:10 CEST 2019
Make the UVC pipeline query for one of the test IPA modules.
Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
Changes in v2:
- remove IPAManager from PipelineHandler::match parameter
This is a sample of how a IPAManager would be used.
src/libcamera/pipeline/uvcvideo.cpp | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
index 351712c..8275f5a 100644
--- a/src/libcamera/pipeline/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo.cpp
@@ -6,16 +6,20 @@
*/
#include <libcamera/camera.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"
#include "utils.h"
#include "v4l2_device.h"
+#include <string.h>
+
namespace libcamera {
LOG_DEFINE_CATEGORY(UVC)
@@ -175,6 +179,16 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
if (!media)
return false;
+ IPAManager *ipaManager = IPAManager::instance();
+ ipaManager->addDir("test/ipa");
+ struct IPAModuleInfo info;
+ info.ipaAPIVersion = 1;
+ info.pipelineVersion = 8999;
+ strcpy(info.pipelineName, "bleep");
+ IPAModule *ipa = ipaManager->acquireIPA(info);
+ if (ipa == nullptr)
+ LOG(UVC, Warning) << "no matching IPA found";
+
std::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(this);
/* Locate and open the default video node. */
@@ -197,7 +211,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
/* Create and register the camera. */
std::set<Stream *> streams{ &data->stream_ };
- std::shared_ptr<Camera> camera = Camera::create(this, media->model(), streams);
+ std::shared_ptr<Camera> camera = Camera::create(this, media->model() + " " + (ipa == nullptr ? "" : ipa->info().name), streams);
registerCamera(std::move(camera), std::move(data));
/* Enable hot-unplug notifications. */
--
2.20.1
More information about the libcamera-devel
mailing list