[libcamera-devel] [PATCH 2/3] libcamera: pipeline: vimc: Use V4L2*::fromEntityName() where possible

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Mon Dec 14 03:14:07 CET 2020


Hi Laurent,

On Sat, Dec 12, 2020 at 08:51:15PM +0200, Laurent Pinchart wrote:
> Replace manual construction of V4L2VideoDevice and V4L2Subdevide with
> the fromEntityName() helper where possible. The returned pointer is
> managed as a std::unique_ptr<>, which simplifies the VimcCameraData
> destructor.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/libcamera/pipeline/vimc/vimc.cpp | 24 +++++++++---------------
>  1 file changed, 9 insertions(+), 15 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
> index 2a5054a8b1b8..72256f5b4190 100644
> --- a/src/libcamera/pipeline/vimc/vimc.cpp
> +++ b/src/libcamera/pipeline/vimc/vimc.cpp
> @@ -42,19 +42,13 @@ class VimcCameraData : public CameraData
>  {
>  public:
>  	VimcCameraData(PipelineHandler *pipe, MediaDevice *media)
> -		: CameraData(pipe), media_(media), sensor_(nullptr),
> -		  debayer_(nullptr), scaler_(nullptr), video_(nullptr),
> -		  raw_(nullptr)
> +		: CameraData(pipe), media_(media), sensor_(nullptr)
>  	{
>  	}
>  
>  	~VimcCameraData()
>  	{
>  		delete sensor_;
> -		delete debayer_;
> -		delete scaler_;
> -		delete video_;
> -		delete raw_;
>  	}
>  
>  	int init();
> @@ -62,10 +56,10 @@ public:
>  
>  	MediaDevice *media_;
>  	CameraSensor *sensor_;
> -	V4L2Subdevice *debayer_;
> -	V4L2Subdevice *scaler_;
> -	V4L2VideoDevice *video_;
> -	V4L2VideoDevice *raw_;
> +	std::unique_ptr<V4L2Subdevice> debayer_;
> +	std::unique_ptr<V4L2Subdevice> scaler_;
> +	std::unique_ptr<V4L2VideoDevice> video_;
> +	std::unique_ptr<V4L2VideoDevice> raw_;
>  	Stream stream_;
>  };
>  
> @@ -472,21 +466,21 @@ int VimcCameraData::init()
>  	if (ret)
>  		return ret;
>  
> -	debayer_ = new V4L2Subdevice(media_->getEntityByName("Debayer B"));
> +	debayer_ = V4L2Subdevice::fromEntityName(media_, "Debayer B");
>  	if (debayer_->open())
>  		return -ENODEV;
>  
> -	scaler_ = new V4L2Subdevice(media_->getEntityByName("Scaler"));
> +	scaler_ = V4L2Subdevice::fromEntityName(media_, "Scaler");
>  	if (scaler_->open())
>  		return -ENODEV;
>  
> -	video_ = new V4L2VideoDevice(media_->getEntityByName("RGB/YUV Capture"));
> +	video_ = V4L2VideoDevice::fromEntityName(media_, "RGB/YUV Capture");
>  	if (video_->open())
>  		return -ENODEV;
>  
>  	video_->bufferReady.connect(this, &VimcCameraData::bufferReady);
>  
> -	raw_ = new V4L2VideoDevice(media_->getEntityByName("Raw Capture 1"));
> +	raw_ = V4L2VideoDevice::fromEntityName(media_, "Raw Capture 1");
>  	if (raw_->open())
>  		return -ENODEV;
>  
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list