All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] v4l2-ctl: print delta to current clock in verbose mode
@ 2021-01-26 14:24 Max Schulze
  2021-01-27  9:02 ` Hans Verkuil
  0 siblings, 1 reply; 5+ messages in thread
From: Max Schulze @ 2021-01-26 14:24 UTC (permalink / raw)
  To: linux-media

If the Buffer Timestamp Clock is _MONOTONIC, print the delta
to the current clock time. Useful for debugging / insights.


Signed-off-by: Max Schuze <max.schulze@posteo.de>
---
  utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp 
b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
index a3580595..d024f925 100644
--- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
@@ -556,9 +556,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 ((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());

-- 
2.29.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] v4l2-ctl: print delta to current clock in verbose mode
  2021-01-26 14:24 [PATCH] v4l2-ctl: print delta to current clock in verbose mode Max Schulze
@ 2021-01-27  9:02 ` Hans Verkuil
  2021-01-27  9:19   ` Max Schulze
  0 siblings, 1 reply; 5+ messages in thread
From: Hans Verkuil @ 2021-01-27  9:02 UTC (permalink / raw)
  To: Max Schulze, linux-media

Hi Max,

On 26/01/2021 15:24, Max Schulze wrote:
> If the Buffer Timestamp Clock is _MONOTONIC, print the delta
> to the current clock time. Useful for debugging / insights.
> 
> 
> Signed-off-by: Max Schuze <max.schulze@posteo.de>
> ---
>   utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp 
> b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
> index a3580595..d024f925 100644
> --- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
> +++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
> @@ -556,9 +556,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 ((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);

I have no objection to this, but I think this needs to be enabled
with a new option (e.g. --stream-show-delta-now) to avoid cluttering
the output too much.

Regards,

	Hans

> +        }
> +
>           if (fps_ts.has_fps(true))
>               fprintf(stderr, " fps: %.02f", fps_ts.fps());
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] v4l2-ctl: print delta to current clock in verbose mode
  2021-01-27  9:02 ` Hans Verkuil
@ 2021-01-27  9:19   ` Max Schulze
  2021-01-27 10:15     ` Hans Verkuil
  0 siblings, 1 reply; 5+ messages in thread
From: Max Schulze @ 2021-01-27  9:19 UTC (permalink / raw)
  To: Hans Verkuil, linux-media

Hello Hans,

