If the Buffer Timestamp Clock is _MONOTONIC, print the delta
to the current clock time
needs --stream-show-delta-now together with --verbose
Signed-off-by: Max Schuze <max.schulze@xxxxxxxxx>
---
Changes since v1:
* Hide behind command-line Option
utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 12 +++++++++++-
utils/v4l2-ctl/v4l2-ctl.cpp | 1 +
utils/v4l2-ctl/v4l2-ctl.h | 1 +
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
index a3580595..df465561 100644
--- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
@@ -326,6 +326,10 @@ void streaming_usage()
" --stream-out-dmabuf\n"
" output video using dmabuf
[VIDIOC_(D)QBUF]\n"
" Requires a corresponding
--stream-mmap option.\n"
+ " --stream-show-delta-now\n"
+ " output the difference between the
buffer timestamp and current\n"
+ " clock, if the buffer timestamp source
is the monotonic clock.\n"
+ " requires --verbose\n"
" --list-patterns list available patterns for use with
--stream-pattern.\n"
" --list-buffers list all video buffers
[VIDIOC_QUERYBUF]\n"
" --list-buffers-out list all video output buffers
[VIDIOC_QUERYBUF]\n"
@@ -556,9 +560,15 @@ static void print_concise_buffer(FILE *f,
cv4l_buffer &buf, cv4l_fmt &fmt,
double ts = buf.g_timestamp().tv_sec +
buf.g_timestamp().tv_usec / 1000000.0;
fprintf(f, " ts: %.06f", ts);
if (last_ts <= 0.0)
- fprintf(f, " delta: %.03f ms", (ts - last_ts) * 1000.0);
+ fprintf(f, " delta last: %.03f ms", (ts - last_ts) * 1000.0);
last_ts = ts;
+ if (options[OptStreamShowDeltaNow] && (buf.g_flags() &
V4L2_BUF_FLAG_TIMESTAMP_MASK) == V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) {
+ timespec ts_clock;
+ clock_gettime(CLOCK_MONOTONIC, &ts_clock);
+ fprintf(f, " delta now: %+.03f ms", ((ts_clock.tv_sec +
ts_clock.tv_nsec / 1000000000.0) - ts) * 1000.0);
+ }
+
if (fps_ts.has_fps(true))
fprintf(stderr, " fps: %.02f", fps_ts.fps());
diff --git a/utils/v4l2-ctl/v4l2-ctl.cpp b/utils/v4l2-ctl/v4l2-ctl.cpp
index 6da4698a..4e179f77 100644
--- a/utils/v4l2-ctl/v4l2-ctl.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl.cpp
@@ -265,6 +265,7 @@ static struct option long_options[] = {
{"stream-out-mmap", optional_argument, nullptr, OptStreamOutMmap},
{"stream-out-user", optional_argument, nullptr, OptStreamOutUser},
{"stream-out-dmabuf", no_argument, nullptr, OptStreamOutDmaBuf},
+ {"stream-show-delta-now", no_argument, nullptr,
OptStreamShowDeltaNow},
{"list-patterns", no_argument, nullptr, OptListPatterns},
{"version", no_argument, nullptr, OptVersion},
{nullptr, 0, nullptr, 0}
diff --git a/utils/v4l2-ctl/v4l2-ctl.h b/utils/v4l2-ctl/v4l2-ctl.h
index a4f193cc..909b96e4 100644
--- a/utils/v4l2-ctl/v4l2-ctl.h
+++ b/utils/v4l2-ctl/v4l2-ctl.h
@@ -245,6 +245,7 @@ enum Option {
OptStreamOutMmap,
OptStreamOutUser,
OptStreamOutDmaBuf,
+ OptStreamShowDeltaNow,
OptListPatterns,
OptHelpTuner,
OptHelpIO,
--
2.29.0