Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: softworkz <ffmpegagent@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Cc: softworkz <softworkz@hotmail.com>
Subject: [FFmpeg-devel] [PATCH v12 15/15] fftools/graphprint: Now, make it a Killer-Feature!
Date: Thu, 08 May 2025 01:36:56 +0000
Message-ID: <f1cfa5fc2a9adc868cdb5cdbc17e78904035f08c.1746668216.git.ffmpegagent@gmail.com> (raw)
In-Reply-To: <pull.66.v12.ffstaging.FFmpeg.1746668216.ffmpegagent@gmail.com>

From: softworkz <softworkz@hotmail.com>

remember this: -sg   <= means Show Graph

Signed-off-by: softworkz <softworkz@hotmail.com>
---
 doc/ffmpeg.texi              |   4 +
 fftools/Makefile             |   1 +
 fftools/ffmpeg.c             |   2 +-
 fftools/ffmpeg.h             |   1 +
 fftools/ffmpeg_filter.c      |   2 +-
 fftools/ffmpeg_opt.c         |   4 +
 fftools/graph/filelauncher.c | 205 +++++++++++++++++++++++++++++++++++
 fftools/graph/graphprint.c   |  48 +++++++-
 fftools/graph/graphprint.h   |  32 ++++++
 9 files changed, 296 insertions(+), 3 deletions(-)
 create mode 100644 fftools/graph/filelauncher.c

diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index 35675b5309..6e9e7aed0e 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -1404,6 +1404,10 @@ Writes execution graph details to the specified file in the format set via -prin
 Sets the output format (available formats are: default, compact, csv, flat, ini, json, xml, mermaid, mermaidhtml)
 The default format is json.
 
+@item -sg (@emph{global})
+Writes the execution graph to a temporary html file (mermaidhtml format) and 
+tries to launch it in the default browser.
+
 @item -progress @var{url} (@emph{global})
 Send program-friendly progress information to @var{url}.
 
diff --git a/fftools/Makefile b/fftools/Makefile
index 361a4fd574..56a2910212 100644
--- a/fftools/Makefile
+++ b/fftools/Makefile
@@ -22,6 +22,7 @@ OBJS-ffmpeg +=                  \
     fftools/ffmpeg_opt.o        \
     fftools/ffmpeg_sched.o      \
     fftools/graph/graphprint.o        \
