Shortest cover letter for my longest-running FFmpeg patchset:

 * Apply
 * Build
 * Add the "-sg" switch to any FFmpeg command line
 * Press 'q' when you don't want to wait

SG = Show Graph

Documentation and examples can be found here:

https://github.com/softworkz/ffmpeg_output_apis/wiki


Version Updates
===============


V2
==

 * Rebased on top of Andreas' improvements
 * Applied changes from review (thanks, Andreas)


V3
==

 * Fixed all "new warnings"
 * Fixed out-of-tree building (thanks, Michael)

softworkz (11):
  fftools/textformat: Formatting and whitespace changes
  fftools/textformat: Quality improvements
  fftools/textformat: Introduce common header and deduplicate code
  fftools/tf_internal: Use ac_default_item_name
  fftools/textformat: Add function avtext_print_integer_flags()
  fftools/ffmpeg_filter: Move some declaration to new header file
  avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx()
  fftools/resources: Add resource manager files
  fftools/ffmpeg_mux: Make ms_from_ost() inline
  fftools/graphprint: Add execution graph printing
  fftools/graphprint: Now, make it a Killer-Feature!

 doc/APIchanges                     |    3 +
 doc/ffmpeg.texi                    |   14 +
 ffbuild/common.mak                 |   28 +-
 fftools/Makefile                   |   22 +-
 fftools/ffmpeg.c                   |    4 +
 fftools/ffmpeg.h                   |    4 +
 fftools/ffmpeg_filter.c            |  195 +----
 fftools/ffmpeg_filter.h            |  234 ++++++
 fftools/ffmpeg_mux.h               |    2 +-
 fftools/ffmpeg_opt.c               |   17 +
 fftools/graph/filelauncher.c       |  204 +++++
 fftools/graph/graphprint.c         | 1146 ++++++++++++++++++++++++++++
 fftools/graph/graphprint.h         |   62 ++
 fftools/resources/.gitignore       |    4 +
 fftools/resources/Makefile         |   27 +
 fftools/resources/graph.css        |  353 +++++++++
 fftools/resources/graph.html       |   86 +++
 fftools/resources/resman.c         |  213 ++++++
 fftools/resources/resman.h         |   50 ++
 fftools/textformat/avtextformat.c  |  238 +++---
 fftools/textformat/avtextformat.h  |   53 +-
 fftools/textformat/avtextwriters.h |   11 +-
 fftools/textformat/tf_compact.c    |  121 +--
 fftools/textformat/tf_default.c    |   55 +-
 fftools/textformat/tf_flat.c       |   51 +-
 fftools/textformat/tf_ini.c        |   62 +-
 fftools/textformat/tf_internal.h   |   81 ++
 fftools/textformat/tf_json.c       |   56 +-
 fftools/textformat/tf_mermaid.c    |  658 ++++++++++++++++
 fftools/textformat/tf_mermaid.h    |   41 +
 fftools/textformat/tf_xml.c        |   68 +-
 fftools/textformat/tw_avio.c       |   16 +-
 fftools/textformat/tw_buffer.c     |    7 +-
 fftools/textformat/tw_stdout.c     |    8 +-
 libavfilter/avfilter.c             |    9 +
 libavfilter/avfilter.h             |   12 +
 36 files changed, 3669 insertions(+), 546 deletions(-)
 create mode 100644 fftools/ffmpeg_filter.h
 create mode 100644 fftools/graph/filelauncher.c
 create mode 100644 fftools/graph/graphprint.c
 create mode 100644 fftools/graph/graphprint.h
 create mode 100644 fftools/resources/.gitignore
 create mode 100644 fftools/resources/Makefile
 create mode 100644 fftools/resources/graph.css
 create mode 100644 fftools/resources/graph.html
 create mode 100644 fftools/resources/resman.c
 create mode 100644 fftools/resources/resman.h
 create mode 100644 fftools/textformat/tf_internal.h
 create mode 100644 fftools/textformat/tf_mermaid.c
 create mode 100644 fftools/textformat/tf_mermaid.h


