summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYudhistira Erlandinata <yerlandinata@chromium.org>2024-10-16 13:17:28 +0000
committerJacopo Mondi <jacopo.mondi@ideasonboard.com>2024-10-30 15:48:19 +0100
commitd66f54ca157b5226398f54e1bb04554fc38715f7 (patch)
tree02dae22936deb51fed70ea3c6a69dfbbeee61547
parentb2b35994d37c4427d310a3d29c02cece20b97a77 (diff)
libcamera: reserve frame sequence reported from the hardware
Originally libcamera resets the sequence to 0 on streamOn. However, However, there are occasions when the user needs the original hardware sequence to query processing information of the particular frame. The patch reserves the hwSequence in the FrameMetadata. Signed-off-by: Yudhistira Erlandinata <yerlandinata@chromium.org> Co-developed-by: Harvey Yang <chenghaoyang@chromium.org> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org>
-rw-r--r--include/libcamera/framebuffer.h1
-rw-r--r--src/libcamera/framebuffer.cpp9
-rw-r--r--src/libcamera/v4l2_videodevice.cpp1
3 files changed, 11 insertions, 0 deletions
diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h
index ff839243..fccfaa82 100644
--- a/include/libcamera/framebuffer.h
+++ b/include/libcamera/framebuffer.h
@@ -34,6 +34,7 @@ struct FrameMetadata {
Status status;
unsigned int sequence;
+ unsigned int hwSequence;
uint64_t timestamp;
Span<Plane> planes() { return planes_; }
diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp
index 826848f7..d9d6294b 100644
--- a/src/libcamera/framebuffer.cpp
+++ b/src/libcamera/framebuffer.cpp
@@ -87,6 +87,15 @@ LOG_DEFINE_CATEGORY(Buffer)
*/
/**
+ * \var FrameMetadata::hwSequence
+ * \brief The real hardware Frame sequence number
+ *
+ * \a FrameMetadata::sequence auto-corrects the initial value to zero on frame
+ * start. This value keeps the original hardware sequence to allow users to
+ * query processing information of particular frames.
+ */
+
+/**
* \var FrameMetadata::timestamp
* \brief Time when the frame was captured
*
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index 14eba056..9bc677ed 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -1862,6 +1862,7 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()
? FrameMetadata::FrameError
: FrameMetadata::FrameSuccess;
metadata.sequence = buf.sequence;
+ metadata.hwSequence = buf.sequence;
metadata.timestamp = buf.timestamp.tv_sec * 1000000000ULL
+ buf.timestamp.tv_usec * 1000ULL;