summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUmang Jain <umang.jain@ideasonboard.com>2022-03-17 16:17:39 +0530
committerUmang Jain <umang.jain@ideasonboard.com>2022-03-23 21:52:57 +0530
commitb24e39be48ffa581ef93044084bc3b4d20053804 (patch)
tree3ad484db5fabd8fb325027e37f0dcb43c520825c
parentea9bc717bd0988f481956178fd0c399998b016f7 (diff)
libcamera: v4l2_videodevice: Clarify setting of v4l2_buffer timestamp
Add a comment to clarify why we set v4l2_buffer timestamp while queuing the buffer (VIDIOC_QBUF). The timstamps are required to be supplied for memory-to-memory devices for output streams which then are copied to capture stream buffers with the help of V4L2_BUF_FLAG_TIMESTAMP_COPY (set by the driver). Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--src/libcamera/v4l2_videodevice.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index 5580269f..95b9c38b 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -1600,6 +1600,14 @@ int V4L2VideoDevice::queueBuffer(FrameBuffer *buffer)
buf.length = planes[0].length;
}
+ /*
+ * Timestamps are to be supplied if the device is a mem-to-mem
+ * device. The drivers will have V4L2_BUF_FLAG_TIMESTAMP_COPY
+ * set hence these timestamps will be copied from the output
+ * buffers to capture buffers. If the device is not mem-to-mem,
+ * there is no harm in setting the timestamps as they will be
+ * ignored (and over-written).
+ */
buf.timestamp.tv_sec = metadata.timestamp / 1000000000;
buf.timestamp.tv_usec = (metadata.timestamp / 1000) % 1000000;
}