[libcamera-devel] [PATCH v2 2/2] pipeline: ipu3: Skip recording timestamp for cancelled buffers

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Aug 16 18:08:22 CEST 2021


On 16/08/2021 15:35, Umang Jain wrote:
> There is no point in recording sensor's timestamp when V4L2VideoDevice
> has marked the frame buffers with FrameMetadata::FrameCancelled
> (happens when the streams are stopped). The cancelled buffers
> handling block will proceed to cleanup and cause an early
> return in cio2BufferReady() anyway and we are sure that at this
> point, there is no useful purposes of setting the timestamp.

The metadata of a cancelled buffer is invalid, so setting them has no
meaning.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>


> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 6e26a7b7..1c4776be 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -1318,15 +1318,6 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
>  
>  	Request *request = info->request;
>  
> -	/*
> -	 * Record the sensor's timestamp in the request metadata.
> -	 *
> -	 * \todo The sensor timestamp should be better estimated by connecting
> -	 * to the V4L2Device::frameStart signal.
> -	 */
> -	request->metadata().set(controls::SensorTimestamp,
> -				buffer->metadata().timestamp);
> -
>  	/* If the buffer is cancelled force a complete of the whole request. */
>  	if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
>  		for (auto it : request->buffers()) {
> @@ -1340,6 +1331,15 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
>  		return;
>  	}
>  
> +	/*
> +	 * Record the sensor's timestamp in the request metadata.
> +	 *
> +	 * \todo The sensor timestamp should be better estimated by connecting
> +	 * to the V4L2Device::frameStart signal.
> +	 */
> +	request->metadata().set(controls::SensorTimestamp,
> +				buffer->metadata().timestamp);
> +
>  	if (request->findBuffer(&rawStream_))
>  		pipe_->completeBuffer(request, buffer);
>  
> 


More information about the libcamera-devel mailing list