+    fftools/graph/filelauncher.o      \
     fftools/sync_queue.o        \
     fftools/thread_queue.o      \
     fftools/textformat/avtextformat.o \
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 27f84a1ace..037fd253c6 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -309,7 +309,7 @@ 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 || show_graph)
         print_filtergraphs(filtergraphs, nb_filtergraphs, input_files, nb_input_files, output_files, nb_output_files);
 
     if (do_benchmark) {
diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index 7fbf0ad532..49fea0307d 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -721,6 +721,7 @@ extern int print_graphs;
 extern char *print_graphs_file;
 extern char *print_graphs_format;
 extern int auto_conversion_filters;
+extern int show_graph;
 
 extern const AVIOInterruptCB int_cb;
 
diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index b774606562..e82e333b7f 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -2985,7 +2985,7 @@ read_frames:
 
 finish:
 
-    if (print_graphs || print_graphs_file)
+    if (print_graphs || print_graphs_file || show_graph)
         print_filtergraph(fg, fgt.graph);
 
     // EOF is normal termination
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 3d1efe32f9..24713d640f 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -79,6 +79,7 @@ int vstats_version = 2;
 int print_graphs = 0;
 char *print_graphs_file = NULL;
 char *print_graphs_format = NULL;
+int show_graph = 0;
 int auto_conversion_filters = 1;
 int64_t stats_period = 500000;
 
@@ -1748,6 +1749,9 @@ const OptionDef options[] = {
     { "print_graphs_format", OPT_TYPE_STRING, 0,
         { &print_graphs_format },
       "set the output printing format (available formats are: default, compact, csv, flat, ini, json, xml, mermaid, mermaidhtml)", "format" },
+    { "sg",   OPT_TYPE_BOOL, 0,
+        { &show_graph },
+        "create execution graph as temporary html file and try to launch it in the default browser" },
     { "auto_conversion_filters", OPT_TYPE_BOOL, OPT_EXPERT,
         { &auto_conversion_filters },
         "enable automatic conversion filters globally" },
diff --git a/fftools/graph/filelauncher.c b/fftools/graph/filelauncher.c
new file mode 100644
index 0000000000..0cf5f15cf1
--- /dev/null
+++ b/fftools/graph/filelauncher.c
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2025 - softworkz
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if defined(_WIN32)
+#  include <windows.h>
+#  include <shellapi.h>
+#else
+#  include <sys/time.h>
+#  include <time.h>
+#endif
+#include "graphprint.h"
+
+int ff_open_html_in_browser(const char *html_path)
+{
+    if (!html_path || !*html_path)
+        return -1;
+
+#if defined(_WIN32)
+
+    // --- Windows ---------------------------------
+    {
+        HINSTANCE rc = ShellExecuteA(NULL, "open", html_path, NULL, NULL, SW_SHOWNORMAL);
+        if ((UINT_PTR)rc <= 32) {
+            // Fallback: system("start ...")
+            char cmd[1024];
+            _snprintf_s(cmd, sizeof(cmd), _TRUNCATE, "start \"\" \"%s\"", html_path);
+            if (system(cmd) != 0)
+                return -1;
+        }
+        return 0;
+    }
+
+#elif defined(__APPLE__)
+
+    // --- macOS -----------------------------------
+    {
+        // "open" is the macOS command to open a file/URL with the default application
+        char cmd[1024];
+        snprintf(cmd, sizeof(cmd), "open '%s' 1>/dev/null 2>&1 &", html_path);
+        if (system(cmd) != 0)
+            return -1;
+        return 0;
+    }
+
+#else
+
+    // --- Linux / Unix-like -----------------------
+    // We'll try xdg-open, then gnome-open, then kfmclient
+    {
+        // Helper macro to try one browser command
+        // Returns 0 on success, -1 on failure
+        #define TRY_CMD(prog) do {                                   \
+            char buf[1024];                                          \
+            snprintf(buf, sizeof(buf), "%s '%s' 1>/dev/null 2>&1 &", \
+                     (prog), html_path);                              \
+            int ret = system(buf);                                    \
+            /* On Unix: system() returns -1 if the shell can't run. */\
+            /* Otherwise, check exit code in lower 8 bits.           */\
+            if (ret != -1 && WIFEXITED(ret) && WEXITSTATUS(ret) == 0) \
+                return 0;                                             \
+        } while (0)
+
+        TRY_CMD("xdg-open");
+        TRY_CMD("gnome-open");
+        TRY_CMD("kfmclient exec");
+
+        fprintf(stderr, "Could not open '%s' in a browser.\n", html_path);
+        return -1;
+    }
+
+#endif
+}
+
+
+int ff_get_temp_dir(char *buf, size_t size)
+{
+#if defined(_WIN32)
+
+    // --- Windows ------------------------------------
+    {
+        // GetTempPathA returns length of the string (including trailing backslash).
+        // If the return value is greater than buffer size, it's an error.
+        DWORD len = GetTempPathA((DWORD)size, buf);
+        if (len == 0 || len > size) {
+            // Could not retrieve or buffer is too small
+            return -1;
+        }
+        return 0;
+    }
+
+#else
+
+    // --- macOS / Linux / Unix -----------------------
+    // Follow typical POSIX convention: check common env variables
+    // and fallback to /tmp if not found.
+    {
+        const char *tmp = getenv("TMPDIR");
+        if (!tmp || !*tmp) tmp = getenv("TMP");
+        if (!tmp || !*tmp) tmp = getenv("TEMP");
+        if (!tmp || !*tmp) tmp = "/tmp";
+
+        // Copy into buf, ensure there's a trailing slash
+        size_t len = strlen(tmp);
+        if (len + 2 > size) {
+            // Need up to len + 1 for slash + 1 for null terminator
+            return -1;
+        }
+
+        strcpy(buf, tmp);
+        // Append slash if necessary
+        if (buf[len - 1] != '/' && buf[len - 1] != '\\') {
+#if defined(__APPLE__)
+            // On macOS/Unix, use forward slash
+            buf[len] = '/';
+            buf[len + 1] = '\0';
+#else
+            // Technically on Unix it's always '/', but here's how you'd do if needed:
+            buf[len] = '/';
+            buf[len + 1] = '\0';
+#endif
+        }
+        return 0;
+    }
+
+#endif
+}
+
+int ff_make_timestamped_html_name(char *buf, size_t size)
+{
+#if defined(_WIN32)
+
+    /*----------- Windows version -----------*/
+    SYSTEMTIME st;
+    GetLocalTime(&st);
+    /*
+      st.wYear, st.wMonth, st.wDay,
+      st.wHour, st.wMinute, st.wSecond, st.wMilliseconds
+    */
+    int written = _snprintf_s(buf, size, _TRUNCATE,
+                              "ffmpeg_graph_%04d-%02d-%02d_%02d-%02d-%02d_%03d.html",
+                              st.wYear,
+                              st.wMonth,
+                              st.wDay,
+                              st.wHour,
+                              st.wMinute,
+                              st.wSecond,
+                              st.wMilliseconds);
+    if (written < 0)
+        return -1; /* Could not write into buffer */
+    return 0;
+
+#else
+
+    /*----------- macOS / Linux / Unix version -----------*/
+    struct timeval tv;
+    if (gettimeofday(&tv, NULL) != 0) {
+        return -1; /* gettimeofday failed */
+    }
+
+    struct tm local_tm;
+    localtime_r(&tv.tv_sec, &local_tm);
+
+    int ms = (int)(tv.tv_usec / 1000); /* convert microseconds to milliseconds */
+
+    /* 
+       local_tm.tm_year is years since 1900,
+       local_tm.tm_mon  is 0-based (0=Jan, 11=Dec) 
+    */
+    int written = snprintf(buf, size,
+                           "ffmpeg_graph_%04d-%02d-%02d_%02d-%02d-%02d_%03d.html",
+                           local_tm.tm_year + 1900,
+                           local_tm.tm_mon + 1,
+                           local_tm.tm_mday,
+                           local_tm.tm_hour,
+                           local_tm.tm_min,
+                           local_tm.tm_sec,
+                           ms);
+    if (written < 0 || (size_t)written >= size) {
+        return -1; /* Buffer too small or formatting error */
+    }
+    return 0;
+
+#endif
+}
diff --git a/fftools/graph/graphprint.c b/fftools/graph/graphprint.c
index fc94a75797..19c3302319 100644
--- a/fftools/graph/graphprint.c
+++ b/fftools/graph/graphprint.c
@@ -879,6 +879,11 @@ static int init_graphprint(GraphPrintContext **pgpc, AVBPrint *target_buf)
 
     av_bprint_init(target_buf, 0, AV_BPRINT_SIZE_UNLIMITED);
 
+    if (show_graph) {
+        if (!print_graphs_format || strcmp(print_graphs_format, "mermaidhtml") != 0)
+            print_graphs_format = av_strdup("mermaidhtml");
+    }
+
     if (!print_graphs_format)
         print_graphs_format = av_strdup("json");
     if (!print_graphs_format) {
@@ -1103,5 +1108,46 @@ cleanup:
 
 int print_filtergraphs(FilterGraph **graphs, int nb_graphs, InputFile **ifiles, int nb_ifiles, OutputFile **ofiles, int nb_ofiles)
 {
-    return print_filtergraphs_priv(graphs, nb_graphs, ifiles, nb_ifiles, ofiles, nb_ofiles);
+    int ret;
+
+    if (show_graph) {
+        char buf[2048];
+        AVBPrint bp;
+
+        av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
+
+        print_graphs = 0;
+
+        ret = ff_get_temp_dir(buf, sizeof(buf));
+        if (ret) {
+            av_log(NULL, AV_LOG_ERROR, "Error getting temp directory path for graph output file\n");
+            return ret;
+        }
+
+        av_bprint_append_data(&bp, buf, strlen(buf));
+
+        ret = ff_make_timestamped_html_name(buf, sizeof(buf));
+        if (ret) {
+            av_log(NULL, AV_LOG_ERROR, "Error creating temp file name for graph output file\n");
+            return ret;
+        }
+
+        av_bprint_append_data(&bp, buf, strlen(buf));
+
+        av_bprint_finalize(&bp, &print_graphs_file);
+    }
+
+    ret = print_filtergraphs_priv(graphs, nb_graphs, ifiles, nb_ifiles, ofiles, nb_ofiles);
+
+    if (!ret && show_graph) {
+        av_log(NULL, AV_LOG_INFO, "Execution graph saved as: %s\n", print_graphs_file);
+        av_log(NULL, AV_LOG_INFO, "Trying to launch graph in browser...\n");
+
+        ret = ff_open_html_in_browser(print_graphs_file);
+        if (ret) {
+            av_log(NULL, AV_LOG_ERROR, "Browser could not be launched for execution graph display\nPlease open manually: %s\n", print_graphs_file);
+        }
+    }
+
+    return ret;
 }
diff --git a/fftools/graph/graphprint.h b/fftools/graph/graphprint.h
index 9f043cc273..43f769870b 100644
--- a/fftools/graph/graphprint.h
+++ b/fftools/graph/graphprint.h
@@ -27,4 +27,36 @@ int print_filtergraphs(FilterGraph **graphs, int nb_graphs, InputFile **ifiles,
 
 int print_filtergraph(FilterGraph *fg, AVFilterGraph *graph);
 
+/**
+ * Open an HTML file in the default browser (Windows, macOS, Linux/Unix).
+ *
+ * @param html_path Absolute or relative path to the HTML file.
+ * @return 0 on success, -1 on failure.
+ *
+ * NOTE: This uses system() calls for non-Windows, and ShellExecute on Windows.
+ *       Exercise caution if 'html_path' is untrusted (possible command injection).
+ */
+int ff_open_html_in_browser(const char *html_path);
+
+/**
+ * Retrieve the system's temporary directory.
+ *
+ * @param buf  Output buffer to store the temp directory path (including trailing slash)
+ * @param size Size of the output buffer in bytes
+ * @return 0 on success, -1 on failure (buffer too small or other errors)
+ *
+ * Note: On most platforms, the path will include a trailing slash (e.g. "C:\\Users\\...\\Temp\\" on Windows, "/tmp/" on Unix).
+ */
+int ff_get_temp_dir(char *buf, size_t size);
+
+/**
+ * Create a timestamped HTML filename, e.g.:
+ *   ffmpeg_graph_2024-01-01_22-12-59_123.html
+ *
+ * @param buf  Pointer to buffer where the result is stored
+ * @param size Size of the buffer in bytes
+ * @return 0 on success, -1 on error (e.g. buffer too small)
+ */
+int ff_make_timestamped_html_name(char *buf, size_t size);
+
 #endif /* FFTOOLS_GRAPH_GRAPHPRINT_H */
-- 
ffmpeg-codebot
_______________________________________________
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".

  parent reply	other threads:[~2025-05-08  1:40 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-14 12:46 [FFmpeg-devel] [PATCH 0/9] Execution Graph Printing ffmpegagent
2025-04-14 12:46 ` [FFmpeg-devel] [PATCH 1/9] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-21 16:52   ` Stefano Sabatini
2025-04-21 17:12     ` softworkz .
2025-04-14 12:46 ` [FFmpeg-devel] [PATCH 2/9] fftools/textformat: Quality improvements softworkz
2025-04-15  1:05   ` Andreas Rheinhardt
2025-04-15  3:19     ` softworkz .
2025-04-16  4:50       ` Andreas Rheinhardt
2025-04-16  6:27         ` softworkz .
2025-04-16  9:52     ` softworkz .
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 3/9] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 4/9] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 5/9] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 6/9] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 7/9] fftools/resources: Add resource manager files softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 8/9] fftools/graphprint: Add execution graph printing softworkz
2025-04-14 12:47 ` [FFmpeg-devel] [PATCH 9/9] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-16 10:12 ` [FFmpeg-devel] [PATCH v2 00/10] Execution Graph Printing ffmpegagent
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 01/10] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 02/10] fftools/textformat: Quality improvements softworkz
2025-04-16 10:49     ` Andreas Rheinhardt
2025-04-16 11:33       ` softworkz .
2025-04-18  2:48         ` softworkz .
2025-04-18  5:41         ` softworkz .
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 03/10] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 04/10] fftools/tf_internal: Use ac_default_item_name softworkz
2025-04-16 10:50     ` Andreas Rheinhardt
2025-04-16 11:11       ` softworkz .
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 05/10] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 06/10] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 07/10] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 08/10] fftools/resources: Add resource manager files softworkz
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 09/10] fftools/graphprint: Add execution graph printing softworkz
2025-04-17 18:41     ` Michael Niedermayer
2025-04-18  2:45       ` softworkz .
2025-04-16 10:12   ` [FFmpeg-devel] [PATCH v2 10/10] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-16 10:21   ` [FFmpeg-devel] [PATCH v2 00/10] Execution Graph Printing softworkz .
2025-04-18  2:56   ` [FFmpeg-devel] [PATCH v3 00/11] " ffmpegagent
2025-04-18  2:56     ` [FFmpeg-devel] [PATCH v3 01/11] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-18  2:56     ` [FFmpeg-devel] [PATCH v3 02/11] fftools/textformat: Quality improvements softworkz
2025-04-18  2:56     ` [FFmpeg-devel] [PATCH v3 03/11] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-18  2:56     ` [FFmpeg-devel] [PATCH v3 04/11] fftools/tf_internal: Use ac_default_item_name softworkz
2025-04-18  2:56     ` [FFmpeg-devel] [PATCH v3 05/11] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-18  2:56     ` [FFmpeg-devel] [PATCH v3 06/11] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-18  2:57     ` [FFmpeg-devel] [PATCH v3 07/11] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-18  2:57     ` [FFmpeg-devel] [PATCH v3 08/11] fftools/resources: Add resource manager files softworkz
2025-04-18  2:57     ` [FFmpeg-devel] [PATCH v3 09/11] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-18  2:57     ` [FFmpeg-devel] [PATCH v3 10/11] fftools/graphprint: Add execution graph printing softworkz
2025-04-18  2:57     ` [FFmpeg-devel] [PATCH v3 11/11] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-20 10:11       ` Michael Niedermayer
2025-04-20 22:59     ` [FFmpeg-devel] [PATCH v4 00/11] Execution Graph Printing ffmpegagent
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 01/11] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 02/11] fftools/textformat: Quality improvements softworkz
2025-04-21 17:16         ` Stefano Sabatini
2025-04-21 17:21           ` Nicolas George
2025-04-21 17:40             ` softworkz .
2025-04-21 17:29           ` softworkz .
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 03/11] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-21 17:28         ` Stefano Sabatini
2025-04-21 17:31           ` softworkz .
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 04/11] fftools/tf_internal: Use ac_default_item_name softworkz
2025-04-21 17:31         ` Stefano Sabatini
2025-04-22 21:10           ` softworkz .
2025-04-23 22:36             ` softworkz .
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 05/11] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-23 22:56         ` Stefano Sabatini
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 06/11] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 07/11] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 08/11] fftools/resources: Add resource manager files softworkz
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 09/11] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 10/11] fftools/graphprint: Add execution graph printing softworkz
2025-04-20 22:59       ` [FFmpeg-devel] [PATCH v4 11/11] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-22 21:55       ` [FFmpeg-devel] [PATCH v5 00/14] Execution Graph Printing ffmpegagent
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 01/14] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-23 22:08           ` Stefano Sabatini
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 02/14] fftools/textformat: Apply quality improvements softworkz
2025-04-23 22:34           ` Stefano Sabatini
2025-04-23 22:53             ` softworkz .
2025-04-23 22:56               ` Nicolas George
2025-04-23 23:04                 ` softworkz .
2025-04-23 23:16                   ` softworkz .
2025-04-23 23:54             ` softworkz .
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 03/14] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-23 22:45           ` Stefano Sabatini
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 04/14] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-23 22:48           ` Stefano Sabatini
2025-04-23 22:55             ` softworkz .
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 05/14] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-23 22:49           ` Stefano Sabatini
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 06/14] fftools/textformat: AVTextWriter change writer_printf signature softworkz
2025-04-23 23:07           ` Stefano Sabatini
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 07/14] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-23 22:57           ` Stefano Sabatini
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 08/14] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 09/14] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 10/14] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 11/14] fftools/resources: Add resource manager files softworkz
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 12/14] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 13/14] fftools/graphprint: Add execution graph printing softworkz
2025-04-22 21:55         ` [FFmpeg-devel] [PATCH v5 14/14] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-24  1:12         ` [FFmpeg-devel] [PATCH v6 00/13] Execution Graph Printing ffmpegagent
2025-04-24  1:12           ` [FFmpeg-devel] [PATCH v6 01/13] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 02/13] fftools/textformat: Apply quality improvements softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 03/13] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 04/13] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 05/13] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 06/13] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 07/13] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 08/13] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 09/13] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 10/13] fftools/resources: Add resource manager files softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 11/13] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 12/13] fftools/graphprint: Add execution graph printing softworkz
2025-04-25 22:26             ` Michael Niedermayer
2025-04-25 23:17               ` softworkz .
2025-04-24  1:13           ` [FFmpeg-devel] [PATCH v6 13/13] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-25 23:30           ` [FFmpeg-devel] [PATCH v7 00/13] Execution Graph Printing ffmpegagent
2025-04-25 23:30             ` [FFmpeg-devel] [PATCH v7 01/13] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-27 10:47               ` Stefano Sabatini
2025-04-25 23:30             ` [FFmpeg-devel] [PATCH v7 02/13] fftools/textformat: Apply quality improvements softworkz
2025-04-28 19:56               ` Stefano Sabatini
2025-04-28 20:05                 ` softworkz .
2025-04-28 20:24                   ` Stefano Sabatini
2025-04-28 20:40                     ` softworkz .
2025-04-28 21:47                       ` Stefano Sabatini
2025-04-28 22:49                         ` softworkz .
2025-04-25 23:30             ` [FFmpeg-devel] [PATCH v7 03/13] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-25 23:30             ` [FFmpeg-devel] [PATCH v7 04/13] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 05/13] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 06/13] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 07/13] fftools/textformat: Add function avtext_print_integer_flags() softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 08/13] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 09/13] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 10/13] fftools/resources: Add resource manager files softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 11/13] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 12/13] fftools/graphprint: Add execution graph printing softworkz
2025-04-25 23:31             ` [FFmpeg-devel] [PATCH v7 13/13] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-04-29  0:59             ` [FFmpeg-devel] [PATCH v8 00/15] Execution Graph Printing ffmpegagent
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 02/15] fftools/textformat: Apply quality improvements softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-04-29  0:59               ` [FFmpeg-devel] [PATCH v8 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-04-29  1:00               ` [FFmpeg-devel] [PATCH v8 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-04-29  1:00               ` [FFmpeg-devel] [PATCH v8 12/15] fftools/resources: Add resource manager files softworkz
2025-04-29  1:00               ` [FFmpeg-devel] [PATCH v8 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-04-29 20:25                 ` Michael Niedermayer
2025-04-29  1:00               ` [FFmpeg-devel] [PATCH v8 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-04-29 19:35                 ` Michael Niedermayer
2025-04-29 20:33                   ` softworkz .
2025-05-02  0:11                     ` Michael Niedermayer
2025-05-02  0:48                       ` softworkz .
2025-05-03  5:08                       ` softworkz .
2025-04-29  1:00               ` [FFmpeg-devel] [PATCH v8 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-03  8:22               ` [FFmpeg-devel] [PATCH v9 00/15] Execution Graph Printing ffmpegagent
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-03 23:57                   ` Michael Niedermayer
2025-05-04  2:55                     ` softworkz .
2025-05-03  8:22                 ` [FFmpeg-devel] [PATCH v9 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-04  2:57                 ` [FFmpeg-devel] [PATCH v10 00/15] Execution Graph Printing ffmpegagent
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-05-07 23:44                     ` Stefano Sabatini
2025-05-07 23:59                       ` softworkz .
2025-05-08  0:14                         ` Stefano Sabatini
2025-05-08  0:20                           ` softworkz .
2025-05-07 23:47                     ` Stefano Sabatini
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-07 23:49                     ` Stefano Sabatini
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-07 23:50                     ` Stefano Sabatini
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-07 23:58                     ` Stefano Sabatini
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-08  0:05                     ` Stefano Sabatini
2025-05-08  0:25                       ` softworkz .
2025-05-08 21:38                         ` Stefano Sabatini
2025-05-09 11:31                           ` softworkz .
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-04  2:57                   ` [FFmpeg-devel] [PATCH v10 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-04 22:34                   ` [FFmpeg-devel] [PATCH v11 00/15] Execution Graph Printing ffmpegagent
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 01/15] fftools/textformat: Formatting and whitespace changes softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-04 22:34                     ` [FFmpeg-devel] [PATCH v11 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-04 22:35                     ` [FFmpeg-devel] [PATCH v11 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-04 22:35                     ` [FFmpeg-devel] [PATCH v11 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-04 22:35                     ` [FFmpeg-devel] [PATCH v11 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-04 22:35                     ` [FFmpeg-devel] [PATCH v11 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-04 22:35                     ` [FFmpeg-devel] [PATCH v11 15/15] fftools/graphprint: Now, make it a Killer-Feature! softworkz
2025-05-07  2:06                     ` [FFmpeg-devel] [PATCH v11 00/15] Execution Graph Printing softworkz .
2025-05-08  1:36                     ` [FFmpeg-devel] [PATCH v12 " ffmpegagent
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 01/15] fftools/textformat: Apply formatting and whitespace changes softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 02/15] fftools/textformat: Apply quality improvements softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 03/15] fftools/textformat: Remove unused print_rational() pointer from AVTextFormatter softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 04/15] fftools/textformat: Rename name param to key for API consistency softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 05/15] fftools/avtextformat: Re-use BPrint in loop softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 06/15] fftools/textformat: Introduce AVTextFormatOptions for avtext_context_open() softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 07/15] fftools/textformat: Introduce common header and deduplicate code softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 08/15] fftools/tf_internal: Use av_default_item_name softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 09/15] fftools/textformat: Add flags param to function avtext_print_integer() softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 10/15] fftools/ffmpeg_filter: Move some declaration to new header file softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 11/15] avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx() softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 12/15] fftools/resources: Add resource manager files with build-time compression softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 13/15] fftools/ffmpeg_mux: Make ms_from_ost() inline softworkz
2025-05-08  1:36                       ` [FFmpeg-devel] [PATCH v12 14/15] fftools/graphprint: Add execution graph printing softworkz
2025-05-08  1:36                       ` softworkz [this message]
2025-05-13 14:03                       ` [FFmpeg-devel] [PATCH v12 00/15] Execution Graph Printing softworkz .

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f1cfa5fc2a9adc868cdb5cdbc17e78904035f08c.1746668216.git.ffmpegagent@gmail.com \
    --to=ffmpegagent@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    --cc=softworkz@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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