diff options
author | Yudhistira Erlandinata <yerlandinata@chromium.org> | 2024-10-16 13:17:28 +0000 |
---|---|---|
committer | Jacopo Mondi <jacopo.mondi@ideasonboard.com> | 2024-10-30 15:48:19 +0100 |
commit | d66f54ca157b5226398f54e1bb04554fc38715f7 (patch) | |
tree | 02dae22936deb51fed70ea3c6a69dfbbeee61547 | |
parent | b2b35994d37c4427d310a3d29c02cece20b97a77 (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.h | 1 | ||||
-rw-r--r-- | src/libcamera/framebuffer.cpp | 9 | ||||
-rw-r--r-- | src/libcamera/v4l2_videodevice.cpp | 1 |
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; |