Hi Ryan, Thank you for the patch. On Fri, Sep 13, 2024 at 02:42:11PM -0500, Ryan Eatmon wrote: > The format for printing various time elements are not working for 64bit > times on a 32bit compile. > > ../git/yavta.c:2195:51: error: format '%ld' expects argument of type 'long int', but argument 8 has type '__time64_t' {aka 'long long int'} [-Werror=format=] > 2195 | printf("%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index, > | ~~^ > | | > | long int > | %lld > ...... > 2199 | buf.timestamp.tv_sec, buf.timestamp.tv_usec, > | ~~~~~~~~~~~~~~~~~~~~ > | | > | __time64_t {aka long long int} > > Change the formats to be lld/llu to accommodate the change for 32bit > compiles. Ricardo Ribalda has submitted a similar patch previously, see https://lore.kernel.org/linux-media/20230920125939.1478-1-ricardo@xxxxxxxxxxx/. It had fallen through the cracks (my bad), and I have now applied it. Could you check if it solves your problem ? > Signed-off-by: Ryan Eatmon <reatmon@xxxxxx> > --- > yavta.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/yavta.c b/yavta.c > index 3bf82b3..0655311 100644 > --- a/yavta.c > +++ b/yavta.c > @@ -2192,12 +2192,12 @@ static int video_do_capture(struct device *dev, unsigned int nframes, > > clock_gettime(CLOCK_MONOTONIC, &ts); > get_ts_flags(buf.flags, &ts_type, &ts_source); > - printf("%u (%u) [%c] %s %u %u B %ld.%06ld %ld.%06ld %.3f fps ts %s/%s\n", i, buf.index, > + printf("%u (%u) [%c] %s %u %u B %lld.%06lld %lld.%06ld %.3f fps ts %s/%s\n", i, buf.index, > (buf.flags & V4L2_BUF_FLAG_ERROR) ? 'E' : '-', > v4l2_field_name(buf.field), > buf.sequence, video_buffer_bytes_used(dev, &buf), > - buf.timestamp.tv_sec, buf.timestamp.tv_usec, > - ts.tv_sec, ts.tv_nsec/1000, fps, > + (long long int) buf.timestamp.tv_sec, (long long int) buf.timestamp.tv_usec, > + (long long int) ts.tv_sec, ts.tv_nsec/1000, fps, > ts_type, ts_source); > > last = buf.timestamp; > @@ -2254,8 +2254,8 @@ static int video_do_capture(struct device *dev, unsigned int nframes, > bps = size/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0; > fps = i/(ts.tv_nsec/1000.0+1000000.0*ts.tv_sec)*1000000.0; > > - printf("Captured %u frames in %lu.%06lu seconds (%f fps, %f B/s).\n", > - i, ts.tv_sec, ts.tv_nsec/1000, fps, bps); > + printf("Captured %u frames in %llu.%06lu seconds (%f fps, %f B/s).\n", > + i, (long long unsigned int) ts.tv_sec, ts.tv_nsec/1000, fps, bps); > > done: > video_free_buffers(dev); -- Regards, Laurent Pinchart