Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [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

* [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 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

* 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 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 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