[libcamera-devel] [PATCH 05/13] libcamera: pipeline: rkisp1: Create RkISP1Frames from camera data

Niklas Söderlund niklas.soderlund at ragnatech.se
Mon Sep 14 11:31:34 CEST 2020


Hi Jacopo,

On 2020-08-20 10:42:27 +0200, Jacopo Mondi wrote:
> Hi Niklas,
> 
> On Thu, Aug 13, 2020 at 02:52:38AM +0200, Niklas Söderlund wrote:
> > Create RkISP1Frames from camera data instead of picking information out
> > form it. This is done to prepare for multi stream support where more
> > information from the camera data will be needed.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> > ---
> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 13 +++++++------
> >  1 file changed, 7 insertions(+), 6 deletions(-)
> >
> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> > index a1cda12d244f2d97..9d5a52d352aefabc 100644
> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> > @@ -52,6 +52,7 @@ static const std::array<PixelFormat, 7> RKISP1_RSZ_MP_FORMATS{
> >
> >  class PipelineHandlerRkISP1;
> >  class RkISP1ActionQueueBuffers;
> > +class RkISP1CameraData;
> >
> >  enum RkISP1ActionType {
> >  	SetSensor,
> > @@ -77,7 +78,7 @@ class RkISP1Frames
> >  public:
> >  	RkISP1Frames(PipelineHandler *pipe);
> >
> > -	RkISP1FrameInfo *create(unsigned int frame, Request *request, Stream *stream);
> > +	RkISP1FrameInfo *create(const RkISP1CameraData *data, Request *request);
> 
> Should data be a const & ?

It could but camera data is a pointer in all other places and I see no 
harm in keeping it the same here.

> 
> This apart, the patch looks good
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> 
> Thanks
>   j
> 
> >  	int destroy(unsigned int frame);
> >  	void clear();
> >
> > @@ -242,8 +243,10 @@ RkISP1Frames::RkISP1Frames(PipelineHandler *pipe)
> >  {
> >  }
> >
> > -RkISP1FrameInfo *RkISP1Frames::create(unsigned int frame, Request *request, Stream *stream)
> > +RkISP1FrameInfo *RkISP1Frames::create(const RkISP1CameraData *data, Request *request)
> >  {
> > +	unsigned int frame = data->frame_;
> > +
> >  	if (pipe_->availableParamBuffers_.empty()) {
> >  		LOG(RkISP1, Error) << "Parameters buffer underrun";
> >  		return nullptr;
> > @@ -256,7 +259,7 @@ RkISP1FrameInfo *RkISP1Frames::create(unsigned int frame, Request *request, Stre
> >  	}
> >  	FrameBuffer *statBuffer = pipe_->availableStatBuffers_.front();
> >
> > -	FrameBuffer *videoBuffer = request->findBuffer(stream);
> > +	FrameBuffer *videoBuffer = request->findBuffer(&data->stream_);
> >  	if (!videoBuffer) {
> >  		LOG(RkISP1, Error)
> >  			<< "Attempt to queue request with invalid stream";
> > @@ -880,10 +883,8 @@ void PipelineHandlerRkISP1::stop(Camera *camera)
> >  int PipelineHandlerRkISP1::queueRequestDevice(Camera *camera, Request *request)
> >  {
> >  	RkISP1CameraData *data = cameraData(camera);
> > -	Stream *stream = &data->stream_;
> >
> > -	RkISP1FrameInfo *info = data->frameInfo_.create(data->frame_, request,
> > -							stream);
> > +	RkISP1FrameInfo *info = data->frameInfo_.create(data, request);
> >  	if (!info)
> >  		return -ENOENT;
> >
> > --
> > 2.28.0
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel at lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list