[libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align where to call base class queueRequest()

Jacopo Mondi jacopo at jmondi.org
Wed Nov 6 09:11:09 CET 2019


Hi Niklas,
    thanks for the patch

On Mon, Oct 28, 2019 at 03:22:22AM +0100, Niklas Söderlund wrote:
> The PipelineHandler base class queueRequest() where called at different
> points in different pipeline handlers. Align where they are called to
> make it easier to read different pipeline implementations.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
>  src/libcamera/pipeline/ipu3/ipu3.cpp     | 5 +++--
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 +---
>  src/libcamera/pipeline/uvcvideo.cpp      | 4 +---
>  src/libcamera/pipeline/vimc.cpp          | 4 +---
>  4 files changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 8d3ad568d16e9f8f..06ee6ccac641eb41 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -768,9 +768,10 @@ int PipelineHandlerIPU3::queueRequest(Camera *camera, Request *request)
>  			error = ret;
>  	}
>
> -	PipelineHandler::queueRequest(camera, request);
> +	if (error)
> +		return error;

I wonder if, since we are now queueing the request if no buffer
queuing fails, isn't it better to return immediately as soon as

		int ret = stream->device_->dev->queueBuffer(buffer);

fails, in the for() loop ?


>
> -	return error;
> +	return PipelineHandler::queueRequest(camera, request);

Here and in all below parts: PipelineHandler::queueRequest() returns 0
unconditionally. As of now this patch does not change anything, but
maybe in future we'll made queueRequest() return a real value, so it
might be good to have it like this already ?

Thanks
   j

>  }
>
>  bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 7a28b03b8d38c8b9..a99df4f8b846d8b7 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -814,8 +814,6 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)
>  	RkISP1CameraData *data = cameraData(camera);
>  	Stream *stream = &data->stream_;
>
> -	PipelineHandler::queueRequest(camera, request);
> -
>  	RkISP1FrameInfo *info = data->frameInfo_.create(data->frame_, request,
>  							stream);
>  	if (!info)
> @@ -833,7 +831,7 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)
>
>  	data->frame_++;
>
> -	return 0;
> +	return PipelineHandler::queueRequest(camera, request);
>  }
>
>  /* -----------------------------------------------------------------------------
> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
> index fae0ffc4de30e1b7..dc17b456af6987e6 100644
> --- a/src/libcamera/pipeline/uvcvideo.cpp
> +++ b/src/libcamera/pipeline/uvcvideo.cpp
> @@ -281,9 +281,7 @@ int PipelineHandlerUVC::queueRequest(Camera *camera, Request *request)
>  	if (ret < 0)
>  		return ret;
>
> -	PipelineHandler::queueRequest(camera, request);
> -
> -	return 0;
> +	return PipelineHandler::queueRequest(camera, request);
>  }
>
>  bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp
> index c16ae4cb76b57e1c..5f83ae2b85997828 100644
> --- a/src/libcamera/pipeline/vimc.cpp
> +++ b/src/libcamera/pipeline/vimc.cpp
> @@ -341,9 +341,7 @@ int PipelineHandlerVimc::queueRequest(Camera *camera, Request *request)
>  	if (ret < 0)
>  		return ret;
>
> -	PipelineHandler::queueRequest(camera, request);
> -
> -	return 0;
> +	return PipelineHandler::queueRequest(camera, request);
>  }
>
>  bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
> --
> 2.23.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20191106/93aa9fb3/attachment.sig>


More information about the libcamera-devel mailing list