Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] libavutil/log: Support for logging timestamps in the log
@ 2023-01-17 21:52 Prakash
  2023-01-18  8:51 ` Tobias Rapp
  0 siblings, 1 reply; 8+ messages in thread
From: Prakash @ 2023-01-17 21:52 UTC (permalink / raw)
  To: ffmpeg-devel

[-- Attachment #1: Type: text/plain, Size: 3656 bytes --]

libavutil/log: Support for logging timestamps in the log.
Add 'time' flag to the -loglevel option to turn on timestamp logging.
Useful for troubleshooting where time is spent from the log files.

Signed-off-by: Prakash Duggaraju <duggaraju@gmail.com>

---

 doc/fftools-common-opts.texi |  4 ++++

 fftools/opt_common.c         |  6 ++++++

 libavutil/log.c              | 14 ++++++++++++++

 libavutil/log.h              |  8 ++++++++

 4 files changed, 32 insertions(+)



diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi

index d9145704d6..a3cf9eb57d 100644

--- a/doc/fftools-common-opts.texi

+++ b/doc/fftools-common-opts.texi

@@ -201,6 +201,10 @@ and the "Last message repeated n times" line will be
omitted.

 Indicates that log output should add a @code{[level]} prefix to each
message

 line. This can be used as an alternative to log coloring, e.g. when
dumping the

 log to file.

+@item time

+Indicates that log output should add a @code{[time]} prefix to each message

+line. The time is the relative time in microseconds precision. This can be

+useful for troubleshooting where time is spent from the logs.

 @end table

 Flags can also be used alone by adding a '+'/'-' prefix to set/reset a
single

 flag without affecting other @var{flags} or changing @var{loglevel}. When

diff --git a/fftools/opt_common.c b/fftools/opt_common.c

index 8a06df82df..a081ad6b08 100644

--- a/fftools/opt_common.c

+++ b/fftools/opt_common.c

@@ -1269,6 +1269,12 @@ int opt_loglevel(void *optctx, const char *opt,
const char *arg)

             } else {

                 flags |= AV_LOG_PRINT_LEVEL;

             }

+        } else if (av_strstart(token, "time", &arg)) {

+            if (cmd == '-') {

+                flags &= ~AV_LOG_PRINT_TIME;

+            } else {

+                flags |= AV_LOG_PRINT_TIME;

+            }

         } else {

             break;

         }

diff --git a/libavutil/log.c b/libavutil/log.c

index 5948e50467..cc16427178 100644

--- a/libavutil/log.c

+++ b/libavutil/log.c

@@ -42,6 +42,7 @@

 #include "internal.h"

 #include "log.h"

 #include "thread.h"

+#include "time.h"



 static AVMutex mutex = AV_MUTEX_INITIALIZER;



@@ -319,6 +320,19 @@ static void format_line(void *avcl, int level, const
char *fmt, va_list vl,

     if (*print_prefix && (level > AV_LOG_QUIET) && (flags &
AV_LOG_PRINT_LEVEL))

         av_bprintf(part+2, "[%s] ", get_level_str(level));



+    if (*print_prefix && (level > AV_LOG_QUIET) && (flags &
AV_LOG_PRINT_TIME)) {

+        int secs, mins;

+        int64_t hours;

+        int64_t time = av_gettime_relative();

+        float millis = (time % 100000) / 1000.0f;

+        time  /= 1000000;

+        secs = time % 60;

+        time /= 60;

+        mins = time % 60;

+        hours = time / 60;

+        av_bprintf(part+2, "[%ldh:%02dm:%02ds:%07.03fms] ", hours, mins,
secs, millis);

+    }

+

     av_vbprintf(part+3, fmt, vl);



     if(*part[0].str || *part[1].str || *part[2].str || *part[3].str) {

diff --git a/libavutil/log.h b/libavutil/log.h

index ab7ceabe22..2e2d83f6d0 100644

--- a/libavutil/log.h

+++ b/libavutil/log.h

@@ -377,6 +377,14 @@ int av_log_format_line2(void *ptr, int level, const
char *fmt, va_list vl,

  */

 #define AV_LOG_PRINT_LEVEL 2



+/**

+ * Include the system time with each log message.

+ * Useful for troubleshooting where the time was spent.

+ * Results in messages such as:

+ * [rawvideo @ 0xDEADBEEF] [01h:03m:05s:3.112ms] [error] encode did not
produce valid pts

+ */

+#define AV_LOG_PRINT_TIME 4

+

 void av_log_set_flags(int arg);

 int av_log_get_flags(void);



-- 

2.34.1

[-- Attachment #2: 0001-libavutil-log-Support-for-logging-timestamps-in-the-.patch --]
[-- Type: application/octet-stream, Size: 3690 bytes --]

[-- Attachment #3: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

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

end of thread, other threads:[~2023-02-17 18:55 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-17 21:52 [FFmpeg-devel] [PATCH] libavutil/log: Support for logging timestamps in the log Prakash
2023-01-18  8:51 ` Tobias Rapp
2023-01-18 23:20   ` Prakash
2023-01-19  8:24     ` Tobias Rapp
2023-02-17  0:16       ` Prakash
2023-02-17 11:07         ` Anton Khirnov
2023-02-17 11:49           ` Lynne
2023-02-17 18:55             ` Prakash

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git