[libcamera-devel] [PATCH] libcamera: pipeline: vimc: create camera for Sensor B

Niklas Söderlund niklas.soderlund at ragnatech.se
Mon Feb 4 16:55:37 CET 2019


Hi Kieran,

Thanks for your feedback.

On 2019-02-04 16:40:43 +0100, Kieran Bingham wrote:
> Hi Niklas,
> 
> On 01/02/2019 16:13, Niklas Söderlund wrote:
> > Create a camera for Sensor B of the vimc pipeline. At this stage only
> > Sensor B is exposed while the are in total two sensors in the graph.
> > Going forward Sensor A should also be exposed as another camera. Sensor
> > B was chosen since the graph is configured correctly for it out of the
> > box. As we lack control over sub devices formats it's not really
> > possible to use Sensor A yet with the library.
> > 
> > Once both cameras are registered with the library they should be
> > extended to provide two streams each, one for the raw output and one for
> > the output which uses the shared scaler.
> > 
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> > ---
> >  src/libcamera/pipeline/vimc.cpp | 17 +++++++++++++++--
> >  1 file changed, 15 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp
> > index 6ed069edec550a61..6ab6e203785499ec 100644
> > --- a/src/libcamera/pipeline/vimc.cpp
> > +++ b/src/libcamera/pipeline/vimc.cpp
> > @@ -12,6 +12,7 @@
> >  #include "log.h"
> >  #include "media_device.h"
> >  #include "pipeline_handler.h"
> > +#include "v4l2_device.h"
> >  
> >  namespace libcamera {
> >  
> > @@ -33,16 +34,20 @@ public:
> >  
> >  private:
> >  	std::shared_ptr<MediaDevice> media_;
> > +	V4L2Device *video_;
> >  	Stream stream_;
> >  };
> >  
> >  PipeHandlerVimc::PipeHandlerVimc(CameraManager *manager)
> > -	: PipelineHandler(manager), media_(nullptr)
> > +	: PipelineHandler(manager), media_(nullptr), video_(nullptr)
> >  {
> >  }
> >  
> >  PipeHandlerVimc::~PipeHandlerVimc()
> >  {
> > +	if (video_)
> > +		delete video_;
> 
> I don't think you need the if (video_) here.
> delete (nullptr); should be safe.
> 
> Other than that,
> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

With this fixed pushed to master.

> 
> 
> > +
> >  	if (media_)
> >  		media_->release();
> >  }
> > @@ -93,8 +98,16 @@ bool PipeHandlerVimc::match(DeviceEnumerator *enumerator)
> >  
> >  	media_->acquire();
> >  
> > +	video_ = new V4L2Device(*media_->getEntityByName("Raw Capture 1"));
> > +
> > +	if (video_->open()) {
> > +		media_->release();
> > +		return false;
> > +	}
> > +
> >  	std::vector<Stream *> streams{ &stream_ };
> > -	std::shared_ptr<Camera> camera = Camera::create(this, "Dummy VIMC Camera", streams);
> > +	std::shared_ptr<Camera> camera = Camera::create(this, "VIMC Sensor B",
> > +							streams);
> >  	registerCamera(std::move(camera));
> >  
> >  	return true;
> > 
> 
> -- 
> Regards
> --
> Kieran

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list