@@ -14,6 +14,7 @@
#include <string>
#include <vector>
+#include <ipa/ipa_interface.h>
#include <libcamera/controls.h>
#include <libcamera/stream.h>
@@ -43,6 +44,7 @@ public:
PipelineHandler *pipe_;
std::list<Request *> queuedRequests_;
ControlInfoMap controlInfo_;
+ std::unique_ptr<IPAInterface> ipa_;
private:
CameraData(const CameraData &) = delete;
@@ -101,8 +101,6 @@ private:
return static_cast<VimcCameraData *>(
PipelineHandler::cameraData(camera));
}
-
- std::unique_ptr<IPAInterface> ipa_;
};
VimcCameraConfiguration::VimcCameraConfiguration()
@@ -353,13 +351,13 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
if (!media)
return false;
- ipa_ = IPAManager::instance()->createIPA(this, 0, 0);
- if (ipa_ == nullptr)
+ std::unique_ptr<VimcCameraData> data = utils::make_unique<VimcCameraData>(this);
+
+ data->ipa_ = IPAManager::instance()->createIPA(this, 0, 0);
+ if (data->ipa_ == nullptr)
LOG(VIMC, Warning) << "no matching IPA found";
else
- ipa_->init();
-
- std::unique_ptr<VimcCameraData> data = utils::make_unique<VimcCameraData>(this);
+ data->ipa_->init();
/* Locate and open the capture video node. */
if (data->init(media))
@@ -96,6 +96,14 @@ LOG_DEFINE_CATEGORY(Pipeline)
* creating the camera, and shall not be modified afterwards.
*/
+/**
+ * \var CameraData::ipa_
+ * \brief The IPA module used by the camera
+ *
+ * Reference to the Image Processing Algorithms (IPA) operating on the camera's
+ * stream(s). If no IPA exists for the camera, this field is set to nullptr.
+ */
+
/**
* \class PipelineHandler
* \brief Create and manage cameras based on a set of media devices