base-commit: 7684243fbe6e84fecb4a039195d5fda8a006a2a4
Published-As: 
https://github.com/ffstaging/FFmpeg/releases/tag/pr-ffstaging-66%2Fsoftworkz%2Fsubmit_print_execution_graph-v3
Fetch-It-Via: git fetch https://github.com/ffstaging/FFmpeg 
pr-ffstaging-66/softworkz/submit_print_execution_graph-v3
Pull-Request: https://github.com/ffstaging/FFmpeg/pull/66

Range-diff vs v2:

  1:  b6468d1a30 =  1:  357859ee56 fftools/textformat: Formatting and 
whitespace changes
  2:  6568269678 !  2:  9279d2f53d fftools/textformat: Quality improvements
     @@ fftools/textformat/tw_avio.c: const AVTextWriter avtextwriter_avio = {
       
       int avtextwriter_create_file(AVTextWriterContext **pwctx, const char 
*output_filename)
       {
     -+    if (!pwctx || !output_filename || !output_filename[0])
     ++    if (!output_filename || !output_filename[0])
      +        return AVERROR(EINVAL);
      +
           IOWriterContext *ctx;
  3:  9e77a447b8 !  3:  d6734bd718 fftools/textformat: Introduce common header 
and deduplicate code
     @@ fftools/textformat/tw_avio.c: static void 
io_put_str(AVTextWriterContext *wctx,
       }
       
       
     -@@ fftools/textformat/tw_avio.c: const AVTextWriter avtextwriter_avio = {
     - 
     - int avtextwriter_create_file(AVTextWriterContext **pwctx, const char 
*output_filename)
     - {
     --    if (!pwctx || !output_filename || !output_filename[0])
     -+    if (!output_filename || !output_filename[0])
     -         return AVERROR(EINVAL);
     - 
     -     IOWriterContext *ctx;
      
       ## fftools/textformat/tw_buffer.c ##
      @@ fftools/textformat/tw_buffer.c: static void 
buffer_put_str(AVTextWriterContext *wctx, const char *str)
  4:  a1b358f5c5 =  4:  8289c0ebf8 fftools/tf_internal: Use ac_default_item_name
  5:  4f6870ed4c =  5:  a3fe7abcfe fftools/textformat: Add function 
avtext_print_integer_flags()
  6:  9c03e66aea =  6:  5b0ac30814 fftools/ffmpeg_filter: Move some declaration 
to new header file
  7:  eb54476d00 !  7:  5e3225c9df avfilter/avfilter: Add 
avfilter_link_get_hw_frames_ctx()
     @@ doc/APIchanges: The last version increases of all libraries were on 
2025-03-28
      +2025-02-xx - xxxxxxxxxx - lavfi 10.10.100 - avfilter.h
      +  Add avfilter_link_get_hw_frames_ctx().
      +
     - 2025-04-07 - 19e9a203b7 - lavu 60.01.100 - dict.h
     -   Add AV_DICT_DEDUP.
     + 2025-04-16 - c818c67991 - libpostproc 59.1.100 - postprocess.h
     +   Deprecate PP_CPU_CAPS_3DNOW.
       
      
       ## libavfilter/avfilter.c ##
  8:  dac301adba !  8:  9881050f93 fftools/resources: Add resource manager files
     @@ ffbuild/common.mak: else
      +
      +# 2) Gzip the minified CSS
      +%.css.min.gz: %.css.min
     -+ $(M)gzip -nc9 $< > $@
     ++ $(M)gzip -nc9 $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) >$@
      +
      +# 3) Convert the gzipped CSS to a .c array
      +%.css.c: %.css.min.gz $(BIN2CEXE)
     -+ $(BIN2C) $< $@ $(subst .,_,$(basename $(notdir $@)))
     ++ $(BIN2C) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) $@ $(subst 
.,_,$(basename $(notdir $@)))
      +
      +# 4) Gzip the HTML file (no minification needed)
      +%.html.gz: TAG = GZIP
     @@ ffbuild/common.mak: else
      +
      +# 5) Convert the gzipped HTML to a .c array
      +%.html.c: %.html.gz $(BIN2CEXE)
     -+ $(BIN2C) $< $@ $(subst .,_,$(basename $(notdir $@)))
     ++ $(BIN2C) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) $@ $(subst 
.,_,$(basename $(notdir $@)))
      +
       clean::
        $(RM) $(BIN2CEXE) $(CLEANSUFFIXES:%=ffbuild/%)
     @@ ffbuild/common.mak: $(TOOLOBJS): | tools
       
       define RULES
      
     + ## fftools/Makefile ##
     +@@ fftools/Makefile: ifdef HAVE_GNU_WINDRES
     + OBJS-$(1) += fftools/fftoolsres.o
     + endif
     + $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1))
     +-$$(OBJS-$(1)): | fftools fftools/textformat
     ++$$(OBJS-$(1)): | fftools fftools/textformat fftools/resources
     + $$(OBJS-$(1)): CFLAGS  += $(CFLAGS-$(1))
     + $(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1))
     + $(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(EXTRALIBS-$(1))
     +@@ fftools/Makefile: all: $(AVPROGS)
     + fftools/ffprobe.o fftools/cmdutils.o: libavutil/ffversion.h | fftools
     + OUTDIRS += fftools
     + OUTDIRS += fftools/textformat
     ++OUTDIRS += fftools/resources
     + 
     + ifdef AVPROGS
     + install: install-progs install-data
     +
       ## fftools/resources/.gitignore (new) ##
      @@
      +*.html.c
  -:  ---------- >  9:  f639a2e9ff fftools/ffmpeg_mux: Make ms_from_ost() inline
  9:  128ae47177 ! 10:  998d6a70c4 fftools/graphprint: Add execution graph 
printing
     @@ fftools/Makefile: OBJS-ffprobe +=                       \
       
       OBJS-ffplay += fftools/ffplay_renderer.o
       
     +@@ fftools/Makefile: ifdef HAVE_GNU_WINDRES
     + OBJS-$(1) += fftools/fftoolsres.o
     + endif
     + $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1))
     +-$$(OBJS-$(1)): | fftools fftools/textformat fftools/resources
     ++$$(OBJS-$(1)): | fftools fftools/textformat fftools/resources 
