libcamera: simple: Report sensor timestamp
Report the sensor's timestamp in the Request metadata using the completed buffer timestamp. The buffer's timestamp is recorded at DMA-transfer time, and it does not theoretically matches the 'start of exposure' definition. Record this with a \todo entry. Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
62f53a0f22
commit
922833f774
1 changed files with 11 additions and 1 deletions
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/media-bus-format.h>
|
#include <linux/media-bus-format.h>
|
||||||
|
|
||||||
#include <libcamera/camera.h>
|
#include <libcamera/camera.h>
|
||||||
|
#include <libcamera/control_ids.h>
|
||||||
#include <libcamera/request.h>
|
#include <libcamera/request.h>
|
||||||
#include <libcamera/stream.h>
|
#include <libcamera/stream.h>
|
||||||
|
|
||||||
|
@ -1116,6 +1117,16 @@ void SimplePipelineHandler::bufferReady(FrameBuffer *buffer)
|
||||||
return;
|
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 if the platform provides it.
|
||||||
|
*/
|
||||||
|
Request *request = buffer->request();
|
||||||
|
request->metadata().set(controls::SensorTimestamp,
|
||||||
|
buffer->metadata().timestamp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Queue the captured and the request buffer to the converter if format
|
* Queue the captured and the request buffer to the converter if format
|
||||||
* conversion is needed. If there's no queued request, just requeue the
|
* conversion is needed. If there's no queued request, just requeue the
|
||||||
|
@ -1133,7 +1144,6 @@ void SimplePipelineHandler::bufferReady(FrameBuffer *buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Otherwise simply complete the request. */
|
/* Otherwise simply complete the request. */
|
||||||
Request *request = buffer->request();
|
|
||||||
completeBuffer(request, buffer);
|
completeBuffer(request, buffer);
|
||||||
completeRequest(request);
|
completeRequest(request);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue