From patchwork Wed Mar 28 15:03:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Rapp X-Patchwork-Id: 8209 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp569571jad; Wed, 28 Mar 2018 08:04:14 -0700 (PDT) X-Google-Smtp-Source: AIpwx48FqtQJ3M0klmFE3adrVxRzzU5j9LBegsIP56TsylUCs03zbCPV06I+fNdK0CkKu1dsX0k5 X-Received: by 10.223.135.161 with SMTP id b30mr3065318wrb.189.1522249454786; Wed, 28 Mar 2018 08:04:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522249454; cv=none; d=google.com; s=arc-20160816; b=VPEQXQwiQUJZ6Q2TNKtyGORdYlEIU9iU6NACWdMtFRWVGAniTiZdatZ0wkZqlUaS+t mveWiXrYvROtAiOQEGGrz73+/f8fTg+mkqa/PvHqUqQohldFPgOWtE1AgntjF7xLnob/ 747CY3/BQszPSTcB8qHALFJFrKDuYEEdZAwhsoqRler8tAiGUIOl/FdXc0hrGS6z45zS wKPdvT1RZghvR/LMmkaqowWgA8nq9YWLCg8gh9J2VWghc/RNWdXNcdoqfWy7SqQyGFPW FNoThQ0S6ePgPgfaZGByORs9QHW5baR47326SbGp9vMiQ8qA2VXdLz5TmocOcznMYBEV I5Pw== 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:references:in-reply-to:message-id:date :to:from:delivered-to:arc-authentication-results; bh=o63SncaJb74RtndOKhCHp3DGJj82OPB0pm0Au4oFZuw=; b=jj71NzdoSLcMaUdOQTQgJe4g3BjPsMT9a5Uqza2vAS98bOrNAulgcmDwcnn1YgTM10 wbmNaOcDDZktBJw5dr85Ci/YC9C5plSNdR7IY/iZ5vxg9Szjerzdhp0ZcHVJqRrAIU+w y0ZmWZW4RQoMR9+31dRd/eYcOmsr3LxKSDyd2VZiepojkAG8qFwbcHVe2fGMwfjSw0XU vocSQo9Wpmps2r+41HOO9oR30LVvP2+d5UhO6m2Jvqv0kEdGrNpEJ+UBcMKSykh+BFMB TcN8JMgIqBW1oJ0++gjWmXx01h8yZJ/MyEhjjy+j0KOiZImEZDHi1VAbmtuiB96pj1y8 3KPw== 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 q11si3094838wra.428.2018.03.28.08.04.14; Wed, 28 Mar 2018 08:04:14 -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 0EDE6689C27; Wed, 28 Mar 2018 18:03:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx01.mail.netstorage.at (mx01.mail.netstorage.at [89.207.144.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5531A689B08 for ; Wed, 28 Mar 2018 18:03:39 +0300 (EEST) Received: from p1002.netstorage.at (p1002.netstorage.at [89.207.146.186]) by mx01.mail.netstorage.at (Postfix) with ESMTPS id 01F22A0042 for ; Wed, 28 Mar 2018 17:03:42 +0200 (CEST) Received: from mailix (noaport.de [46.237.252.213]) by p1002.netstorage.at (Postfix) with ESMTPA id B485E81B3C for ; Wed, 28 Mar 2018 17:03:41 +0200 (CEST) Received: from frogstar-a.kuhnle.local (frogstar-a.kuhnle.local [192.168.0.26]) by mailix with ESMTPA ; Wed, 28 Mar 2018 17:03:49 +0200 From: Tobias Rapp To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Mar 2018 17:03:39 +0200 Message-Id: <1522249420-5373-2-git-send-email-t.rapp@noa-archive.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1522249420-5373-1-git-send-email-t.rapp@noa-archive.com> References: <1521642030-22067-1-git-send-email-t.rapp@noa-archive.com> <1522249420-5373-1-git-send-email-t.rapp@noa-archive.com> X-PPP-Message-ID: <20180328150341.11614.63291@p1002.netstorage.at> X-PPP-Vhost: noa-archive.com X-NetStorage-MailScanner-Information: Please contact the ISP for more information X-NetStorage-MailScanner-ID: 01F22A0042.A21C6 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 v3 2/3] avutil/log: add av_log_set_opts function 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 log level and flag values from string. Signed-off-by: Tobias Rapp --- doc/APIchanges | 3 +++ libavutil/log.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ libavutil/log.h | 16 +++++++++++ libavutil/version.h | 2 +- 4 files changed, 96 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 83c7a40..2d14452 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2017-10-21 API changes, most recent first: +2018-03-xx - xxxxxxx - lavu 56.13.100 - log.h + Add av_log_set_opts(). + 2018-03-xx - xxxxxxx - lavc 58.16.100 - avcodec.h Add FF_SUB_CHARENC_MODE_IGNORE. diff --git a/libavutil/log.c b/libavutil/log.c index 0a99d01..af32cd6 100644 --- a/libavutil/log.c +++ b/libavutil/log.c @@ -34,6 +34,7 @@ #endif #include #include +#include "avassert.h" #include "avutil.h" #include "bprint.h" #include "common.h" @@ -402,6 +403,81 @@ void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)) av_log_callback = callback; } +int av_log_set_opts(const char *arg) +{ + const struct { const char *name; int level; } log_levels[] = { + { "quiet" , AV_LOG_QUIET }, + { "panic" , AV_LOG_PANIC }, + { "fatal" , AV_LOG_FATAL }, + { "error" , AV_LOG_ERROR }, + { "warning", AV_LOG_WARNING }, + { "info" , AV_LOG_INFO }, + { "verbose", AV_LOG_VERBOSE }, + { "debug" , AV_LOG_DEBUG }, + { "trace" , AV_LOG_TRACE }, + }; + const char *token; + char *tail; + int flags = av_log_get_flags(); + int level = av_log_get_level(); + int cmd, i = 0; + + av_assert0(arg); + while (*arg) { + token = arg; + if (*token == '+' || *token == '-') { + cmd = *token++; + } else { + cmd = 0; + } + if (!i && !cmd) { + flags = 0; /* missing relative prefix, build absolute value */ + } + if (!strncmp(token, "repeat", 6)) { + if (cmd == '-') { + flags |= AV_LOG_SKIP_REPEATED; + } else { + flags &= ~AV_LOG_SKIP_REPEATED; + } + arg = token + 6; + } else if (!strncmp(token, "level", 5)) { + if (cmd == '-') { + flags &= ~AV_LOG_PRINT_LEVEL; + } else { + flags |= AV_LOG_PRINT_LEVEL; + } + arg = token + 5; + } else { + break; + } + i++; + } + if (!*arg) { + goto end; + } else if (*arg == '+') { + arg++; + } else if (!i) { + flags = av_log_get_flags(); /* level value without prefix, reset flags */ + } + + for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) { + if (!strcmp(arg, log_levels[i].name)) { + level = log_levels[i].level; + goto end; + } + } + + level = strtol(arg, &tail, 10); + if (*tail) { + return -1; + } + +end: + av_log_set_flags(flags); + av_log_set_level(level); + return 0; +} + static void missing_feature_sample(int sample, void *avc, const char *msg, va_list argument_list) { diff --git a/libavutil/log.h b/libavutil/log.h index d9554e6..97010f7 100644 --- a/libavutil/log.h +++ b/libavutil/log.h @@ -356,6 +356,22 @@ void av_log_set_flags(int arg); int av_log_get_flags(void); /** + * Set log flags and level as an option string. Accepts "repeat" and "level" + * flags mapped to AV_LOG_SKIP_REPEATED (inverted) and AV_LOG_PRINT_LEVEL, + * followed by the log level specified either by name ("warning", "info", + * "verbose", etc.) or by number. + * + * When flags are prefixed with "+" or "-" the change is relative to the + * current flags value. When both flags and level are present a "+" separator + * is expected between last flag and before level. + * + * @param arg log option string + * @return Returns a negative value if parsing the option string failed, + * otherwise returns 0. + */ +int av_log_set_opts(const char *arg); + +/** * @} */ diff --git a/libavutil/version.h b/libavutil/version.h index d3dd2df..296c24b 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 56 -#define LIBAVUTIL_VERSION_MINOR 12 +#define LIBAVUTIL_VERSION_MINOR 13 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \