From patchwork Wed Mar 14 08:55:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Rapp X-Patchwork-Id: 7990 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp1755852jad; Wed, 14 Mar 2018 01:56:00 -0700 (PDT) X-Google-Smtp-Source: AG47ELsS03jORn0OP2sMXaBinPpfpJmHBA+IzYPuG97jr7Eelz9KfKNHMQBNIfypvTZlRWjF5+// X-Received: by 10.28.54.227 with SMTP id y96mr868378wmh.15.1521017759935; Wed, 14 Mar 2018 01:55:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521017759; cv=none; d=google.com; s=arc-20160816; b=1J8h6tHKKHG2pNCjRUJHTdHdo9x4FxfCzbxibjOlVlKwf8o/Q/M1Ehb8VetOaOnCRm Eg7msIIFeGHj6GxQcI66kFombHt0H5IprmDzq7/0HebChC+hM0krdJzUBrrkC5L5gQSY XdUiF4vhEeK1WMYd9Y5RPgzVoS9P88Zl16RKz5hvSspf2OEqsXaqzLavaMZz3obCB0eq 3F0zg6COHidjfG5uK2O/pwQzMAF2L14hWEbWR/GA/C8WUSu5UpIlDCPgV6EuNHV95IxY 8Un4G5wvaR5w8TbJT6iu1GZbTzdWvay0tg4wnTneo8HClCg49p7F0SrYLjUIxocfzA+o nsfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to :arc-authentication-results; bh=kJVQT9PdcqfAp8mzEeVmz21zWQadKbUdLKvFgmYsLO4=; b=Ht/Ax8U+FulpOOTT6zA7t0Pmu+QiGTvDZPSLWzsGhrb9xqSJNjedo7wGANXzyalvUV FVjojtYyucalBMrj2owQUX/dwzzSaAVWUO3tN5EhtUeh4ha3eO6rXkSGHGtS9NC1gbXW jsf00GkYbzW5Afng0UdbaGDWNQugidfKjPXJhU6Dy6+9eK6ciIOiHMOnRMLgpJOOU4+W /2CVKuJgGqINDA6OAEz1JjE2r+8WHJuyopqeu4+q86HSvpmt/2kabzbHB5Qkl0RlvV1Y oi2vG1Ghvm69WN6vHF3LczKGKftl6v05rX4iT30VDKgj9kAOsFGf0q/dTQkr68qqPe+H 0C6w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s2si613228wmf.100.2018.03.14.01.55.59; Wed, 14 Mar 2018 01:55:59 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 892EF68A123; Wed, 14 Mar 2018 10:55:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx02.mail.netstorage.at (mx02.mail.netstorage.at [89.207.146.155]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88C35689F72 for ; Wed, 14 Mar 2018 10:55:31 +0200 (EET) Received: from p1002.netstorage.at (p1002.netstorage.at [89.207.146.186]) by mx02.mail.netstorage.at (Postfix) with ESMTPS id 9F7DFA246A for ; Wed, 14 Mar 2018 09:55:24 +0100 (CET) Received: from mailix (noaport.de [46.237.252.213]) by p1002.netstorage.at (Postfix) with ESMTPA id C75CD81BAB for ; Wed, 14 Mar 2018 09:55:23 +0100 (CET) Received: from frogstar-a.kuhnle.local (frogstar-a.kuhnle.local [192.168.0.26]) by mailix with ESMTPA ; Wed, 14 Mar 2018 09:55:23 +0100 From: Tobias Rapp To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 Mar 2018 09:55:22 +0100 Message-Id: <1521017723-28753-1-git-send-email-t.rapp@noa-archive.com> X-Mailer: git-send-email 2.7.4 X-PPP-Message-ID: <20180314085524.8955.54808@p1002.netstorage.at> X-PPP-Vhost: noa-archive.com X-NetStorage-MailScanner-Information: Please contact the ISP for more information X-NetStorage-MailScanner-ID: 9F7DFA246A.A64D7 X-NetStorage-MailScanner: Found to be clean X-NetStorage-MailScanner-SpamCheck: not spam (whitelisted), SpamAssassin (nicht zwischen gespeichert, Wertung=-0.5, benoetigt 6, autolearn=not spam, BAYES_00 -0.50) X-NetStorage-MailScanner-From: t.rapp@noa-archive.com X-Spam-Status: No Subject: [FFmpeg-devel] [PATCH 1/2] fftools/cmdutils: add logflags option X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Allows to set the AV_LOG_PRINT_LEVEL and AV_LOG_SKIP_REPEATED flags using a distinct command-line option, similar to other flag options. Previously only the AV_LOG_SKIP_REPEATED flag was supported as a prefix to the "loglevel" option value. Signed-off-by: Tobias Rapp --- doc/fftools-common-opts.texi | 13 +++++++++++++ fftools/cmdutils.c | 31 +++++++++++++++++++++++++++++++ fftools/cmdutils.h | 6 ++++++ 3 files changed, 50 insertions(+) diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi index 185ec21..dd69741 100644 --- a/doc/fftools-common-opts.texi +++ b/doc/fftools-common-opts.texi @@ -209,6 +209,19 @@ the environment variable @env{AV_LOG_FORCE_COLOR}. The use of the environment variable @env{NO_COLOR} is deprecated and will be dropped in a future FFmpeg version. +@item -logflags flags (@emph{global}) +Allows to set or clear logging flags. + +Possible flags for this option are: +@table @option +@item repeat +Repeated log output will not be compressed to the first line and the "Last +message repeated n times" line will be omitted. +@item level +Add a @code{[level]} prefix string to each log message. Can be used as an +alternative to log coloring e.g. when dumping the log to file. +@end table + @item -report Dump full command line and console output to a file named @code{@var{program}-@var{YYYYMMDD}-@var{HHMMSS}.log} in the current diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 0c7d13c..11fe69a 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -514,6 +514,9 @@ void parse_loglevel(int argc, char **argv, const OptionDef *options) idx = locate_option(argc, argv, options, "v"); if (idx && argv[idx + 1]) opt_loglevel(NULL, "loglevel", argv[idx + 1]); + idx = locate_option(argc, argv, options, "logflags"); + if (idx && argv[idx + 1]) + opt_logflags(NULL, "logflags", argv[idx + 1]); idx = locate_option(argc, argv, options, "report"); if ((env = getenv("FFREPORT")) || idx) { init_report(env); @@ -918,6 +921,34 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg) return 0; } +int opt_logflags(void *optctx, const char *opt, const char *arg) +{ + static const AVOption logflags_opts[] = { + { "flags" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, INT64_MAX, .unit = "flags" }, + /* implement AV_LOG_SKIP_REPEATED using inverse logic for consistency with the -loglevel option */ + { "repeat", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_LOG_SKIP_REPEATED }, .unit = "flags" }, + { "level" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_LOG_PRINT_LEVEL }, .unit = "flags" }, + { NULL }, + }; + static const AVClass class = { + .class_name = "logflags", + .item_name = av_default_item_name, + .option = logflags_opts, + .version = LIBAVUTIL_VERSION_INT, + }; + const AVClass *pclass = &class; + int flags = av_log_get_flags(); + int ret; + + flags ^= AV_LOG_SKIP_REPEATED; + if ((ret = av_opt_eval_flags(&pclass, &logflags_opts[0], arg, &flags)) < 0) + return ret; + flags ^= AV_LOG_SKIP_REPEATED; + + av_log_set_flags(flags); + return 0; +} + static void expand_filename_template(AVBPrint *bp, const char *template, struct tm *tm) { diff --git a/fftools/cmdutils.h b/fftools/cmdutils.h index 8724489..28735b2 100644 --- a/fftools/cmdutils.h +++ b/fftools/cmdutils.h @@ -99,6 +99,11 @@ int opt_default(void *optctx, const char *opt, const char *arg); */ int opt_loglevel(void *optctx, const char *opt, const char *arg); +/** + * Update the log flags of libav* libraries. + */ +int opt_logflags(void *optctx, const char *opt, const char *arg); + int opt_report(const char *opt); int opt_max_alloc(void *optctx, const char *opt, const char *arg); @@ -236,6 +241,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags, { "colors", OPT_EXIT, { .func_arg = show_colors }, "show available color names" }, \ { "loglevel", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" }, \ { "v", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" }, \ + { "logflags", HAS_ARG, { .func_arg = opt_logflags }, "set logging flags", "flags" }, \ { "report", 0, { (void*)opt_report }, "generate a report" }, \ { "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" }, \ { "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" }, \