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

Message ID 20190605005316.4835-11-paul.elder@ideasonboard.com
State Accepted
Headers show
Series
  • Add IPAManager and IPAInterface
Related show

Commit Message

Paul Elder June 5, 2019, 12:53 a.m. UTC
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@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(+)

Comments

Laurent Pinchart June 5, 2019, 1:36 p.m. UTC | #1
Hi Paul,

Thank you for the patch.

On Tue, Jun 04, 2019 at 08:53:16PM -0400, Paul Elder wrote:
> 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@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@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. */

Patch

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. */