[PATCH v2] v4l2-ctl: print delta to current clock in verbose mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux