[libcamera-devel] [PATCH v4 05/16] libcamera: ipu3: Report sensor timestamp

Niklas Söderlund niklas.soderlund at ragnatech.se
Sat May 1 10:05:56 CEST 2021


Hi Jacopo,

On 2021-05-01 09:51:03 +0200, Jacopo Mondi wrote:
> Hi Niklas,
> 
> On Sat, May 01, 2021 at 08:26:49AM +0200, Niklas Söderlund wrote:
> > Hi Jacopo,
> >
> > Thanks for your work.
> >
> > On 2021-04-30 18:00:15 +0200, Jacopo Mondi wrote:
> > > Report the sensor's timestamp in the Request metadata by using the
> > > CIO2 buffer timestamp as an initial approximation.
> > >
> > > The buffer's timestamp is recorded at DMA-transfer time, and it does not
> > > theoretically matches the 'start of exposure' definition, but when used
> > > to compare two consecutive frames it gives an acceptable estimation of
> > > the sensor frame period duration.
> > >
> > > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > > Reviewed-by: Hirokazu Honda <hiroh at chromium.org>
> > > Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > > ---
> > >  src/libcamera/pipeline/ipu3/ipu3.cpp | 9 +++++++++
> > >  1 file changed, 9 insertions(+)
> > >
> > > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> > > index 73306cea6b37..88b7bd1e52c3 100644
> > > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> > > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> > > @@ -1255,6 +1255,15 @@ 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.
> >
> > I still believe getting the timestamp from the buffer as done in this
> > patch is much better then creating a timestamp in user-space at the
> > frameStart signal.
> 
> Thing is the buffer is timestamped in kernel space at the end of the
> DMA transfer in the CIO2 driver not at exposure begin time.

My worry is that the jitter in user-space will render the timestamp 
unreliable and I don't see it as unreasonable that a timestamp created 
in user-space as a result of a SOE V4L2 event will be later then a 
timestamp from the kernels end of DMA.

If the V4L2 SOE event where to be augmented with a timestamp I agree 
that would be better then a timestamp from end of DMA.

> 
> For sake of comparing frame durations I agree this is acceptable, but
> contradicts the Control definition and this should be noted down imho.

Creating a timestamp in user-space for the SOE event also contradicts 
the Control definition. IMHO end of DMA and user-space ts are equally 
wrong with regard to the Control, but end of DMA is at least more 
deterministic. In a pinch 'end of DMA' - 'exposure time' would be a 
better estimate.

> 
> >
> > Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> >
> > > +	 */
> > > +	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()) {
> > > --
> > > 2.31.1
> > >
> > > _______________________________________________
> > > libcamera-devel mailing list
> > > libcamera-devel at lists.libcamera.org
> > > https://lists.libcamera.org/listinfo/libcamera-devel
> >
> > --
> > Regards,
> > Niklas Söderlund

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list