From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 083CB4452C for ; Tue, 17 Jan 2023 21:52:43 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D7A0A68BE97; Tue, 17 Jan 2023 23:52:39 +0200 (EET) Received: from mail-yw1-f171.google.com (mail-yw1-f171.google.com [209.85.128.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 09EDD68B6A0 for ; Tue, 17 Jan 2023 23:52:34 +0200 (EET) Received: by mail-yw1-f171.google.com with SMTP id 00721157ae682-4b6255ce5baso441766387b3.11 for ; Tue, 17 Jan 2023 13:52:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=vHZHfmh8cOoxYArSJ3Sw1fcJcH5GUbjZoEhao7L/8wg=; b=hZl/BHbfLRJx3376NX8LXGigURiJ2q//2kMya2v9naKsQ3oPcN5q6pSYXBwFdnTArK cIUSGHP690Wkck0e5IwejteLUvYNsG0p9t6REr5nEUWc9kCgXZayPXV1PRB2stxECyEY TszREW/h9aQSWB1BIbHr3dx6n6WMP9WVMZrv9CwOZeeDAJZC9aPMQO7nce+HRrt5hHdA rbc8ZqAJLZigPtEJ9bFGJvYo577rVhGlhmIFbqFwybY9hiGSUGBBzFcuSCzOnx2R0r+w /MkzXYzOj3hdo94wNy++NueaHwmW4xLsgtcHr2pYd0EVOJtP/oz0r9HJ6JyJ5R0OseW8 BpgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vHZHfmh8cOoxYArSJ3Sw1fcJcH5GUbjZoEhao7L/8wg=; b=C8vUwOEr6eyypLesBGzyL0lx6PrVmw7Mq64//dXT6d/FcqPQD54+W3xEZeq0p+wyum hHaU9I0DQVeFljQFJ9Yu4YjBVJms1rI6SxbgjSF+W2gl5HLuAYWYi4YjgP/Om+y7wrVw 3Brrnczg2xrRxzgzUGSTxNc5YJJVGl7ABJ8lnn9qCQiIMrPGgeXRZBgaH9UQGvlxfRYh 7UkgncU+/QWTXCZlMotnj+7FCN32xEncYKgrG55+D7lTr0J62RfpknQaD5JACW093qDk YUOOeGJY4bhEDG2Z7iQHd6/cNo+ua/L02CD0DRu+I44918hTPG8YVM0QqeM+3vzisLIV 8qXA== X-Gm-Message-State: AFqh2kovkbuKaCq/+zyJOSx8tKe8ufzUdUow9RstR5omU1VW+lk4QW9l NV/tTVnqppnjSUGbW+fdRq08oHGsW05NHN3KV5eE6KJaC5o= X-Google-Smtp-Source: AMrXdXvpvl/7uxOITmuAGb7xvL8+MCSLY/rBTW58h5FvbsfHOxZZJ0k56X6+t1QndmbpMI1wkLfu4CxUQrNwicDP6Po= X-Received: by 2002:a81:2587:0:b0:391:7188:7454 with SMTP id l129-20020a812587000000b0039171887454mr599393ywl.212.1673992352098; Tue, 17 Jan 2023 13:52:32 -0800 (PST) MIME-Version: 1.0 From: Prakash Date: Tue, 17 Jan 2023 13:52:21 -0800 Message-ID: To: ffmpeg-devel@ffmpeg.org Content-Type: multipart/mixed; boundary="0000000000008120a505f27cb752" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] libavutil/log: Support for logging timestamps in the log X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --0000000000008120a505f27cb752 Content-Type: text/plain; charset="UTF-8" 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 --- 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 --0000000000008120a505f27cb752 Content-Type: application/octet-stream; name="0001-libavutil-log-Support-for-logging-timestamps-in-the-.patch" Content-Disposition: attachment; filename="0001-libavutil-log-Support-for-logging-timestamps-in-the-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ld0rsltf0 RnJvbSA2YWE0Yzg1Y2EyOTYwNjcyMTM4OTVhOWQ2YmNjNjdmYmRhYmRiNGUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQcmFrYXNoIER1Z2dhcmFqdSA8ZHVnZ2FyYWp1QGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAxNyBKYW4gMjAyMyAxMToyNDoyNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd IGxpYmF2dXRpbC9sb2c6IFN1cHBvcnQgZm9yIGxvZ2dpbmcgdGltZXN0YW1wcyBpbiB0aGUgbG9n LiBBZGQKICd0aW1lJyBmbGFnIHRvIHRoZSAtbG9nbGV2ZWwgb3B0aW9uIHRvIHR1cm4gb24gdGlt ZXN0YW1wIGxvZ2dpbmcuIFVzZWZ1bCBmb3IKIHRyb3VibGVzaG9vdGluZyB3aGVyZSB0aW1lIGlz IHNwZW50IGZyb20gdGhlIGxvZyBmaWxlcy4KCi0tLQogZG9jL2ZmdG9vbHMtY29tbW9uLW9wdHMu dGV4aSB8ICA0ICsrKysKIGZmdG9vbHMvb3B0X2NvbW1vbi5jICAgICAgICAgfCAgNiArKysrKysK IGxpYmF2dXRpbC9sb2cuYyAgICAgICAgICAgICAgfCAxNCArKysrKysrKysrKysrKwogbGliYXZ1 dGlsL2xvZy5oICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDMy IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2MvZmZ0b29scy1jb21tb24tb3B0cy50ZXhp IGIvZG9jL2ZmdG9vbHMtY29tbW9uLW9wdHMudGV4aQppbmRleCBkOTE0NTcwNGQ2Li5hM2NmOWVi NTdkIDEwMDY0NAotLS0gYS9kb2MvZmZ0b29scy1jb21tb24tb3B0cy50ZXhpCisrKyBiL2RvYy9m ZnRvb2xzLWNvbW1vbi1vcHRzLnRleGkKQEAgLTIwMSw2ICsyMDEsMTAgQEAgYW5kIHRoZSAiTGFz dCBtZXNzYWdlIHJlcGVhdGVkIG4gdGltZXMiIGxpbmUgd2lsbCBiZSBvbWl0dGVkLgogSW5kaWNh dGVzIHRoYXQgbG9nIG91dHB1dCBzaG91bGQgYWRkIGEgQGNvZGV7W2xldmVsXX0gcHJlZml4IHRv IGVhY2ggbWVzc2FnZQogbGluZS4gVGhpcyBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0 byBsb2cgY29sb3JpbmcsIGUuZy4gd2hlbiBkdW1waW5nIHRoZQogbG9nIHRvIGZpbGUuCitAaXRl bSB0aW1lCitJbmRpY2F0ZXMgdGhhdCBsb2cgb3V0cHV0IHNob3VsZCBhZGQgYSBAY29kZXtbdGlt ZV19IHByZWZpeCB0byBlYWNoIG1lc3NhZ2UKK2xpbmUuIFRoZSB0aW1lIGlzIHRoZSByZWxhdGl2 ZSB0aW1lIGluIG1pY3Jvc2Vjb25kcyBwcmVjaXNpb24uIFRoaXMgY2FuIGJlCit1c2VmdWwgZm9y IHRyb3VibGVzaG9vdGluZyB3aGVyZSB0aW1lIGlzIHNwZW50IGZyb20gdGhlIGxvZ3MuCiBAZW5k IHRhYmxlCiBGbGFncyBjYW4gYWxzbyBiZSB1c2VkIGFsb25lIGJ5IGFkZGluZyBhICcrJy8nLScg cHJlZml4IHRvIHNldC9yZXNldCBhIHNpbmdsZQogZmxhZyB3aXRob3V0IGFmZmVjdGluZyBvdGhl ciBAdmFye2ZsYWdzfSBvciBjaGFuZ2luZyBAdmFye2xvZ2xldmVsfS4gV2hlbgpkaWZmIC0tZ2l0 IGEvZmZ0b29scy9vcHRfY29tbW9uLmMgYi9mZnRvb2xzL29wdF9jb21tb24uYwppbmRleCA4YTA2 ZGY4MmRmLi5hMDgxYWQ2YjA4IDEwMDY0NAotLS0gYS9mZnRvb2xzL29wdF9jb21tb24uYworKysg Yi9mZnRvb2xzL29wdF9jb21tb24uYwpAQCAtMTI2OSw2ICsxMjY5LDEyIEBAIGludCBvcHRfbG9n bGV2ZWwodm9pZCAqb3B0Y3R4LCBjb25zdCBjaGFyICpvcHQsIGNvbnN0IGNoYXIgKmFyZykKICAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQVZfTE9HX1BSSU5U X0xFVkVMOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGF2X3N0cnN0YXJ0KHRv a2VuLCAidGltZSIsICZhcmcpKSB7CisgICAgICAgICAgICBpZiAoY21kID09ICctJykgeworICAg ICAgICAgICAgICAgIGZsYWdzICY9IH5BVl9MT0dfUFJJTlRfVElNRTsKKyAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQVZfTE9HX1BSSU5UX1RJTUU7CisgICAg ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg fQpkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2xvZy5jIGIvbGliYXZ1dGlsL2xvZy5jCmluZGV4IDU5 NDhlNTA0NjcuLmNjMTY0MjcxNzggMTAwNjQ0Ci0tLSBhL2xpYmF2dXRpbC9sb2cuYworKysgYi9s aWJhdnV0aWwvbG9nLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJpbnRlcm5hbC5oIgog I2luY2x1ZGUgImxvZy5oIgogI2luY2x1ZGUgInRocmVhZC5oIgorI2luY2x1ZGUgInRpbWUuaCIK IAogc3RhdGljIEFWTXV0ZXggbXV0ZXggPSBBVl9NVVRFWF9JTklUSUFMSVpFUjsKIApAQCAtMzE5 LDYgKzMyMCwxOSBAQCBzdGF0aWMgdm9pZCBmb3JtYXRfbGluZSh2b2lkICphdmNsLCBpbnQgbGV2 ZWwsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2bCwKICAgICBpZiAoKnByaW50X3ByZWZpeCAm JiAobGV2ZWwgPiBBVl9MT0dfUVVJRVQpICYmIChmbGFncyAmIEFWX0xPR19QUklOVF9MRVZFTCkp CiAgICAgICAgIGF2X2JwcmludGYocGFydCsyLCAiWyVzXSAiLCBnZXRfbGV2ZWxfc3RyKGxldmVs KSk7CiAKKyAgICBpZiAoKnByaW50X3ByZWZpeCAmJiAobGV2ZWwgPiBBVl9MT0dfUVVJRVQpICYm IChmbGFncyAmIEFWX0xPR19QUklOVF9USU1FKSkgeworICAgICAgICBpbnQgc2VjcywgbWluczsK KyAgICAgICAgaW50NjRfdCBob3VyczsKKyAgICAgICAgaW50NjRfdCB0aW1lID0gYXZfZ2V0dGlt ZV9yZWxhdGl2ZSgpOworICAgICAgICBmbG9hdCBtaWxsaXMgPSAodGltZSAlIDEwMDAwMCkgLyAx MDAwLjBmOworICAgICAgICB0aW1lICAvPSAxMDAwMDAwOworICAgICAgICBzZWNzID0gdGltZSAl IDYwOworICAgICAgICB0aW1lIC89IDYwOworICAgICAgICBtaW5zID0gdGltZSAlIDYwOworICAg ICAgICBob3VycyA9IHRpbWUgLyA2MDsKKyAgICAgICAgYXZfYnByaW50ZihwYXJ0KzIsICJbJWxk aDolMDJkbTolMDJkczolMDcuMDNmbXNdICIsIGhvdXJzLCBtaW5zLCBzZWNzLCBtaWxsaXMpOwor ICAgIH0KKwogICAgIGF2X3ZicHJpbnRmKHBhcnQrMywgZm10LCB2bCk7CiAKICAgICBpZigqcGFy dFswXS5zdHIgfHwgKnBhcnRbMV0uc3RyIHx8ICpwYXJ0WzJdLnN0ciB8fCAqcGFydFszXS5zdHIp IHsKZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9sb2cuaCBiL2xpYmF2dXRpbC9sb2cuaAppbmRleCBh YjdjZWFiZTIyLi4yZTJkODNmNmQwIDEwMDY0NAotLS0gYS9saWJhdnV0aWwvbG9nLmgKKysrIGIv bGliYXZ1dGlsL2xvZy5oCkBAIC0zNzcsNiArMzc3LDE0IEBAIGludCBhdl9sb2dfZm9ybWF0X2xp bmUyKHZvaWQgKnB0ciwgaW50IGxldmVsLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmwsCiAg Ki8KICNkZWZpbmUgQVZfTE9HX1BSSU5UX0xFVkVMIDIKIAorLyoqCisgKiBJbmNsdWRlIHRoZSBz eXN0ZW0gdGltZSB3aXRoIGVhY2ggbG9nIG1lc3NhZ2UuCisgKiBVc2VmdWwgZm9yIHRyb3VibGVz aG9vdGluZyB3aGVyZSB0aGUgdGltZSB3YXMgc3BlbnQuCisgKiBSZXN1bHRzIGluIG1lc3NhZ2Vz IHN1Y2ggYXM6CisgKiBbcmF3dmlkZW8gQCAweERFQURCRUVGXSBbMDFoOjAzbTowNXM6My4xMTJt c10gW2Vycm9yXSBlbmNvZGUgZGlkIG5vdCBwcm9kdWNlIHZhbGlkIHB0cworICovCisjZGVmaW5l IEFWX0xPR19QUklOVF9USU1FIDQKKwogdm9pZCBhdl9sb2dfc2V0X2ZsYWdzKGludCBhcmcpOwog aW50IGF2X2xvZ19nZXRfZmxhZ3Modm9pZCk7CiAKLS0gCjIuMzQuMQoK --0000000000008120a505f27cb752 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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". --0000000000008120a505f27cb752--