[libcamera-devel] [PATCH 2/3] libcamera: v4l2_videodevice: Clarify setting of v4l2_buffer timestamp

Umang Jain umang.jain at ideasonboard.com
Thu Mar 17 11:47:39 CET 2022


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 at ideasonboard.com>
---
 src/libcamera/v4l2_videodevice.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index 5580269f..a6c54b19 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-men,
+		 * 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;
 	}
-- 
2.31.0



More information about the libcamera-devel mailing list