* [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print @ 2025-05-17 11:14 Mark Thompson 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object Mark Thompson ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Mark Thompson @ 2025-05-17 11:14 UTC (permalink / raw) To: ffmpeg-devel Avoids writing an empty json blob in setup error cases. --- fftools/ffmpeg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 964770df23..ad28cff78d 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -309,7 +309,8 @@ const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }; static void ffmpeg_cleanup(int ret) { - if (print_graphs || print_graphs_file) + if ((print_graphs || print_graphs_file) && + (nb_filtergraphs > 0 || nb_output_files > 0)) print_filtergraphs(filtergraphs, nb_filtergraphs, input_files, nb_input_files, output_files, nb_output_files); if (do_benchmark) { -- 2.47.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object 2025-05-17 11:14 [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print Mark Thompson @ 2025-05-17 11:14 ` Mark Thompson 2025-05-17 17:24 ` softworkz . 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph section header string Mark Thompson 2025-05-17 17:52 ` [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print softworkz . 2 siblings, 1 reply; 8+ messages in thread From: Mark Thompson @ 2025-05-17 11:14 UTC (permalink / raw) To: ffmpeg-devel --- fftools/graph/graphprint.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fftools/graph/graphprint.c b/fftools/graph/graphprint.c index fc94a75797..9e3e03274a 100644 --- a/fftools/graph/graphprint.c +++ b/fftools/graph/graphprint.c @@ -862,6 +862,8 @@ static void uninit_graphprint(GraphPrintContext *gpc) // Finalize the print buffer if it was initialized av_bprint_finalize(&gpc->pbuf, NULL); + + av_freep(&gpc); } static int init_graphprint(GraphPrintContext **pgpc, AVBPrint *target_buf) -- 2.47.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object Mark Thompson @ 2025-05-17 17:24 ` softworkz . 0 siblings, 0 replies; 8+ messages in thread From: softworkz . @ 2025-05-17 17:24 UTC (permalink / raw) To: FFmpeg development discussions and patches > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Mark > Thompson > Sent: Samstag, 17. Mai 2025 13:14 > To: ffmpeg-devel@ffmpeg.org > Subject: [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint > object > > --- > fftools/graph/graphprint.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fftools/graph/graphprint.c b/fftools/graph/graphprint.c > index fc94a75797..9e3e03274a 100644 > --- a/fftools/graph/graphprint.c > +++ b/fftools/graph/graphprint.c > @@ -862,6 +862,8 @@ static void uninit_graphprint(GraphPrintContext *gpc) > > // Finalize the print buffer if it was initialized > av_bprint_finalize(&gpc->pbuf, NULL); > + > + av_freep(&gpc); > } > > static int init_graphprint(GraphPrintContext **pgpc, AVBPrint *target_buf) > -- Hi Mark, good catch, thanks for the patch! LGTM sw _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph section header string 2025-05-17 11:14 [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print Mark Thompson 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object Mark Thompson @ 2025-05-17 11:14 ` Mark Thompson 2025-05-17 17:55 ` softworkz . 2025-05-17 17:52 ` [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print softworkz . 2 siblings, 1 reply; 8+ messages in thread From: Mark Thompson @ 2025-05-17 11:14 UTC (permalink / raw) To: ffmpeg-devel --- fftools/graph/graphprint.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fftools/graph/graphprint.c b/fftools/graph/graphprint.c index 9e3e03274a..50f1a2ecdc 100644 --- a/fftools/graph/graphprint.c +++ b/fftools/graph/graphprint.c @@ -780,6 +780,8 @@ static int print_streams(GraphPrintContext *gpc, InputFile **ifiles, int nb_ifil avtext_print_section_header(tfc, &sec_ctx, SECTION_ID_OUTPUTSTREAMS); + av_freep(&sec_ctx.context_id); + for (int i = 0; i < of->nb_streams; i++) { OutputStream *ost = of->streams[i]; const AVCodecDescriptor *codec_desc = avcodec_descriptor_get(ost->st->codecpar->codec_id); -- 2.47.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph section header string 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph section header string Mark Thompson @ 2025-05-17 17:55 ` softworkz . 0 siblings, 0 replies; 8+ messages in thread From: softworkz . @ 2025-05-17 17:55 UTC (permalink / raw) To: FFmpeg development discussions and patches > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Mark > Thompson > Sent: Samstag, 17. Mai 2025 13:14 > To: ffmpeg-devel@ffmpeg.org > Subject: [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph > section header string > > --- > fftools/graph/graphprint.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fftools/graph/graphprint.c b/fftools/graph/graphprint.c > index 9e3e03274a..50f1a2ecdc 100644 > --- a/fftools/graph/graphprint.c > +++ b/fftools/graph/graphprint.c > @@ -780,6 +780,8 @@ static int print_streams(GraphPrintContext *gpc, InputFile > **ifiles, int nb_ifil > > avtext_print_section_header(tfc, &sec_ctx, SECTION_ID_OUTPUTSTREAMS); > > + av_freep(&sec_ctx.context_id); > + > for (int i = 0; i < of->nb_streams; i++) { > OutputStream *ost = of->streams[i]; > const AVCodecDescriptor *codec_desc = avcodec_descriptor_get(ost- > >st->codecpar->codec_id); > -- LGTM - thanks for the patch! sw _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print 2025-05-17 11:14 [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print Mark Thompson 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object Mark Thompson 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph section header string Mark Thompson @ 2025-05-17 17:52 ` softworkz . 2025-05-17 18:18 ` Mark Thompson 2 siblings, 1 reply; 8+ messages in thread From: softworkz . @ 2025-05-17 17:52 UTC (permalink / raw) To: FFmpeg development discussions and patches > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Mark > Thompson > Sent: Samstag, 17. Mai 2025 13:14 > To: ffmpeg-devel@ffmpeg.org > Subject: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no > graphs to print > > Avoids writing an empty json blob in setup error cases. > --- > fftools/ffmpeg.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c > index 964770df23..ad28cff78d 100644 > --- a/fftools/ffmpeg.c > +++ b/fftools/ffmpeg.c > @@ -309,7 +309,8 @@ const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL > }; > > static void ffmpeg_cleanup(int ret) > { > - if (print_graphs || print_graphs_file) > + if ((print_graphs || print_graphs_file) && > + (nb_filtergraphs > 0 || nb_output_files > 0)) > print_filtergraphs(filtergraphs, nb_filtergraphs, input_files, > nb_input_files, output_files, nb_output_files); The feature is not just about filter graphs, that's why it's been renamed as "Execution Graph Printing". It also works when no filter graphs are in play at all. Here's an example: https://softworkz.github.io/ffmpeg_output_apis/1_nofilters_3_in_1_out.html As for the nb_output_files check, I'm not sure - is it 0 or 1 in case of -f null output? Thanks sw _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print 2025-05-17 17:52 ` [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print softworkz . @ 2025-05-17 18:18 ` Mark Thompson 2025-05-17 19:08 ` softworkz . 0 siblings, 1 reply; 8+ messages in thread From: Mark Thompson @ 2025-05-17 18:18 UTC (permalink / raw) To: ffmpeg-devel On 17/05/2025 18:52, softworkz . wrote: > > >> -----Original Message----- >> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Mark >> Thompson >> Sent: Samstag, 17. Mai 2025 13:14 >> To: ffmpeg-devel@ffmpeg.org >> Subject: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no >> graphs to print >> >> Avoids writing an empty json blob in setup error cases. >> --- >> fftools/ffmpeg.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c >> index 964770df23..ad28cff78d 100644 >> --- a/fftools/ffmpeg.c >> +++ b/fftools/ffmpeg.c >> @@ -309,7 +309,8 @@ const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL >> }; >> >> static void ffmpeg_cleanup(int ret) >> { >> - if (print_graphs || print_graphs_file) >> + if ((print_graphs || print_graphs_file) && >> + (nb_filtergraphs > 0 || nb_output_files > 0)) >> print_filtergraphs(filtergraphs, nb_filtergraphs, input_files, >> nb_input_files, output_files, nb_output_files); > > The feature is not just about filter graphs, that's why it's been renamed > as "Execution Graph Printing". It also works when no filter graphs are > in play at all. > Here's an example: > > https://softworkz.github.io/ffmpeg_output_apis/1_nofilters_3_in_1_out.html > > > As for the nb_output_files check, I'm not sure - is it 0 or 1 in case of > -f null output? 1, including when you stream copy to null and there aren't any real graphs. At least one output is mandatory for a valid command line, so it should always appear in non-error cases as far as I am aware. The aim is to avoid to the nonsense json blob when an early error happens - example below. It does still get printed on later errors (such as a muxer error), because the graph is created then and some operations will have happened at that point. Thanks, - Mark $ ./ffmpeg_g -print_graphs -i nonexistent -f null - ... [in#0 @ 0x513000000200] Error opening input: No such file or directory Error opening input file nonexistent. Error opening input files: No such file or directory { "graphs": [ ], "inputfiles": [ { "index": "0", "inputstreams": [ ] } ], "decoders": [ ], "encoders": [ ], "outputfiles": [ ], "streamlinks": [ ] } _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print 2025-05-17 18:18 ` Mark Thompson @ 2025-05-17 19:08 ` softworkz . 0 siblings, 0 replies; 8+ messages in thread From: softworkz . @ 2025-05-17 19:08 UTC (permalink / raw) To: FFmpeg development discussions and patches > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Mark > Thompson > Sent: Samstag, 17. Mai 2025 20:19 > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there > are no graphs to print > > On 17/05/2025 18:52, softworkz . wrote: > > > > > >> -----Original Message----- > >> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Mark > >> Thompson > >> Sent: Samstag, 17. Mai 2025 13:14 > >> To: ffmpeg-devel@ffmpeg.org > >> Subject: [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are > no > >> graphs to print > >> > >> Avoids writing an empty json blob in setup error cases. > >> --- > >> fftools/ffmpeg.c | 3 ++- > >> 1 file changed, 2 insertions(+), 1 deletion(-) > >> > >> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c > >> index 964770df23..ad28cff78d 100644 > >> --- a/fftools/ffmpeg.c > >> +++ b/fftools/ffmpeg.c > >> @@ -309,7 +309,8 @@ const AVIOInterruptCB int_cb = { decode_interrupt_cb, > NULL > >> }; > >> > >> static void ffmpeg_cleanup(int ret) > >> { > >> - if (print_graphs || print_graphs_file) > >> + if ((print_graphs || print_graphs_file) && > >> + (nb_filtergraphs > 0 || nb_output_files > 0)) > >> print_filtergraphs(filtergraphs, nb_filtergraphs, input_files, > >> nb_input_files, output_files, nb_output_files); > > > > The feature is not just about filter graphs, that's why it's been renamed > > as "Execution Graph Printing". It also works when no filter graphs are > > in play at all. > > Here's an example: > > > > https://softworkz.github.io/ffmpeg_output_apis/1_nofilters_3_in_1_out.html > > > > > > As for the nb_output_files check, I'm not sure - is it 0 or 1 in case of > > -f null output? > > 1, including when you stream copy to null and there aren't any real graphs. > At least one output is mandatory for a valid command line, so it should always > appear in non-error cases as far as I am aware. > > The aim is to avoid to the nonsense json blob when an early error happens - > example below. It does still get printed on later errors (such as a muxer > error), because the graph is created then and some operations will have > happened at that point. > > Thanks, > > - Mark Okay, thanks for the clarification, and yes - it's important to get the output even in cases of error, but I agree that it doesn't need to be generated as long as output files haven't been configured yet. If you could resubmit without the nb_filtergraphs check that would be fine! Thank you sw _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-05-17 19:08 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-05-17 11:14 [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print Mark Thompson 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 2/3] fftools/graphprint: Fix leak of graphprint object Mark Thompson 2025-05-17 17:24 ` softworkz . 2025-05-17 11:14 ` [FFmpeg-devel] [PATCH 3/3] fftools/graphprint: Fix leak of graph section header string Mark Thompson 2025-05-17 17:55 ` softworkz . 2025-05-17 17:52 ` [FFmpeg-devel] [PATCH 1/3] ffmpeg: Don't print graphs if there are no graphs to print softworkz . 2025-05-17 18:18 ` Mark Thompson 2025-05-17 19:08 ` softworkz .
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git