[libcamera-devel] [PATCH v5 5/6] libcamera: ipu3: Set pipe_mode based on stream configuration

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Jun 22 22:30:14 CEST 2019


Hi Jacopo,

Thank you for the patch.

On Thu, Jun 20, 2019 at 05:31:43PM +0200, Jacopo Mondi wrote:
> Set the ImgU pipe_mode control based on the active stream configuration.
> Use 'Video' pipe mode unless the viewfinder stream is not active.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 1c0a9825b4cd..54a6735dfc87 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -22,6 +22,7 @@
>  #include "media_device.h"
>  #include "pipeline_handler.h"
>  #include "utils.h"
> +#include "v4l2_controls.h"
>  #include "v4l2_subdevice.h"
>  #include "v4l2_videodevice.h"
>  
> @@ -194,6 +195,12 @@ private:
>  class PipelineHandlerIPU3 : public PipelineHandler
>  {
>  public:
> +	static constexpr unsigned int V4L2_CID_IPU3_PIPE_MODE = 0x009819c1;
> +	enum IPU3PipeModes {
> +		IPU3PipeModeVideo = 0,
> +		IPU3PipeModeStillCapture = 1,
> +	};
> +
>  	PipelineHandlerIPU3(CameraManager *manager);
>  
>  	CameraConfiguration *generateConfiguration(Camera *camera,
> @@ -559,6 +566,17 @@ int PipelineHandlerIPU3::configure(Camera *camera, CameraConfiguration *c)
>  	if (ret)
>  		return ret;
>  
> +	/* Apply the "pipe_mode" control to the ImgU subdevice. */
> +	V4L2Controls ctrls;
> +	ctrls.add(V4L2_CID_IPU3_PIPE_MODE, vfStream->active_ ?
> +		       			   IPU3PipeModeVideo :
> +					   IPU3PipeModeStillCapture);
> +	ret = imgu->imgu_->setControls(&ctrls);
> +	if (ret) {
> +		LOG(IPU3, Error) << "Unable to set pipe_mode control";
> +		return ret;
> +	}
> +
>  	return 0;
>  }
>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list