On 27.01.21 10:02, Hans Verkuil wrote:
> Hi Max,
>
> On 26/01/2021 15:24, Max Schulze wrote:
>> If the Buffer Timestamp Clock is _MONOTONIC, print the delta
>> to the current clock time. Useful for debugging / insights.
>>
>>
>> Signed-off-by: Max Schuze <max.schulze@posteo.de>
>> ---
>>    utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 8 +++++++-
>>    1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>> b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>> index a3580595..d024f925 100644
>> --- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>> +++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>> @@ -556,9 +556,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 ((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);
> I have no objection to this, but I think this needs to be enabled
> with a new option (e.g. --stream-show-delta-now) to avoid cluttering
> the output too much.
>
Note we already need to be in verbose mode and not skip_ts .

Example output:

> cap dqbuf: 0 seq:      0 bytesused: 512000 ts: 137342.420951 delta 
> last: 137342420.951 ms delta now: +56.301 ms (ts-monotonic, ts-src-soe)
> cap dqbuf: 1 seq:      2 bytesused: 512000 ts: 137342.484954 delta 
> now: +28.171 ms dropped: 1 (ts-monotonic, ts-src-soe)
> cap dqbuf: 2 seq:      3 bytesused: 512000 ts: 137342.520953 delta 
> now: +24.296 ms (ts-monotonic, ts-src-soe)
> cap dqbuf: 3 seq:      4 bytesused: 512000 ts: 137342.556925 delta 
> now: +24.269 ms (ts-monotonic, ts-src-soe)
> cap dqbuf: 0 seq:      5 bytesused: 512000 ts: 137342.592909 delta 
> now: +24.216 ms fps: 29.08 (ts-monotonic, ts-src-soe)
BTW: is this the supposed way to display the "delta last", [...] "show 
the timestamp delta between two successive frames." ?


Do you want me to make another patch with mentioned command line option?


Best,

Max


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] v4l2-ctl: print delta to current clock in verbose mode
  2021-01-27  9:19   ` Max Schulze
@ 2021-01-27 10:15     ` Hans Verkuil
  2021-01-27 11:00       ` [PATCH v2] " Max Schulze
  0 siblings, 1 reply; 5+ messages in thread
From: Hans Verkuil @ 2021-01-27 10:15 UTC (permalink / raw)
  To: Max Schulze, linux-media

On 27/01/2021 10:19, Max Schulze wrote:
> Hello Hans,
> 
> On 27.01.21 10:02, Hans Verkuil wrote:
>> Hi Max,
>>
>> On 26/01/2021 15:24, Max Schulze wrote:
>>> If the Buffer Timestamp Clock is _MONOTONIC, print the delta
>>> to the current clock time. Useful for debugging / insights.
>>>
>>>
>>> Signed-off-by: Max Schuze <max.schulze@posteo.de>
>>> ---
>>>    utils/v4l2-ctl/v4l2-ctl-streaming.cpp | 8 +++++++-
>>>    1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>>> b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>>> index a3580595..d024f925 100644
>>> --- a/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>>> +++ b/utils/v4l2-ctl/v4l2-ctl-streaming.cpp
>>> @@ -556,9 +556,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 ((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);
>> I have no objection to this, but I think this needs to be enabled
>> with a new option (e.g. --stream-show-delta-now) to avoid cluttering
>> the output too much.
>>
> Note we already need to be in verbose mode and not skip_ts .
> 
> Example output:
> 
>> cap dqbuf: 0 seq:      0 bytesused: 512000 ts: 137342.420951 delta 
>> last: 137342420.951 ms delta now: +56.301 ms (ts-monotonic, ts-src-soe)
>> cap dqbuf: 1 seq:      2 bytesused: 512000 ts: 137342.484954 delta 
>> now: +28.171 ms dropped: 1 (ts-monotonic, ts-src-soe)
>> cap dqbuf: 2 seq:      3 bytesused: 512000 ts: 137342.520953 delta 
>> now: +24.296 ms (ts-monotonic, ts-src-soe)
>> cap dqbuf: 3 seq:      4 bytesused: 512000 ts: 137342.556925 delta 
>> now: +24.269 ms (ts-monotonic, ts-src-soe)
>> cap dqbuf: 0 seq:      5 bytesused: 512000 ts: 137342.592909 delta 
>> now: +24.216 ms fps: 29.08 (ts-monotonic, ts-src-soe)
> BTW: is this the supposed way to display the "delta last", [...] "show 
> the timestamp delta between two successive frames." ?

Yes.

> 
> 
> Do you want me to make another patch with mentioned command line option?

Yes please!

Regards,

	Hans

> 
> 
> Best,
> 
> Max
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2] v4l2-ctl: print delta to current clock in verbose mode
  2021-01-27 10:15     ` Hans Verkuil
@ 2021-01-27 11:00       ` Max Schulze
  0 siblings, 0 replies; 5+ messages in thread
From: Max Schulze @ 2021-01-27 11:00 UTC (permalink / raw)
  To: Hans Verkuil, linux-media

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@posteo.de>
---

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



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-01-27 11:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-26 14:24 [PATCH] v4l2-ctl: print delta to current clock in verbose mode Max Schulze
2021-01-27  9:02 ` Hans Verkuil
2021-01-27  9:19   ` Max Schulze
2021-01-27 10:15     ` Hans Verkuil
2021-01-27 11:00       ` [PATCH v2] " Max Schulze

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.