fftools/graph
     + $$(OBJS-$(1)): CFLAGS  += $(CFLAGS-$(1))
     + $(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1))
     + $(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(EXTRALIBS-$(1))
     +@@ fftools/Makefile: fftools/ffprobe.o fftools/cmdutils.o: 
libavutil/ffversion.h | fftools
     + OUTDIRS += fftools
     + OUTDIRS += fftools/textformat
     + OUTDIRS += fftools/resources
     ++OUTDIRS += fftools/graph
     + 
     + ifdef AVPROGS
     + install: install-progs install-data
      
       ## fftools/ffmpeg.c ##
      @@
     @@ fftools/textformat/tf_mermaid.c (new)
      +        AVBPrint css_buf;
      +        const char *diag_directive = mmc->diagram_config->diagram_type 
== AV_DIAGRAMTYPE_ENTITYRELATIONSHIP ? init_directive_er : init_directive;
      +        char *single_line_css = 
av_strireplace(mmc->diagram_config->diagram_css, "\n", " ");
     ++        (void)theme_css_er;
      +        ////char *single_line_css = av_strireplace(theme_css_er, "\n", " 
");
      +        av_bprint_init(&css_buf, 0, AV_BPRINT_SIZE_UNLIMITED);
      +        av_bprint_escape(&css_buf, single_line_css, "'\\", 
AV_ESCAPE_MODE_BACKSLASH, AV_ESCAPE_FLAG_STRICT);
     @@ fftools/textformat/tf_mermaid.c (new)
      +
      +            break;
      +        case AV_DIAGRAMTYPE_ENTITYRELATIONSHIP:
     ++
     ++            if (!is_int && str)
      +            {
     -+                char *col_type;
     ++                const char *col_type;
      +
      +                if (key[0] == '_')
      +                    return;
 10:  0f6fd80b25 = 11:  8817dd0991 fftools/graphprint: Now, make it a 
Killer-Feature!

-- 
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-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to