ffmpeg | branch: master | softworkz <softwo...@hotmail.com> | Fri May 16 
10:37:29 2025 +0200| [79e2a845cd162696c7652bbb6cd407bfa24b738b] | committer: 
softworkz

Revert "fftools/graphprint: Now, make it a Killer-Feature!"

This reverts commit 1f2b8d7238eff4ab8a4d8d6177e250b8180d51f4.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=79e2a845cd162696c7652bbb6cd407bfa24b738b
---

 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, 3 insertions(+), 296 deletions(-)

diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index 4bcb6d6a01..35675b5309 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -1404,10 +1404,6 @@ 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 56a2910212..361a4fd574 100644
--- a/fftools/Makefile
+++ b/fftools/Makefile
@@ -22,7 +22,6 @@ 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 6513e2129e..964770df23 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 || show_graph)
+    if (print_graphs || print_graphs_file)
         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 49fea0307d..7fbf0ad532 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -721,7 +721,6 @@ 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 e82e333b7f..b774606562 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -2985,7 +2985,7 @@ read_frames:
 
 finish:
 
-    if (print_graphs || print_graphs_file || show_graph)
+    if (print_graphs || print_graphs_file)
         print_filtergraph(fg, fgt.graph);
 
     // EOF is normal termination
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 24713d640f..3d1efe32f9 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -79,7 +79,6 @@ 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;
 
@@ -1749,9 +1748,6 @@ 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
deleted file mode 100644
index 45514ca599..0000000000
--- a/fftools/graph/filelauncher.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * 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 19c3302319..fc94a75797 100644
--- a/fftools/graph/graphprint.c
+++ b/fftools/graph/graphprint.c
@@ -879,11 +879,6 @@ 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) {
@@ -1108,46 +1103,5 @@ cleanup:
 
 int print_filtergraphs(FilterGraph **graphs, int nb_graphs, InputFile 
**ifiles, int nb_ifiles, OutputFile **ofiles, int 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;
+    return print_filtergraphs_priv(graphs, nb_graphs, ifiles, nb_ifiles, 
ofiles, nb_ofiles);
 }
diff --git a/fftools/graph/graphprint.h b/fftools/graph/graphprint.h
index 43f769870b..9f043cc273 100644
--- a/fftools/graph/graphprint.h
+++ b/fftools/graph/graphprint.h
@@ -27,36 +27,4 @@ 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-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to