From patchwork Sun May 24 23:50:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 19840 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 776C144AF1D for ; Mon, 25 May 2020 02:50:42 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5B53D6880DF; Mon, 25 May 2020 02:50:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B6D0687FCC for ; Mon, 25 May 2020 02:50:36 +0300 (EEST) Received: by mail-pg1-f195.google.com with SMTP id 124so1734903pgi.9 for ; Sun, 24 May 2020 16:50:36 -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=OvHrOZNSPlTaTjm426YFrKKjkpdmus25LOGo0M9QFEY=; b=S1BzfOv6WASt5jqryN5obIWPQXOzpKMKrRhFIymqD2GJn388bqbneNhLdSEthtJMes o/FOQpYNZ9oTUtlLk68iB9UTzd/yNk1Rbr01RvVJEsXh1S4MuL58UG66BrVYDjs2l57N gXWNbn0PwrU0SmDLNA/MpwWBxtJQJDwVubcZO5xkPjbEj/r0VJLgih15R5pEOVgJSFEk aFmrSPe8dlv87K1UtH1upFcGt/jempkVAvKOaLGRlKhQxYzgLVkBmeuI/r2sQhTx0cwL 97yEIGTOiJrRIL6NmUzvYQWjnHHOsbk5SoAPrxqLEUj02AQur1a3YcJun5aU0Akl8OmN VuOA== 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=OvHrOZNSPlTaTjm426YFrKKjkpdmus25LOGo0M9QFEY=; b=K0wdAK5p7T7BH/km0+/0oxnHAP+DiVAISOtjQy+gf9cJBxJ6u0/2aKFIDf300c0ev3 OdqdfaJ9sy9n9raR1x92Uwp/YBSF2iy8Qmi4LhwAMTyHEw4jLZgDJzqdD7GFRUfAxvG4 7Z7djY7NvQ8EBDyq1iQz1DrpLyP5HSGfFScPxP7RKmonpAW8f4FLinNedHTwSq9kI8ik qs4aFhmsYmAle0y0gHfjCRuPO8YuQH68Qmeuk+xpdfVsCtQ3eJbWNLo3KlJuj/vJ3Jp7 dxKcGE8kvFTaCkB/avC9gq/tAR98gyycsS9vct6uTkUDH49S1Y+ioOuaZ8C7z7ysQkVl tdgA== X-Gm-Message-State: AOAM532c8KpL4XUICoLFfjFL2Lr5BdydesNdPrOBCWp0v5zkXc0Wni6C vBTh9xL7SPFqSQPMcxvZ1GzleWVW X-Google-Smtp-Source: ABdhPJwncVId1mXIcYcr6a0NP8sg1xwF7V9WODifvLS7Pr6aZMy9nQrb/bJ9aZC17+FDwafkvclWrg== X-Received: by 2002:a63:1414:: with SMTP id u20mr24431327pgl.47.1590364233640; Sun, 24 May 2020 16:50:33 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id e19sm11251525pfn.17.2020.05.24.16.50.32 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 May 2020 16:50:33 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 25 May 2020 07:50:25 +0800 Message-Id: <1590364226-11567-2-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590364226-11567-1-git-send-email-lance.lmwang@gmail.com> References: <1589900073-4183-1-git-send-email-lance.lmwang@gmail.com> <1590364226-11567-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v7 2/3] avdevice/lavfi: support the dumpgraph with options 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 | 19 +++++++++++++++++-- libavdevice/lavfi.c | 8 +++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/doc/indevs.texi b/doc/indevs.texi index 6f5afaf..b4dffc4 100644 --- a/doc/indevs.texi +++ b/doc/indevs.texi @@ -973,8 +973,17 @@ 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 (@emph{bool}) +Dump filter graph with ASCII style to stderr default. +By default, it is disable. + +@item dumpgraph_opts @var{options} +Set the options of dump filter graph + +it is a ':'-separated list of @var{key=value} pairs. + +Set the graph with graphviz DOT format by @var{fmt=dot|DOT}, +set the filename of filtergraph to output by @var{filename=path}. @end table @@ -988,6 +997,12 @@ ffplay -f lavfi -graph "color=c=pink [out0]" dummy @end example @item +dump the filter graph with graphviz DOT output format to ./test.tmp +@example +ffplay -dumpgraph 1 -dumpgraph_opts fmt=dot:filename=./test.tmp -f lavfi color=c=pink +@end example + +@item As the previous example, but use filename for specifying the graph description, and omit the "out0" label: @example diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c index c949ff7..9cdfbaa 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; + char *dump_graph_opts; AVFilterGraph *graph; AVFilterContext **sinks; int *sink_stream_map; @@ -57,6 +57,7 @@ typedef struct { AVFrame *decoded_frame; int nb_sinks; AVPacket subcc_packet; + int dump_graph; } LavfiContext; static int *create_all_formats(int n) @@ -301,7 +302,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, lavfi->dump_graph_opts); if (dump != NULL) { fputs(dump, stderr); fflush(stderr); @@ -493,7 +494,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", "dump graph to stderr", OFFSET(dump_graph), AV_OPT_TYPE_BOOL, {.str = 0}, 0, 1, DEC }, + { "dumpgraph_opts", "set the options of dump graph", OFFSET(dump_graph_opts), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, DEC }, { NULL }, };