From patchwork Tue May 19 14:54:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 19774 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E0D4E44A4FC for ; Tue, 19 May 2020 17:54:51 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A710C6880A1; Tue, 19 May 2020 17:54:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f67.google.com (mail-pj1-f67.google.com [209.85.216.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 40233680A07 for ; Tue, 19 May 2020 17:54:44 +0300 (EEST) Received: by mail-pj1-f67.google.com with SMTP id k7so1470535pjs.5 for ; Tue, 19 May 2020 07:54:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3+s2FaLJDd/arfV5l4ZOzdZkk0L5ye5YDsCTE8WZMJA=; b=s0eGDeNyCkaHpy9x7DPlSBfyzwn7frUqDRMOms1ICllYdvVcNgAouhIue/DvKAJSxL wBzwI4VOXIWkezIm66ThwCkI+KuxvJIB9WIkLJuZ0B7VzxnjEnESF3ARE9Gv8eEyWPNC GKvfD6ODHnvo+dJvZvZD1IV+ziqX1Nu8yTEySD8pY/bLyw8Tygx8IaSXjtBKct5HCB5P tgK22kDdirnpMUuak3khZuWcycooHGJ8Vp1UvxSdIWDDypqGS4nngbGW6+LJj43HgFTT Mt++N+xUwDEABfvldIeen0BMZMrcz2az8PDqH8hazPQgVPZZiW8KAmtthiWUgFTQk+7o 24Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3+s2FaLJDd/arfV5l4ZOzdZkk0L5ye5YDsCTE8WZMJA=; b=ceR7/YoH0XTtvoltNtUXFi3GglFgD7u4pjVV0GRuYI5SdnBxTfS6wRGvy2mHHY3rUM wUwQaqDu1T6UWuNN5YhN1/J2xFqPI+/evOlxdjoZnqQlbLussqukiLTe8V8sZ3y2Xgy9 n2DcnaExNVH168j1+wRWHsF0mca0wvpK2wPRhYb1ihORkGqgUl7dryw3j5U8WNyMqMJR ykQ6PM05qJg8OPqAaS3snfUAMtgc6lcjO4kyNTxI7ZwGdJkf0RMM+Bb1JZA8gRJRrZdG v0x76GVsoiVfsF+f+r3QkcWzs8hI3sMx0CFC9KAmEoPcLjQgd7JC4lP2ZsW+p2Y5nXnw aDxA== X-Gm-Message-State: AOAM533Wxj/LdffC9E6dPSIYCfrROVncCZEbRE7uq/FIJN0R3dkwYnZ7 4OicBW3B1mRwg6H8lOlI4mV4CY1x X-Google-Smtp-Source: ABdhPJx6XqA6lg2U0coJrPbq2RiglldZkZIQy56Ax1DcJ/zk03ORhsU0+XYYvXZHMA1loxmY0zfjPQ== X-Received: by 2002:a17:902:8c89:: with SMTP id t9mr21278550plo.131.1589900081848; Tue, 19 May 2020 07:54:41 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id k18sm6549249pfg.217.2020.05.19.07.54.39 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 May 2020 07:54:40 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 22:54:32 +0800 Message-Id: <1589900073-4183-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <20191126014130.15052-1-lance.lmwang@gmail.com> References: <20191126014130.15052-1-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v3 1/2] fftools: add global option to dump filter graph to stderr 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 Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang It's useful for debugging filter graph purposes, now only lavfi can do that. Reviewed-by: Carl Eugen Hoyos Signed-off-by: Limin Wang --- doc/ffmpeg.texi | 4 ++++ fftools/ffmpeg.h | 1 + fftools/ffmpeg_filter.c | 7 +++++++ fftools/ffmpeg_opt.c | 3 +++ 4 files changed, 15 insertions(+) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index ed437bb..b50fd7f 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -735,6 +735,10 @@ Technical note -- attachments are implemented as codec extradata, so this option can actually be used to extract extradata from any stream, not just attachments. +@item -dump_filtergraph (@emph{global}) +Dump filter graph to stderr. It is off by default, the option is mostly useful +for debugging filter graph purposes + @item -noautorotate Disable automatically rotating video based on file metadata. diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 38205a1..a6025d0 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -606,6 +606,7 @@ extern AVIOContext *progress_avio; extern float max_error_rate; extern char *videotoolbox_pixfmt; +extern int dump_filtergraph; extern int filter_nbthreads; extern int filter_complex_nbthreads; extern int vstats_version; diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 8b5b157..46dfb25 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1106,6 +1106,13 @@ int configure_filtergraph(FilterGraph *fg) if ((ret = avfilter_graph_config(fg->graph, NULL)) < 0) goto fail; + if (dump_filtergraph) { + char *dump = avfilter_graph_dump(fg->graph, NULL); + fputs(dump, stderr); + fflush(stderr); + av_free(dump); + } + /* limit the lists of allowed formats to the ones selected, to * make sure they stay the same if the filtergraph is reconfigured later */ for (i = 0; i < fg->nb_outputs; i++) { diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 60bb437..9179fd3 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -161,6 +161,7 @@ int copy_ts = 0; int start_at_zero = 0; int copy_tb = -1; int debug_ts = 0; +int dump_filtergraph = 0; int exit_on_error = 0; int abort_on_flags = 0; int print_stats = -1; @@ -3548,6 +3549,8 @@ const OptionDef options[] = { { "dump_attachment", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_EXPERT | OPT_INPUT, { .off = OFFSET(dump_attachment) }, "extract an attachment into a file", "filename" }, + { "dump_filtergraph", OPT_BOOL, { &dump_filtergraph }, + "dump filter graph to stderr" }, { "stream_loop", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_INPUT | OPT_OFFSET, { .off = OFFSET(loop) }, "set number of times input stream shall be looped", "loop count" }, { "debug_ts", OPT_BOOL | OPT_EXPERT, { &debug_ts }, From patchwork Tue May 19 14:54:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 19775 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 6A2CB44A4FC for ; Tue, 19 May 2020 17:54:57 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4DDF1688118; Tue, 19 May 2020 17:54:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9680F6880AA for ; Tue, 19 May 2020 17:54:50 +0300 (EEST) Received: by mail-pf1-f193.google.com with SMTP id x15so28521pfa.1 for ; Tue, 19 May 2020 07:54:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=SbOghiAiE/DYuOG52rfKPC4KCCC2I0LuJd7/9FNWw28=; b=pcCaGmh7z/Sefcdktw1hn7m9wAZ4ZSmKM0MkRUkCJCT9oObXi6MWwTYef6BN5Jq12e MGUuORHOsRN3biyvlmNdFhCrtIJ7/OM03PnYCEg6QRefwImm5HuPAk80R2RhwD1oiQ9D w0+xiZGTboPMOy4TXtNlgztd72mE2vMBkTvqo63CeXzhfQQOvmsP3309CQ6fCc5EmsTj V1bWn/hwg4XZwQXKpf9ay5arktlm44j/nOF1ELk2ev2y/WxL9KbNpo3p08/zqWgYnlwE 2WfCEJHvr6mecwInaq2ZnDF8LgoYLkNeIdxK7uTsGm/NeM3F30WyUwagJN7qdJYH6Ug4 IgZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=SbOghiAiE/DYuOG52rfKPC4KCCC2I0LuJd7/9FNWw28=; b=XXcHQj24ZGsxFWhx2SBKRmgdfIpYSblMRESAIe8NkPf7h6pQIho3mdi7ommjsoa9XQ JoyCPJ20mjD1RQOGH8C732ilxvGytpFtrNhiIyA2Y/VkAriRUpt4y8llf6bPartu07Jh cr3JDWxtPt0KPvj00cx053c7Uue5HZ9OwSyX7nKtPdydK1N53gpfAKFqLVymA2VIPr3X 11a60MGLG3I6IfyAqFQA8154YfzVT7OlnRfmQkeZKq0QWKIlIPLbg6S3a4GpsacIS2kL gQxClPxUQ8DN4AhB7Prr6TF9sRl3WgKDmEaxVLNisCQBBDft3YqbLSUibhsdHG1L8549 GK7w== X-Gm-Message-State: AOAM531bw7rGpiiU2qtzSTSsYgN58GNjyhX5XdU7vj5oMZtB2vEGu8K2 cuIc8I8m/oM4Wi757hIhCjmaN/d3 X-Google-Smtp-Source: ABdhPJwMh1ZHUempvyGQFsnFpE0FPYQwYNVkq0hX2Z4Hg/MGhOAu8JXsDmqBNITq9fXNyU5QNtqWLg== X-Received: by 2002:a63:30c2:: with SMTP id w185mr19355452pgw.353.1589900088272; Tue, 19 May 2020 07:54:48 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id k18sm6549249pfg.217.2020.05.19.07.54.46 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 May 2020 07:54:47 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 19 May 2020 22:54:33 +0800 Message-Id: <1589900073-4183-2-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1589900073-4183-1-git-send-email-lance.lmwang@gmail.com> References: <20191126014130.15052-1-lance.lmwang@gmail.com> <1589900073-4183-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v3 2/2] avdevice/lavf: change the dumpgraph option to bool type 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 Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang dumpgraph option currently uses string types, but actually only requires bool type Signed-off-by: Limin Wang --- doc/indevs.texi | 2 +- libavdevice/lavfi.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/indevs.texi b/doc/indevs.texi index 6f5afaf..0ce61f2 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -974,7 +974,7 @@ filters. Syntax of the filtergraph is the same as the one specified by the option @var{graph}. @item dumpgraph -Dump graph to stderr. +Dump graph to stderr. Boolean value, by default disabled. @end table diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c index c949ff7..57c3070 100644 --- a/libavdevice/lavfi.c +++ b/libavdevice/lavfi.c @@ -47,7 +47,7 @@ typedef struct { AVClass *class; ///< class for private options char *graph_str; char *graph_filename; - char *dump_graph; + int dump_graph; AVFilterGraph *graph; AVFilterContext **sinks; int *sink_stream_map; @@ -301,7 +301,7 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx) goto end; if (lavfi->dump_graph) { - char *dump = avfilter_graph_dump(lavfi->graph, lavfi->dump_graph); + char *dump = avfilter_graph_dump(lavfi->graph, NULL); if (dump != NULL) { fputs(dump, stderr); fflush(stderr); @@ -493,7 +493,7 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt) static const AVOption options[] = { { "graph", "set libavfilter graph", OFFSET(graph_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { "graph_file","set libavfilter graph filename", OFFSET(graph_filename), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC}, - { "dumpgraph", "dump graph to stderr", OFFSET(dump_graph), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, + { "dumpgraph", "dump graph to stderr", OFFSET(dump_graph), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DEC }, { NULL }, };