From patchwork Fri May 22 23: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: 19810 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 A675944A51A for ; Sat, 23 May 2020 02:54:50 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8BDDD68806F; Sat, 23 May 2020 02:54:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f68.google.com (mail-pj1-f68.google.com [209.85.216.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73C5768805D for ; Sat, 23 May 2020 02:54:43 +0300 (EEST) Received: by mail-pj1-f68.google.com with SMTP id l73so2596529pjb.1 for ; Fri, 22 May 2020 16:54:43 -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=zd7PTtkJ9VBpmkXFIqmQQQiUD70kgub+eIKdaFClM2E=; b=bmSJtNxWbJv2BTqdJjM30MOD0/w36mGD5/Fc/HYLHt6YGberEeiI0tYg9IpAMHPKe9 OOaNn/03rVxzUuK/Z2TPSfehmlSXc8mfeirgoNDa6QEQqEMYTSYhw/cHPbHaHizxzqon kgK5edPd8bRh2qspI9Wn09L+1a79VBT/oawb5mCra0YeKXrTyreaetFiW/HAilN9yTXu HT0E81opMrS1MI8jJcwbcTKF9sEOMQXnXmLu027szEQCZOo0Q80S7nAF87BdjfKhhqvU pv8cVg7bZYfn/maTc8hk/GSiMrzJShRJhj3EwJ85NYeyweVPUJwtd1QHMbVLBeb2xyuv T/Ow== 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=zd7PTtkJ9VBpmkXFIqmQQQiUD70kgub+eIKdaFClM2E=; b=HJb3hyl+NSYJP1i9MyvcwMCSe6hd9hR97ztqpd3jlfmfg2cwoDrWM58xTZx+yrg5L7 nOEHGA9DRSFc78hjdDae/xdFjkCq5XdQCwd+tdDkx2KO+0XVpUww0RQ3O94UHdpZlEXi 2rbjYXZOPR0SiNsEJjK8Ir1oyXZWrcSHAPGaLo29BAVrk4d1tYRIRdDOM1RuueYof2P8 /phRmw41HjDNRfS7JURjak7K4ow5uhsq4hfmM3CoiMBV9Fwv3ys8Pg6LEwYkWZ74dynM +LIyrs111R/QT5rm2RUNyK6zw0d9lRXpiE3k68jIolhBqHtHJZx6MIxRQ0+Xr989UfjJ LyWQ== X-Gm-Message-State: AOAM532H5HtJnj3sx9fPla5fS/JhuiYJUr9waORD3f+EqmfxRWGsEjCS EqrrIX/e0fVj89gC7P7oVMOm4xgK X-Google-Smtp-Source: ABdhPJwqVkGk6PhVteMufLbUc8DK++32bq3/IK0DqFArA8lqBnLbDCiy0Z10kZkzOL+J2KmuMRXkgQ== X-Received: by 2002:a17:90b:4010:: with SMTP id ie16mr7311537pjb.138.1590191681623; Fri, 22 May 2020 16:54:41 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id t20sm7611708pjo.13.2020.05.22.16.54.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 May 2020 16:54:41 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Sat, 23 May 2020 07:54:33 +0800 Message-Id: <1590191673-2181-2-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590191673-2181-1-git-send-email-lance.lmwang@gmail.com> References: <1589900073-4183-1-git-send-email-lance.lmwang@gmail.com> <1590191673-2181-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4 2/2] avdevice/lavf: add more options to dump filter graph 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 Signed-off-by: Limin Wang --- doc/indevs.texi | 16 ++++++++++++++-- libavdevice/lavfi.c | 19 +++++++++++++------ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/doc/indevs.texi b/doc/indevs.texi index 6f5afaf..a1bd9e1 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -973,8 +973,20 @@ Set the filename of the filtergraph to be read and sent to the other filters. Syntax of the filtergraph is the same as the one specified by the option @var{graph}. -@item dumpgraph -Dump graph to stderr. +@item dumpgraph @var{filename} +Set the filename of filtergraph for dump. + +It is "ASCII" format by default. for Graphviz DOT output format, +you can convert it to png by GraphViz tool: +@example +dot -Tpng dump_fg_filename -o dump_graph.png +@end example + +@item dumpgraph_format @var{format} +Set the output format of filtergraph for dump. Support format: "DOT", "ASCII". + +DOT is the text file format of the suite GraphViz, ASCII is the text file format +of ASCII style. @end table diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c index c949ff7..18b5f07 100644 --- a/libavdevice/lavfi.c +++ b/libavdevice/lavfi.c @@ -47,7 +47,8 @@ typedef struct { AVClass *class; ///< class for private options char *graph_str; char *graph_filename; - char *dump_graph; + char *dump_fg_filename; + char *dump_fg_format; AVFilterGraph *graph; AVFilterContext **sinks; int *sink_stream_map; @@ -300,11 +301,16 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx) if ((ret = avfilter_graph_config(lavfi->graph, avctx)) < 0) goto end; - if (lavfi->dump_graph) { - char *dump = avfilter_graph_dump(lavfi->graph, lavfi->dump_graph); + if (lavfi->dump_fg_filename) { + char *dump = avfilter_graph_dump(lavfi->graph, lavfi->dump_fg_format); + FILE *fg_file = fopen(lavfi->dump_fg_filename, "w"); + + if (!fg_file) + FAIL(AVERROR(ENOMEM)); if (dump != NULL) { - fputs(dump, stderr); - fflush(stderr); + fputs(dump, fg_file); + fflush(fg_file); + fclose(fg_file); av_free(dump); } else { FAIL(AVERROR(ENOMEM)); @@ -493,7 +499,8 @@ 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", "set dump graph filename", OFFSET(dump_fg_filename), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, + { "dumpgraph_format", "set dump graph format, DOT or ASCII", OFFSET(dump_fg_format), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { NULL }, };