From 0253bb9e683c332f479d30a8af6987541411eda3 Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 9 Apr 2025 10:45:03 +0200 Subject: [PATCH 1/3] avutil/log: Add log flag AV_LOG_PRINT_MEMADDRESS and hide addresses by default Memory addresses are no longer printed by default. With this flag set, memory addresses are included like in earlier versions. Signed-off-by: softworkz --- doc/APIchanges | 3 +++ libavutil/log.c | 6 ++++-- libavutil/log.h | 5 +++++ libavutil/version.h | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 91710bb27d6ff..244fff4e1cdd8 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -1,5 +1,8 @@ The last version increases of all libraries were on 2025-03-28 +2025-03-xx - xxxxxxxxxx - lavu 60.4.100 - log.h + Add flag AV_LOG_PRINT_MEMADDRESS + API changes, most recent first: 2025-05-21 - xxxxxxxxxx - lavu 60.3.100 - avassert.h diff --git a/libavutil/log.c b/libavutil/log.c index 2b721aea5a261..d09db1ebf6747 100644 --- a/libavutil/log.c +++ b/libavutil/log.c @@ -328,16 +328,18 @@ static void format_line(void *avcl, int level, const char *fmt, va_list vl, if(type) type[0] = type[1] = AV_CLASS_CATEGORY_NA + 16; if (*print_prefix && avc) { + const char *p_fmt = flags & AV_LOG_PRINT_MEMADDRESS ? "[%s @ %p] " : "[%s] "; + if (avc->parent_log_context_offset) { AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) + avc->parent_log_context_offset); if (parent && *parent) { - av_bprintf(part+0, "[%s @ %p] ", + av_bprintf(part+0, p_fmt, item_name(parent, *parent), parent); if(type) type[0] = get_category(parent); } } - av_bprintf(part+1, "[%s @ %p] ", + av_bprintf(part+1, p_fmt, item_name(avcl, avc), avcl); if(type) type[1] = get_category(avcl); } diff --git a/libavutil/log.h b/libavutil/log.h index ac5b08b632cd7..79e44d97d9e89 100644 --- a/libavutil/log.h +++ b/libavutil/log.h @@ -417,6 +417,11 @@ int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, */ #define AV_LOG_PRINT_DATETIME 8 +/** + * Print memory addresses of context instances. + */ +#define AV_LOG_PRINT_MEMADDRESS 16 + void av_log_set_flags(int arg); int av_log_get_flags(void); diff --git a/libavutil/version.h b/libavutil/version.h index 2979f802332a7..6e82f039c5c56 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 60 -#define LIBAVUTIL_VERSION_MINOR 3 +#define LIBAVUTIL_VERSION_MINOR 4 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ From fd66ba0b05daeca2aeaf48b51bb2a654718a4663 Mon Sep 17 00:00:00 2001 From: softworkz Date: Thu, 10 Apr 2025 02:05:45 +0200 Subject: [PATCH 2/3] fftools: add mem log flag for printing memory addresses This commit adds the mem log flag. When specifying this flag at the command line, context prefixes will be printed with memory addresses like in earlier ffmpeg versions. Example with mem flag: [hevc @ 0000018e72a89cc0] ..... without (new behavior): [hevc] ..... Signed-off-by: softworkz --- fftools/opt_common.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fftools/opt_common.c b/fftools/opt_common.c index c2f6b9de2a75d..e4afef77073e6 100644 --- a/fftools/opt_common.c +++ b/fftools/opt_common.c @@ -1301,6 +1301,12 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg) } else { flags |= AV_LOG_PRINT_DATETIME; } + } else if (av_strstart(token, "mem", &arg)) { + if (cmd == '-') { + flags &= ~AV_LOG_PRINT_MEMADDRESS; + } else { + flags |= AV_LOG_PRINT_MEMADDRESS; + } } else { break; } @@ -1332,6 +1338,7 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg) av_log(NULL, AV_LOG_FATAL, "\"level\"\n"); av_log(NULL, AV_LOG_FATAL, "\"time\"\n"); av_log(NULL, AV_LOG_FATAL, "\"datetime\"\n"); + av_log(NULL, AV_LOG_FATAL, "\"mem\"\n"); return AVERROR(EINVAL); } From fd233fb2cf724df39c48df35efc7e89654402c3f Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 9 Apr 2025 16:58:24 +0200 Subject: [PATCH 3/3] doc/fftools-common-opts: document mem log flag Signed-off-by: softworkz --- doc/fftools-common-opts.texi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi index f6d452c40eb3d..5d66af6b02090 100644 --- a/doc/fftools-common-opts.texi +++ b/doc/fftools-common-opts.texi @@ -230,6 +230,8 @@ log to file. Indicates that log lines should be prefixed with time information. @item datetime Indicates that log lines should be prefixed with date and time information. +@item mem +Indicates that context prefixes should be printed with memory address. @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