Tags

Tags give the ability to mark specific points in history as being important
  • pr-ffstaging-51/softworkz/submit_hls_reload-v1

    avformat/hls: Revert "reduce default max reload to 3"
    
    From: softworkz <softworkz@hotmail.com>
    
    This change has caused regressions for many users and consumers.
    Playlist reloads only happen when a playlist doesn't indicate that it
    has ended (via #EXT-X-ENDLIST), which means that the addition of future
    segments is still expected.
    It is well possible that an HLS server is temporarily unable to serve
    further segments but resumes after some time, either indicating a
    discontinuity or even by fully catching up.
    With a segment length of 3s, a max_reload value of 1000 corresponds to
    a duration of 50 minutes which appears to be a reasonable default.
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.51.ffstaging.FFmpeg.1737276758576.ffmpegagent@gmail.com
  • pr-ffstaging-50/tmm1/cbs-misc-a53-v3-v1

    Bitstream filter support for A/53 Closed Captions
    
    cc: Aman Karmani aman@tmm1.net cc: Eric Lindvall eric@5stops.com cc: Mark
    Thompson sw@jkqxz.net cc: David Engel david@istwok.net cc: Scott Theisen
    scott.the.elm@gmail.com cc: Miguel Borges de Freitas 92enen@gmail.com
    
    /cc https://github.com/MythTV/mythtv/issues/364 /cc
    https://github.com/xbmc/xbmc/pull/22605 /cc
    https://github.com/xbmc/xbmc/pull/22603 /cc
    https://github.com/xbmc/xbmc/pull/22333
    
    Aman Karmani (3):
      avcodec/mpeg2_metadata_bsf: add support for a/53 closed captions
      avcodec/h264_metadata_bsf: add support for a/53 closed captions
      avcodec/h265_metadata_bsf: add support for a/53 closed captions
    
    Eric Lindvall (1):
      cbs_sei: add ff_cbs_sei_delete_message helper
    
    Mark Thompson (1):
      cbs: Add some common code for read/write of miscellaneous user data
    
     doc/bitstream_filters.texi            |  33 ++++
     libavcodec/Makefile                   |   6 +-
     libavcodec/cbs_misc.c                 | 217 ++++++++++++++++++++++++++
     libavcodec/cbs_misc.h                 | 109 +++++++++++++
     libavcodec/cbs_misc_syntax_template.c | 150 ++++++++++++++++++
     libavcodec/cbs_sei.c                  |  25 +++
     libavcodec/cbs_sei.h                  |   7 +
     libavcodec/h264_metadata_bsf.c        | 144 +++++++++++++++++
     libavcodec/h265_metadata_bsf.c        | 144 +++++++++++++++++
     libavcodec/mpeg2_metadata_bsf.c       |  80 ++++++++++
     10 files changed, 912 insertions(+), 3 deletions(-)
     create mode 100644 libavcodec/cbs_misc.c
     create mode 100644 libavcodec/cbs_misc.h
     create mode 100644 libavcodec/cbs_misc_syntax_template.c
    
    base-commit: 9a820ec8b1e2323b70a1cebd204bf459bf7daa1a
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.50.ffstaging.FFmpeg.1675471315.ffmpegagent@gmail.com
  • pr-ffstaging-49/tmm1/sysctl-chk-v1

    configure: check for sysctl.h explicitly
    
    From: Aman Karmani <aman@tmm1.net>
    
    HAVE_SYSCTL is used to guard #include <sys/sysctl.h>, so make sure
    we only define it when that header is present.
    
    In recent glibc, the header was removed:
    https://sourceware.org/pipermail/glibc-cvs/2020q2/069366.html
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.49.ffstaging.FFmpeg.1673910968885.ffmpegagent@gmail.com
  • pr-ffstaging-48/enen92/ass_mkv_fixed_subs-v1

    libavformat/matroskadec: set fixed duration for subtitles
    
    The matroska specification states the start time and duration of subtitle
    entries are encoded in the block TimeStamp and BlockDuration. Furthermore,
    for all subtitle formats except S_HDMV/PGS the BlockDuration must always be
    defined and have an absolute value even if it is simply 0. ffmpeg assumes
    that a duration of 0 means the duration is still unknown and tries to adjust
    based on the next packet pts. This is wrong for all formats except
    S_HDMV/PGS. Since changing the semantics of duration 0 is not an option
    (touches too many parts of the code) this change introduces
    AV_PKT_FLAG_FIXED_DURATION flag which decoders might use to flag the
    duration of a given packet should not be changed.
    
    Signed-off-by: Miguel Borges de Freitas enen92@kodi.tv
    
    ----------------------------------------------------------------------------
    
    This is my attempt at fixing https://trac.ffmpeg.org/ticket/10135 Initially
    reported to Kodi in https://github.com/xbmc/xbmc/issues/21625
    
    Miguel Borges de Freitas (2):
      libavformat/matroskadec: set fixed duration for subtitles
      fate: update test reference data to include AV_PKT_FLAG_FIXED_DURATION
    
     libavcodec/packet.h                        |  5 ++
     libavformat/demux.c                        |  3 +-
     libavformat/matroskadec.c                  |  4 +
     tests/ref/fate/matroska-dvbsub-remux       | 84 ++++++++++----------
     tests/ref/fate/matroska-zero-length-block  |  4 +-
     tests/ref/fate/matroska-zlib-decompression |  2 +-
     tests/ref/fate/shortest-sub                | 92 +++++++++++-----------
     7 files changed, 102 insertions(+), 92 deletions(-)
    
    base-commit: 94aa70d757af6b0e0919250f9def2a819aa00358
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.48.ffstaging.FFmpeg.1673365328.ffmpegagent@gmail.com
  • pr-ffstaging-47/tmm1/v4l2-dbg-v1

    avcodec/v4l2_m2m: log both v4l2 and av pixel formats during negotiation
    
    From: Aman Karmani <aman@tmm1.net>
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.47.ffstaging.FFmpeg.1673296206887.ffmpegagent@gmail.com
  • pr-ffstaging-46/tmm1/vaapi-a53cc-v4

    avcodec/vaapi_encode_h26x: passthrough A53 CC data as H264/HEVC SEI
    
    From: Aman Karmani <aman@tmm1.net>
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.46.v4.ffstaging.FFmpeg.1673289624724.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.46.ffstaging.FFmpeg.1672687960493.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.46.v2.ffstaging.FFmpeg.1673025300846.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.46.v3.ffstaging.FFmpeg.1673026884566.ffmpegagent@gmail.com
  • pr-ffstaging-46/tmm1/vaapi-a53cc-v3

    avcodec/vaapi_encode_h26x: passthrough A53 CC data as H264/HEVC SEI
    
    From: Aman Karmani <aman@tmm1.net>
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.46.v3.ffstaging.FFmpeg.1673026884566.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.46.ffstaging.FFmpeg.1672687960493.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.46.v2.ffstaging.FFmpeg.1673025300846.ffmpegagent@gmail.com
  • pr-ffstaging-46/tmm1/vaapi-a53cc-v2

    avcodec/vaapi_encode_h26x: passthrough A53 CC data as H264/HEVC SEI
    
    From: Aman Karmani <aman@tmm1.net>
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.46.v2.ffstaging.FFmpeg.1673025300846.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.46.ffstaging.FFmpeg.1672687960493.ffmpegagent@gmail.com
  • pr-ffstaging-46/tmm1/vaapi-a53cc-v1

    avcodec/vaapi_encode_h26x: passthrough A53 CC data as H264/HEVC SEI
    
    From: Aman Karmani <aman@tmm1.net>
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.46.ffstaging.FFmpeg.1672687960493.ffmpegagent@gmail.com
  • pr-ffstaging-45/tmm1/mpeg2-a53-flush-v1

    avcodec/mpeg12dec: flush a53 data
    
    From: Aman Karmani <aman@tmm1.net>
    
    Signed-off-by: Aman Karmani <aman@tmm1.net>
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.45.ffstaging.FFmpeg.1672687116474.ffmpegagent@gmail.com
  • pr-ffstaging-44/softworkz/submit_copy_sidedata-v2

    QSV Overlay Filter: Copy side data from input to output frame
    
    This is split out from my earlier patchset "SEI parsing for QSV decoders"
    (https://github.com/ffstaging/FFmpeg/pull/31) as it is only logically
    related but not technically.
    
    The first patch had been reviewed and partially authored by Anton (I have
    indicated this with a signed-off line, please advise in case this wouldn't
    be right)
    
    The second patch performs the copying of side data from input to output
    frames.
    
    softworkz
    
    v2:
    
     * Fix commit message (avcodec > avfilter)
     * Bump version in version.h
     * Resolve rebase conflicts
    
    softworkz (2):
      avutil/frame: Add av_frame_copy_side_data() and
        av_frame_remove_all_side_data()
      avfilter/vpp_qsv: Copy side-data from input to output frame
    
     doc/APIchanges               |  4 +++
     libavfilter/qsvvpp.c         |  6 ++++
     libavfilter/vf_overlay_qsv.c | 19 +++++++---
     libavutil/frame.c            | 67 ++++++++++++++++++++++--------------
     libavutil/frame.h            | 32 +++++++++++++++++
     libavutil/version.h          |  2 +-
     6 files changed, 99 insertions(+), 31 deletions(-)
    
    base-commit: 5661c8715ce4f752e676bda75b332efc669694ed
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.44.v2.ffstaging.FFmpeg.1667475701.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.44.ffstaging.FFmpeg.1666652664.ffmpegagent@gmail.com
  • pr-ffstaging-42/softworkz/submit_vaapi_overlay-v2

    Fixes and Enhancements for VAAPI Overlay
    
    This patchset resolves a number of issues in the current code:
    
     * Bogus doubles framesync initialization
     * Executing build_parameters on each input frame
     * Segfault when there's no secondary input (yet)
    
    and adds a number of enhancements to bring this on-par with the other
    overlay filters:
    
     * Enable pixel alpha blending
     * Expose framesync parameters
     * Add support for expressions in overlay parameters (x, y, w, h)
    
    v2 Changes:
    
     * Changed var names to all-caps
     * Added note about defaults for w/h to filters.texi
    
    softworkz (11):
      avfilter/overlay_vaapi: use FILTER_SINGLE_PIXFMT
      avfilter/overlay_vaapi: build filter params just once
      avfilter/overlay_vaapi: remove double framesync init
      avfilter/overlay_vaapi: handle secondary null input
      avfilter/overlay_vaapi: reformat options
      avfilter/overlay_vaapi: remove redundant .get_buffer assignments
      avfilter/overlay_vaapi: add framesync options
      avfilter/overlay_vaapi: precalculate blend_state, enable pixel alpha
      avfilter/overlay_vaapi: enable expressions for overlay parameters
      doc/filters.texi: remove incorrect statement
      doc/filters.texi: update overlay_vaapi documentation
    
     doc/filters.texi               |  52 ++++--
     libavfilter/vf_overlay_vaapi.c | 328 ++++++++++++++++++++++-----------
     2 files changed, 259 insertions(+), 121 deletions(-)
    
    base-commit: f3b5277057ad84071721f01419fe4badeceaff08
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.42.v2.ffstaging.FFmpeg.1667197207.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.42.ffstaging.FFmpeg.1665399281.ffmpegagent@gmail.com
  • pr-ffstaging-18/softworkz/submit_subfiltering-v9

    Subtitle Filtering 2022
    
    Subtitle Filtering 2022
    =======================
    
    This is a substantial update to the earlier subtitle filtering patch series.
    A primary goal has been to address others' concerns as much as possible on
    one side and to provide more clarity and control over the way things are
    working. Clarity is is specifically important to allow for a better
    understanding of the need for a subtitle start pts value that can be
    different from the frame's pts value. This is done by refactoring the
    subtitle timing fields in AVFrame, adding a frame field to indicate repeated
    subtitle frames, and finally the full removal of the heartbeat
    functionality, replaced by a new 'subfeed' filter that provides different
    modes for arbitrating subtitle frames in a filter graph. Finally, each
    subtitle filter's documentation has been amended by a section describing the
    filter's timeline behavior (in v3 update).
    
    Subtitle Filtering Demos
    ========================
    
    I published a demonstration of subtitle filtering capabilities with OCR,
    text and bitmap subtitle manipulation involved: Demo 1: Text-Manipulation
    with Bitmap Subtitles
    [https://github.com/softworkz/SubtitleFilteringDemos/tree/master/Demo1]
    
    v9
    ==
    
     * Cleared the cc recipient list
     * Resending after e-mail error
    
    v8
    ==
    
     * Rebased and adapted to upstream changes
    
    v7
    ==
    
     * Revert loglevel change
     * snull: propagate format
     * fftools/ffmpeg: ensure monotonic (frame-)pts values for subtitles
    
    v6 - Fix assertion errors
    =========================
    
     * text2graphicsub: fix null point on uninit after error
     * strim: propagate width and height
     * avfilter: add default propagation time_base from inlink to outlink
    
    v5 - Conversion to Graphic Subtitles, and other enhancements
    ============================================================
    
     * I'm glad to announce that Traian (@tcoza) has joined the project and
       contributed a new 'text2graphicsub' filter to convert text subtitles to
       graphic subtitles, which can in turn be encoded as dvd, dvb or x-subs
       (and any other encoder for graphic subs that might be added in the
       future). This filter closes the last open "gap" in subtitle processing.
     * stripstyles filter: now allows very fine-grained control over which ASS
       style codes should be preserved or stripped
     * stripstyles: do not drop dialog margin values
     * subfeed filter: eliminates duplicate frames with duplicate start times
       when 'fix_overlap' is specified
     * textmod: do not drop effect values
     * graphicsub2text: reduce font size jitter
     * ass_split: add function to selectively preserve elements when splitting
     * add strim, snull and ssink and further unify subtitle frame handling with
       audio and video
     * ffmpeg_filter: get simple filter notation working for subtitles
    
    v4 - Quality Improvements
    =========================
    
     * finally an updated version
     * includes many improvements from internal testing
     * all FATE tests passed
     * all example commands from the docs verified to work
     * can't list all the detail changes..
     * I have left out the extra commits which can be handled separately, just
       in case somebody wonders why these are missing:
       * avcodec/webvttenc: Don't encode drawing codes and empty lines
       * avcodec/webvttenc: convert hard-space tags to  
       * avutil/ass_split: Add parsing of hard-space tags (\h)
       * avutil/ass_split: Treat all content in curly braces as hidden
       * avutil/ass_split: Fix ass parsing of style codes with comments
    
    v3 - Rebase
    ===========
    
    due to merge conflicts - apologies.
    
    Changes in v2
    =============
    
     * added .gitattributes file to enforce binary diffs for the test refs that
       cannot be applied when being sent via e-mail
     * perform filter graph re-init due to subtitle "frame size" change only
       when the size was unknown before and not set via -canvas_size
     * overlaytextsubs: Make sure to request frames on the subtitle input
     * avfilter/splitcc: Start parsing cc data on key frames only
     * avcodec/webvttenc: Don't encode ass drawing codes and empty lines
     * stripstyles: fix mem leak
     * gs2t: improve color detection
     * gs2t: empty frames must not be skipped
     * subfeed: fix name
     * textmod: preserve margins
     * added .gitattributes file to enforce binary diffs for the test refs that
       cannot be applied when being sent via e-mail
     * perform filter graph re-init due to subtitle "frame size" change only
       when the size was unknown before and not set via -canvas_size
     * avcodec/dvbsubdec: Fix conditions for fallback to default resolution
     * Made changes suggested by Andreas
     * Fixed failing command line reported by Michael
    
    Changes from previous version v24:
    
    AVFrame
    =======
    
     * Removed sub_start_time The start time is now added to the subtitle
       start_pts during decoding The sub_end_time field is adjusted accordingly
     * Renamed sub_end_time to duration which it is effectively after removing
       the start_time
     * Added a sub-struct 'subtitle_timing' to av frame Contains subtitle_pts
       renamed to 'subtitle_timing.start_pts' and 'subtitle_timing.duration'
     * Change both fields to (fixed) time_base AV_TIMEBASE
     * add repeat_sub field provides a clear indication whether a subtitle frame
       is an actual subtitle event or a repeated subtitle frame in a filter
       graph
    
    Heartbeat Removal
    =================
    
     * completely removed the earlier heartbeat implementation
     * filtering arbitration is now implemented in a new filter: 'subfeed'
     * subfeed will be auto-inserted for compatiblity with sub2video command
       lines
     * the new behavior is not exactly identical to the earlier behavior, but it
       basically allows to achieve the same results
     * there's a small remainder, now named subtitle kickoff which serves to get
       things (in the filter graph) going right from the start
    
    New 'subfeed' Filter
    ====================
    
     * a versatile filter for solving all kinds of problems with subtile frame
       flow in filter graphs
     * Can be inserted at any position in a graph
     * Auto-inserted for sub2video command lines (in repeat-mode)
     * Allows duration fixup delay input frames with unknown duration and infer
       duration from start of subsequent frame
     * Provides multiple modes of operation:
       * repeat mode (default) Queues input frames Outputs frames at a fixed
         (configurable) rate Either sends a matching input frame (repeatedly) or
         empty frames otherwise
       * scatter mode similar to repeat mode, but splits input frames by
         duration into small segments with same content
       * forward mode No fixed output rate Useful in combination with duration
         fixup or overlap fixup
    
    ffmpeg Tool Changes
    ===================
    
     * delay subtitle output stream initialization (like for audio and video)
       This is needed for example when a format header depends on having
       received an initial frame to derive certain header values from
     * decoding: set subtitle frame size from decoding context
     * re-init graph when subtitle size changes
     * always insert subscale filter for sub2video command lines (to ensure
       correct scaling)
    
    Subtitle Encoding
    =================
    
     * ignore repeated frames for encoding based on repeat_sub field in AVFrame
     * support multi-area encoding for text subtitles Subtitle OCR can create
       multiple areas at different positions. Previously, the texts were always
       squashed into a single area ('subtitle rect'), which was not ideal.
       Multiple text areas are now generally supported:
       * ASS Encoder Changed to use the 'receive_packet' encoding API A single
         frame with multiple text areas will create multiple packets now
       * All other text subtitle encoders A newline is inserted between the text
         from multiple areas
    
    graphicsub2text (OCR)
    =====================
    
     * enhanced preprocessing
       * using elbg algorithm for color quantization
       * detection and removal of text outlines
       * map-based identification of colors per word (text, outline, background)
     * add option for duration fixup
     * add option to dump preprocessing bitmaps
     * Recognize formatting and apply as ASS inline styles
       * per word(!)
       * paragraph alignment
       * positioning
       * font names
       * font size
       * font style (italic, underline, bold)
       * text color, outline color
    
    Other Filter Changes
    ====================
    
     * all: Make sure to forward all link properties (time base, frame rate, w,
       h) where appropriate
     * overlaytextsubs: request frames on the subtitle input
     * overlaytextsubs: disable read-order checking
     * overlaytextsubs: improve implementation of render_latest_only
     * overlaytextsubs: ensure equal in/out video formats
     * splitcc: derive framerate from realtime_latency
     * graphicsub2video: implement caching of converted frames
     * graphicsub2video: use 1x1 output frame size as long as subtitle size is
       unknown (0x0)
    
    Plus a dozen of things I forgot..
    
    softworkz (25):
      avcodec,avutil: Move enum AVSubtitleType to avutil, add new and
        deprecate old values
      avutil/frame: Prepare AVFrame for subtitle handling
      avcodec/subtitles: Introduce new frame-based subtitle decoding API
      avcodec/libzvbi: set subtitle type
      avfilter/subtitles: Update vf_subtitles to use new decoding api
      avcodec,avutil: Move ass helper functions to avutil as avpriv_ and
        extend ass dialog parsing
      avcodec/subtitles: Replace deprecated enum values
      fftools/play,probe: Adjust for subtitle changes
      avfilter/subtitles: Add subtitles.c for subtitle frame allocation
      avfilter/avfilter: Handle subtitle frames
      avfilter/avfilter: Fix hardcoded input index
      avfilter/sbuffer: Add sbuffersrc and sbuffersink filters
      avfilter/overlaygraphicsubs: Add overlaygraphicsubs and
        graphicsub2video filters
      avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video
        filters
      avfilter/textmod: Add textmod, censor and show_speaker filters
      avfilter/stripstyles: Add stripstyles filter
      avfilter/splitcc: Add splitcc filter for closed caption handling
      avfilter/graphicsub2text: Add new graphicsub2text filter (OCR)
      avfilter/subscale: Add filter for scaling and/or re-arranging
        graphical subtitles
      avfilter/subfeed: add subtitle feed filter
      avfilter/text2graphicsub: Added text2graphicsub subtitle filter
      avfilter/snull,strim: Add snull and strim filters
      avcodec/subtitles: Migrate subtitle encoders to frame-based API
      fftools/ffmpeg: Introduce subtitle filtering and new frame-based
        subtitle encoding
      avcodec/dvbsubdec: Fix conditions for fallback to default resolution
    
     configure                                 |   10 +-
     doc/filters.texi                          |  807 ++++++++++++++
     fftools/ffmpeg.c                          |  604 +++++-----
     fftools/ffmpeg.h                          |   17 +-
     fftools/ffmpeg_filter.c                   |  268 ++++-
     fftools/ffmpeg_hw.c                       |    2 +-
     fftools/ffmpeg_mux_init.c                 |   28 +-
     fftools/ffmpeg_opt.c                      |    1 +
     fftools/ffplay.c                          |  102 +-
     fftools/ffprobe.c                         |   47 +-
     libavcodec/Makefile                       |   56 +-
     libavcodec/ass.h                          |  151 +--
     libavcodec/ass_split.h                    |  191 ----
     libavcodec/assdec.c                       |    4 +-
     libavcodec/assenc.c                       |  191 +++-
     libavcodec/avcodec.c                      |    8 +
     libavcodec/avcodec.h                      |   34 +-
     libavcodec/ccaption_dec.c                 |   20 +-
     libavcodec/codec_internal.h               |   12 -
     libavcodec/decode.c                       |   60 +-
     libavcodec/dvbsubdec.c                    |   53 +-
     libavcodec/dvbsubenc.c                    |   96 +-
     libavcodec/dvdsubdec.c                    |    2 +-
     libavcodec/dvdsubenc.c                    |  103 +-
     libavcodec/encode.c                       |   61 +-
     libavcodec/internal.h                     |   18 +
     libavcodec/jacosubdec.c                   |    2 +-
     libavcodec/libaribb24.c                   |    2 +-
     libavcodec/libzvbi-teletextdec.c          |   17 +-
     libavcodec/microdvddec.c                  |    7 +-
     libavcodec/movtextdec.c                   |    3 +-
     libavcodec/movtextenc.c                   |  126 ++-
     libavcodec/mpl2dec.c                      |    2 +-
     libavcodec/pgssubdec.c                    |    2 +-
     libavcodec/realtextdec.c                  |    2 +-
     libavcodec/samidec.c                      |    2 +-
     libavcodec/srtdec.c                       |    2 +-
     libavcodec/srtenc.c                       |  116 +-
     libavcodec/subviewerdec.c                 |    2 +-
     libavcodec/tests/avcodec.c                |    5 +-
     libavcodec/textdec.c                      |    4 +-
     libavcodec/ttmlenc.c                      |  114 +-
     libavcodec/utils.c                        |  185 ++-
     libavcodec/webvttdec.c                    |    2 +-
     libavcodec/webvttenc.c                    |   94 +-
     libavcodec/xsubdec.c                      |    2 +-
     libavcodec/xsubenc.c                      |   88 +-
     libavfilter/Makefile                      |   18 +
     libavfilter/allfilters.c                  |   19 +
     libavfilter/avfilter.c                    |   42 +-
     libavfilter/avfilter.h                    |   11 +
     libavfilter/avfiltergraph.c               |    5 +
     libavfilter/buffersink.c                  |   54 +
     libavfilter/buffersink.h                  |    7 +
     libavfilter/buffersrc.c                   |   72 ++
     libavfilter/buffersrc.h                   |    1 +
     libavfilter/formats.c                     |   16 +
     libavfilter/formats.h                     |    3 +
     libavfilter/internal.h                    |   19 +-
     libavfilter/sf_graphicsub2text.c          | 1137 +++++++++++++++++++
     libavfilter/sf_snull.c                    |   61 +
     libavfilter/sf_splitcc.c                  |  395 +++++++
     libavfilter/sf_stripstyles.c              |  237 ++++
     libavfilter/sf_subfeed.c                  |  412 +++++++
     libavfilter/sf_subscale.c                 |  884 +++++++++++++++
     libavfilter/sf_text2graphicsub.c          |  634 +++++++++++
     libavfilter/sf_textmod.c                  |  710 ++++++++++++
     libavfilter/subtitles.c                   |   63 ++
     libavfilter/subtitles.h                   |   44 +
     libavfilter/trim.c                        |   60 +-
     libavfilter/vf_overlaygraphicsubs.c       |  765 +++++++++++++
     libavfilter/vf_overlaytextsubs.c          |  680 +++++++++++
     libavfilter/vf_subtitles.c                |   67 +-
     libavutil/Makefile                        |    4 +
     {libavcodec => libavutil}/ass.c           |  115 +-
     libavutil/ass_internal.h                  |  135 +++
     {libavcodec => libavutil}/ass_split.c     |  179 ++-
     libavutil/ass_split_internal.h            |  254 +++++
     libavutil/frame.c                         |  206 +++-
     libavutil/frame.h                         |   85 +-
     libavutil/subfmt.c                        |   45 +
     libavutil/subfmt.h                        |  115 ++
     libavutil/version.h                       |    5 +-
     tests/ref/fate/filter-overlay-dvdsub-2397 |  181 ++-
     tests/ref/fate/sub-dvb                    |  162 +--
     tests/ref/fate/sub-scc                    |    1 -
     tests/ref/fate/sub2video                  | 1092 +++++++++++++++++-
     tests/ref/fate/sub2video_basic            | 1238 +++++++++++++++++++--
     tests/ref/fate/sub2video_time_limited     |   78 +-
     89 files changed, 12454 insertions(+), 1582 deletions(-)
     delete mode 100644 libavcodec/ass_split.h
     create mode 100644 libavfilter/sf_graphicsub2text.c
     create mode 100644 libavfilter/sf_snull.c
     create mode 100644 libavfilter/sf_splitcc.c
     create mode 100644 libavfilter/sf_stripstyles.c
     create mode 100644 libavfilter/sf_subfeed.c
     create mode 100644 libavfilter/sf_subscale.c
     create mode 100644 libavfilter/sf_text2graphicsub.c
     create mode 100644 libavfilter/sf_textmod.c
     create mode 100644 libavfilter/subtitles.c
     create mode 100644 libavfilter/subtitles.h
     create mode 100644 libavfilter/vf_overlaygraphicsubs.c
     create mode 100644 libavfilter/vf_overlaytextsubs.c
     rename {libavcodec => libavutil}/ass.c (59%)
     create mode 100644 libavutil/ass_internal.h
     rename {libavcodec => libavutil}/ass_split.c (71%)
     create mode 100644 libavutil/ass_split_internal.h
     create mode 100644 libavutil/subfmt.c
     create mode 100644 libavutil/subfmt.h
    
    base-commit: 882a17068fd8e62c7d38c14e6fb160d7c9fc446a
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.18.v9.ffstaging.FFmpeg.1666689226.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.ffstaging.FFmpeg.1642122813.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v2.ffstaging.FFmpeg.1642646916.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v3.ffstaging.FFmpeg.1642649134.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v4.ffstaging.FFmpeg.1653744323.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v5.ffstaging.FFmpeg.1656151077.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v6.ffstaging.FFmpeg.1656261322.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v7.ffstaging.FFmpeg.1664735360.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v8.ffstaging.FFmpeg.1666591816.ffmpegagent@gmail.com
    
  • pr-ffstaging-31/softworkz/submit_qsv_sei-v6

    Implement SEI parsing for QSV decoders
    
    Missing SEI information has always been a major drawback when using the QSV
    decoders. It turned out that there's a hardly known api method that provides
    access to all SEI (h264/hevc) or user data (mpeg2video).
    
    This allows to get things like closed captions, frame packing, display
    orientation, HDR data (mastering display, content light level, etc.) without
    having to rely on those data being provided by the MSDK as extended buffers.
    
    The commit "Implement SEI parsing for QSV decoders" includes some hard-coded
    workarounds for MSDK bugs which I reported:
    https://github.com/Intel-Media-SDK/MediaSDK/issues/2597#issuecomment-1072795311
    If someone is interested in the details please contact me directly.
    
    v5
    
     * Split out the first two commits as a separate patchset
       https://github.com/ffstaging/FFmpeg/pull/44
     * For mpeg12, parse A53 data in qsvdec directly
     * For h264 and hevc, factor out ff_hxxx_set_sei_to_frame functions to avoid
       being dependent on the full decoder contexts
     * Ensure sufficient padding for get_bits API
     * Addresses all points (1, 2, 3, 4) made by Andreas
       https://patchwork.ffmpeg.org/project/ffmpeg/cover/pull.31.v5.ffstaging.FFmpeg.1656708534.ffmpegagent@gmail.com/
    
    v4
    
     * add new dependencies in makefile Now, build still works when someone uses
       configure --disable-decoder=h264 --disable-decoder=hevc
       --disable-decoder=mpegvideo --disable-decoder=mpeg1video
       --disable-decoder=mpeg2video --enable-libmfx
    
    v3
    
     * frame.h: clarify doc text for av_frame_copy_side_data()
    
    v2
    
     * qsvdec: make error handling consistent and clear
     * qsvdec: remove AV_CODEC_ID_MPEG1VIDEO constants
     * hevcdec: rename function to ff_hevc_set_side_data(), add doc text
    
    v3
    
     * qsvdec: fix c/p error
    
    softworkz (3):
      avcodec/hevcdec: factor out ff_hevc_set_set_to_frame
      avcodec/h264dec: make h264_export_frame_props() accessible
      avcodec/qsvdec: Implement SEI parsing for QSV decoders
    
     libavcodec/Makefile     |   2 +-
     libavcodec/h264_sei.c   | 197 ++++++++++++++++++++++++
     libavcodec/h264_sei.h   |   2 +
     libavcodec/h264_slice.c | 190 +-----------------------
     libavcodec/hevc_sei.c   | 252 +++++++++++++++++++++++++++++++
     libavcodec/hevc_sei.h   |   3 +
     libavcodec/hevcdec.c    | 249 +------------------------------
     libavcodec/qsvdec.c     | 321 ++++++++++++++++++++++++++++++++++++++++
     8 files changed, 782 insertions(+), 434 deletions(-)
    
    base-commit: 882a17068fd8e62c7d38c14e6fb160d7c9fc446a
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.31.v6.ffstaging.FFmpeg.1666670616.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.31.ffstaging.FFmpeg.1653552529.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.31.v2.ffstaging.FFmpeg.1654074366.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.31.v3.ffstaging.FFmpeg.1654106506.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.31.v4.ffstaging.FFmpeg.1656286888.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.31.v5.ffstaging.FFmpeg.1656708534.ffmpegagent@gmail.com
  • pr-ffstaging-44/softworkz/submit_copy_sidedata-v1

    QSV Overlay Filter: Copy side data from input to output frame
    
    This is split out from my earlier patchset "SEI parsing for QSV decoders"
    (https://github.com/ffstaging/FFmpeg/pull/31) as it is only logically
    related but not technically.
    
    The first patch had been reviewed and partially authored by Anton (I have
    indicated this with a signed-off line, please advise in case this wouldn't
    be right)
    
    The second patch performs the copying of side data from input to output
    frames.
    
    softworkz
    
    softworkz (2):
      avutil/frame: Add av_frame_copy_side_data() and
        av_frame_remove_all_side_data()
      avcodec/vpp_qsv: Copy side data from input to output frame
    
     doc/APIchanges               |  4 +++
     libavfilter/qsvvpp.c         |  6 ++++
     libavfilter/vf_overlay_qsv.c | 19 +++++++---
     libavutil/frame.c            | 67 ++++++++++++++++++++++--------------
     libavutil/frame.h            | 32 +++++++++++++++++
     libavutil/version.h          |  4 +--
     6 files changed, 100 insertions(+), 32 deletions(-)
    
    base-commit: 882a17068fd8e62c7d38c14e6fb160d7c9fc446a
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.44.ffstaging.FFmpeg.1666652664.ffmpegagent@gmail.com
  • pr-ffstaging-18/softworkz/submit_subfiltering-v8

    Subtitle Filtering 2022
    
    Subtitle Filtering 2022
    =======================
    
    This is a substantial update to the earlier subtitle filtering patch series.
    A primary goal has been to address others' concerns as much as possible on
    one side and to provide more clarity and control over the way things are
    working. Clarity is is specifically important to allow for a better
    understanding of the need for a subtitle start pts value that can be
    different from the frame's pts value. This is done by refactoring the
    subtitle timing fields in AVFrame, adding a frame field to indicate repeated
    subtitle frames, and finally the full removal of the heartbeat
    functionality, replaced by a new 'subfeed' filter that provides different
    modes for arbitrating subtitle frames in a filter graph. Finally, each
    subtitle filter's documentation has been amended by a section describing the
    filter's timeline behavior (in v3 update).
    
    Subtitle Filtering Demos
    ========================
    
    I published a demonstration of subtitle filtering capabilities with OCR,
    text and bitmap subtitle manipulation involved: Demo 1: Text-Manipulation
    with Bitmap Subtitles
    [https://github.com/softworkz/SubtitleFilteringDemos/tree/master/Demo1]
    
    v8
    ==
    
     * Rebased and adapted to upstream changes
    
    v7
    ==
    
     * Revert loglevel change
     * snull: propagate format
     * fftools/ffmpeg: ensure monotonic (frame-)pts values for subtitles
    
    v6 - Fix assertion errors
    =========================
    
     * text2graphicsub: fix null point on uninit after error
     * strim: propagate width and height
     * avfilter: add default propagation time_base from inlink to outlink
    
    v5 - Conversion to Graphic Subtitles, and other enhancements
    ============================================================
    
     * I'm glad to announce that Traian (@tcoza) has joined the project and
       contributed a new 'text2graphicsub' filter to convert text subtitles to
       graphic subtitles, which can in turn be encoded as dvd, dvb or x-subs
       (and any other encoder for graphic subs that might be added in the
       future). This filter closes the last open "gap" in subtitle processing.
     * stripstyles filter: now allows very fine-grained control over which ASS
       style codes should be preserved or stripped
     * stripstyles: do not drop dialog margin values
     * subfeed filter: eliminates duplicate frames with duplicate start times
       when 'fix_overlap' is specified
     * textmod: do not drop effect values
     * graphicsub2text: reduce font size jitter
     * ass_split: add function to selectively preserve elements when splitting
     * add strim, snull and ssink and further unify subtitle frame handling with
       audio and video
     * ffmpeg_filter: get simple filter notation working for subtitles
    
    v4 - Quality Improvements
    =========================
    
     * finally an updated version
     * includes many improvements from internal testing
     * all FATE tests passed
     * all example commands from the docs verified to work
     * can't list all the detail changes..
     * I have left out the extra commits which can be handled separately, just
       in case somebody wonders why these are missing:
       * avcodec/webvttenc: Don't encode drawing codes and empty lines
       * avcodec/webvttenc: convert hard-space tags to  
       * avutil/ass_split: Add parsing of hard-space tags (\h)
       * avutil/ass_split: Treat all content in curly braces as hidden
       * avutil/ass_split: Fix ass parsing of style codes with comments
    
    v3 - Rebase
    ===========
    
    due to merge conflicts - apologies.
    
    Changes in v2
    =============
    
     * added .gitattributes file to enforce binary diffs for the test refs that
       cannot be applied when being sent via e-mail
     * perform filter graph re-init due to subtitle "frame size" change only
       when the size was unknown before and not set via -canvas_size
     * overlaytextsubs: Make sure to request frames on the subtitle input
     * avfilter/splitcc: Start parsing cc data on key frames only
     * avcodec/webvttenc: Don't encode ass drawing codes and empty lines
     * stripstyles: fix mem leak
     * gs2t: improve color detection
     * gs2t: empty frames must not be skipped
     * subfeed: fix name
     * textmod: preserve margins
     * added .gitattributes file to enforce binary diffs for the test refs that
       cannot be applied when being sent via e-mail
     * perform filter graph re-init due to subtitle "frame size" change only
       when the size was unknown before and not set via -canvas_size
     * avcodec/dvbsubdec: Fix conditions for fallback to default resolution
     * Made changes suggested by Andreas
     * Fixed failing command line reported by Michael
    
    Changes from previous version v24:
    
    AVFrame
    =======
    
     * Removed sub_start_time The start time is now added to the subtitle
       start_pts during decoding The sub_end_time field is adjusted accordingly
     * Renamed sub_end_time to duration which it is effectively after removing
       the start_time
     * Added a sub-struct 'subtitle_timing' to av frame Contains subtitle_pts
       renamed to 'subtitle_timing.start_pts' and 'subtitle_timing.duration'
     * Change both fields to (fixed) time_base AV_TIMEBASE
     * add repeat_sub field provides a clear indication whether a subtitle frame
       is an actual subtitle event or a repeated subtitle frame in a filter
       graph
    
    Heartbeat Removal
    =================
    
     * completely removed the earlier heartbeat implementation
     * filtering arbitration is now implemented in a new filter: 'subfeed'
     * subfeed will be auto-inserted for compatiblity with sub2video command
       lines
     * the new behavior is not exactly identical to the earlier behavior, but it
       basically allows to achieve the same results
     * there's a small remainder, now named subtitle kickoff which serves to get
       things (in the filter graph) going right from the start
    
    New 'subfeed' Filter
    ====================
    
     * a versatile filter for solving all kinds of problems with subtile frame
       flow in filter graphs
     * Can be inserted at any position in a graph
     * Auto-inserted for sub2video command lines (in repeat-mode)
     * Allows duration fixup delay input frames with unknown duration and infer
       duration from start of subsequent frame
     * Provides multiple modes of operation:
       * repeat mode (default) Queues input frames Outputs frames at a fixed
         (configurable) rate Either sends a matching input frame (repeatedly) or
         empty frames otherwise
       * scatter mode similar to repeat mode, but splits input frames by
         duration into small segments with same content
       * forward mode No fixed output rate Useful in combination with duration
         fixup or overlap fixup
    
    ffmpeg Tool Changes
    ===================
    
     * delay subtitle output stream initialization (like for audio and video)
       This is needed for example when a format header depends on having
       received an initial frame to derive certain header values from
     * decoding: set subtitle frame size from decoding context
     * re-init graph when subtitle size changes
     * always insert subscale filter for sub2video command lines (to ensure
       correct scaling)
    
    Subtitle Encoding
    =================
    
     * ignore repeated frames for encoding based on repeat_sub field in AVFrame
     * support multi-area encoding for text subtitles Subtitle OCR can create
       multiple areas at different positions. Previously, the texts were always
       squashed into a single area ('subtitle rect'), which was not ideal.
       Multiple text areas are now generally supported:
       * ASS Encoder Changed to use the 'receive_packet' encoding API A single
         frame with multiple text areas will create multiple packets now
       * All other text subtitle encoders A newline is inserted between the text
         from multiple areas
    
    graphicsub2text (OCR)
    =====================
    
     * enhanced preprocessing
       * using elbg algorithm for color quantization
       * detection and removal of text outlines
       * map-based identification of colors per word (text, outline, background)
     * add option for duration fixup
     * add option to dump preprocessing bitmaps
     * Recognize formatting and apply as ASS inline styles
       * per word(!)
       * paragraph alignment
       * positioning
       * font names
       * font size
       * font style (italic, underline, bold)
       * text color, outline color
    
    Other Filter Changes
    ====================
    
     * all: Make sure to forward all link properties (time base, frame rate, w,
       h) where appropriate
     * overlaytextsubs: request frames on the subtitle input
     * overlaytextsubs: disable read-order checking
     * overlaytextsubs: improve implementation of render_latest_only
     * overlaytextsubs: ensure equal in/out video formats
     * splitcc: derive framerate from realtime_latency
     * graphicsub2video: implement caching of converted frames
     * graphicsub2video: use 1x1 output frame size as long as subtitle size is
       unknown (0x0)
    
    Plus a dozen of things I forgot..
    
    softworkz (25):
      avcodec,avutil: Move enum AVSubtitleType to avutil, add new and
        deprecate old values
      avutil/frame: Prepare AVFrame for subtitle handling
      avcodec/subtitles: Introduce new frame-based subtitle decoding API
      avcodec/libzvbi: set subtitle type
      avfilter/subtitles: Update vf_subtitles to use new decoding api
      avcodec,avutil: Move ass helper functions to avutil as avpriv_ and
        extend ass dialog parsing
      avcodec/subtitles: Replace deprecated enum values
      fftools/play,probe: Adjust for subtitle changes
      avfilter/subtitles: Add subtitles.c for subtitle frame allocation
      avfilter/avfilter: Handle subtitle frames
      avfilter/avfilter: Fix hardcoded input index
      avfilter/sbuffer: Add sbuffersrc and sbuffersink filters
      avfilter/overlaygraphicsubs: Add overlaygraphicsubs and
        graphicsub2video filters
      avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video
        filters
      avfilter/textmod: Add textmod, censor and show_speaker filters
      avfilter/stripstyles: Add stripstyles filter
      avfilter/splitcc: Add splitcc filter for closed caption handling
      avfilter/graphicsub2text: Add new graphicsub2text filter (OCR)
      avfilter/subscale: Add filter for scaling and/or re-arranging
        graphical subtitles
      avfilter/subfeed: add subtitle feed filter
      avfilter/text2graphicsub: Added text2graphicsub subtitle filter
      avfilter/snull,strim: Add snull and strim filters
      avcodec/subtitles: Migrate subtitle encoders to frame-based API
      fftools/ffmpeg: Introduce subtitle filtering and new frame-based
        subtitle encoding
      avcodec/dvbsubdec: Fix conditions for fallback to default resolution
    
     configure                                 |   10 +-
     doc/filters.texi                          |  807 ++++++++++++++
     fftools/ffmpeg.c                          |  604 +++++-----
     fftools/ffmpeg.h                          |   17 +-
     fftools/ffmpeg_filter.c                   |  268 ++++-
     fftools/ffmpeg_hw.c                       |    2 +-
     fftools/ffmpeg_mux_init.c                 |   28 +-
     fftools/ffmpeg_opt.c                      |    1 +
     fftools/ffplay.c                          |  102 +-
     fftools/ffprobe.c                         |   47 +-
     libavcodec/Makefile                       |   56 +-
     libavcodec/ass.h                          |  151 +--
     libavcodec/ass_split.h                    |  191 ----
     libavcodec/assdec.c                       |    4 +-
     libavcodec/assenc.c                       |  191 +++-
     libavcodec/avcodec.c                      |    8 +
     libavcodec/avcodec.h                      |   34 +-
     libavcodec/ccaption_dec.c                 |   20 +-
     libavcodec/codec_internal.h               |   12 -
     libavcodec/decode.c                       |   60 +-
     libavcodec/dvbsubdec.c                    |   53 +-
     libavcodec/dvbsubenc.c                    |   96 +-
     libavcodec/dvdsubdec.c                    |    2 +-
     libavcodec/dvdsubenc.c                    |  103 +-
     libavcodec/encode.c                       |   61 +-
     libavcodec/internal.h                     |   18 +
     libavcodec/jacosubdec.c                   |    2 +-
     libavcodec/libaribb24.c                   |    2 +-
     libavcodec/libzvbi-teletextdec.c          |   17 +-
     libavcodec/microdvddec.c                  |    7 +-
     libavcodec/movtextdec.c                   |    3 +-
     libavcodec/movtextenc.c                   |  126 ++-
     libavcodec/mpl2dec.c                      |    2 +-
     libavcodec/pgssubdec.c                    |    2 +-
     libavcodec/realtextdec.c                  |    2 +-
     libavcodec/samidec.c                      |    2 +-
     libavcodec/srtdec.c                       |    2 +-
     libavcodec/srtenc.c                       |  116 +-
     libavcodec/subviewerdec.c                 |    2 +-
     libavcodec/tests/avcodec.c                |    5 +-
     libavcodec/textdec.c                      |    4 +-
     libavcodec/ttmlenc.c                      |  114 +-
     libavcodec/utils.c                        |  185 ++-
     libavcodec/webvttdec.c                    |    2 +-
     libavcodec/webvttenc.c                    |   94 +-
     libavcodec/xsubdec.c                      |    2 +-
     libavcodec/xsubenc.c                      |   88 +-
     libavfilter/Makefile                      |   18 +
     libavfilter/allfilters.c                  |   19 +
     libavfilter/avfilter.c                    |   42 +-
     libavfilter/avfilter.h                    |   11 +
     libavfilter/avfiltergraph.c               |    5 +
     libavfilter/buffersink.c                  |   54 +
     libavfilter/buffersink.h                  |    7 +
     libavfilter/buffersrc.c                   |   72 ++
     libavfilter/buffersrc.h                   |    1 +
     libavfilter/formats.c                     |   16 +
     libavfilter/formats.h                     |    3 +
     libavfilter/internal.h                    |   19 +-
     libavfilter/sf_graphicsub2text.c          | 1137 +++++++++++++++++++
     libavfilter/sf_snull.c                    |   61 +
     libavfilter/sf_splitcc.c                  |  395 +++++++
     libavfilter/sf_stripstyles.c              |  237 ++++
     libavfilter/sf_subfeed.c                  |  412 +++++++
     libavfilter/sf_subscale.c                 |  884 +++++++++++++++
     libavfilter/sf_text2graphicsub.c          |  634 +++++++++++
     libavfilter/sf_textmod.c                  |  710 ++++++++++++
     libavfilter/subtitles.c                   |   63 ++
     libavfilter/subtitles.h                   |   44 +
     libavfilter/trim.c                        |   60 +-
     libavfilter/vf_overlaygraphicsubs.c       |  765 +++++++++++++
     libavfilter/vf_overlaytextsubs.c          |  680 +++++++++++
     libavfilter/vf_subtitles.c                |   67 +-
     libavutil/Makefile                        |    4 +
     {libavcodec => libavutil}/ass.c           |  115 +-
     libavutil/ass_internal.h                  |  135 +++
     {libavcodec => libavutil}/ass_split.c     |  179 ++-
     libavutil/ass_split_internal.h            |  254 +++++
     libavutil/frame.c                         |  206 +++-
     libavutil/frame.h                         |   85 +-
     libavutil/subfmt.c                        |   45 +
     libavutil/subfmt.h                        |  115 ++
     libavutil/version.h                       |    5 +-
     tests/ref/fate/filter-overlay-dvdsub-2397 |  181 ++-
     tests/ref/fate/sub-dvb                    |  162 +--
     tests/ref/fate/sub-scc                    |    1 -
     tests/ref/fate/sub2video                  | 1092 +++++++++++++++++-
     tests/ref/fate/sub2video_basic            | 1238 +++++++++++++++++++--
     tests/ref/fate/sub2video_time_limited     |   78 +-
     89 files changed, 12454 insertions(+), 1582 deletions(-)
     delete mode 100644 libavcodec/ass_split.h
     create mode 100644 libavfilter/sf_graphicsub2text.c
     create mode 100644 libavfilter/sf_snull.c
     create mode 100644 libavfilter/sf_splitcc.c
     create mode 100644 libavfilter/sf_stripstyles.c
     create mode 100644 libavfilter/sf_subfeed.c
     create mode 100644 libavfilter/sf_subscale.c
     create mode 100644 libavfilter/sf_text2graphicsub.c
     create mode 100644 libavfilter/sf_textmod.c
     create mode 100644 libavfilter/subtitles.c
     create mode 100644 libavfilter/subtitles.h
     create mode 100644 libavfilter/vf_overlaygraphicsubs.c
     create mode 100644 libavfilter/vf_overlaytextsubs.c
     rename {libavcodec => libavutil}/ass.c (59%)
     create mode 100644 libavutil/ass_internal.h
     rename {libavcodec => libavutil}/ass_split.c (71%)
     create mode 100644 libavutil/ass_split_internal.h
     create mode 100644 libavutil/subfmt.c
     create mode 100644 libavutil/subfmt.h
    
    base-commit: 882a17068fd8e62c7d38c14e6fb160d7c9fc446a
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.18.v8.ffstaging.FFmpeg.1666591816.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.ffstaging.FFmpeg.1642122813.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v2.ffstaging.FFmpeg.1642646916.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v3.ffstaging.FFmpeg.1642649134.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v4.ffstaging.FFmpeg.1653744323.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v5.ffstaging.FFmpeg.1656151077.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v6.ffstaging.FFmpeg.1656261322.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.18.v7.ffstaging.FFmpeg.1664735360.ffmpegagent@gmail.com
    
  • pr-ffstaging-43/softworkz/submit_print_formats-v2

    Print filter input/output formats in help output
    
    Example output for command: ffmpeg -h filters=overlay
    
    Filter overlay
      Overlay a video source on top of the input.
        slice threading supported
        Inputs:
           #0: main (video), Formats: Dynamic, Default: [yuv420p, yuvj420p, yuva420p, nv12, nv21]
           #1: overlay (video), Formats: Dynamic, Default: [yuva420p]
        Outputs:
           #0: default (video), Formats: Dynamic, Default: [yuv420p, yuvj420p, yuva420p, nv12, nv21]
    
    overlay AVOptions:
        [...]
    
    Examples for what it prints in various cases
    ============================================
    
    For pass-through filter links
    
    "All (passthrough)"
    
    For filters using query_formats
    
    "Dynamic"
    
    For filters using query_formats where a call to query_formats succeeds
    
    "Dynamic, Default: [yuv420p, yuvj420p, yuva420p, nv12, nv21]"
    
    For all other cases
    
    "[s16p, s32p, fltp, dblp]"
    
    Except when all formats are supported (number of formats equals number of
    available formats)
    
    "All"
    
    ----------------------------------------------------------------------------
    
    v2: rebase and fix compiler warnings
    
    softworkz (2):
      avfilter/avfilter: add avfilter_print_config_formats()
      ftools/opt_common: Print filter input/output formats in help output
    
     doc/APIchanges              |   3 ++
     fftools/opt_common.c        |  37 +++++++++----
     libavfilter/avfilter.c      | 102 +++++++++++++++++++++++++++++++++++-
     libavfilter/avfilter.h      |  12 +++++
     libavfilter/avfiltergraph.c |  15 ++++--
     libavfilter/internal.h      |   9 ++++
     libavfilter/version.h       |   4 +-
     7 files changed, 163 insertions(+), 19 deletions(-)
    
    base-commit: 479747645f795b6f4f376578ea1556409f943c31
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.43.v2.ffstaging.FFmpeg.1665524301.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.43.ffstaging.FFmpeg.1665494271.ffmpegagent@gmail.com
  • pr-ffstaging-43/softworkz/submit_print_formats-v1

    Print filter input/output formats in help output
    
    Example out put for command: ffmpeg -h filters=overlay
    
    Filter overlay
      Overlay a video source on top of the input.
        slice threading supported
        Inputs:
           #0: main (video), Formats: Dynamic, Default: [yuv420p, yuvj420p, yuva420p, nv12, nv21]
           #1: overlay (video), Formats: Dynamic, Default: [yuva420p]
        Outputs:
           #0: default (video), Formats: Dynamic, Default: [yuv420p, yuvj420p, yuva420p, nv12, nv21]
    
    overlay AVOptions:
        [...]
    
    Examples for what it prints in various cases
    ============================================
    
    For pass-through filter links
    =============================
    
    "All (passthrough)"
    
    For filters using query_formats
    ===============================
    
    "Dynamic"
    
    For filters using query_formats where a call to query_formats succeeds
    ======================================================================
    
    "Dynamic, Default: [yuv420p, yuvj420p, yuva420p, nv12, nv21]"
    
    For all other cases
    ===================
    
    "[s16p, s32p, fltp, dblp]"
    
    Except in case when all formats are supported
    =============================================
    
    (when the number of formats equals the number of available formats)
    
    "All"
    
    softworkz (2):
      avfilter/avfilter: add avfilter_print_config_formats()
      ftools/opt_common: Print filter input/output formats in help output
    
     doc/APIchanges              |   3 ++
     fftools/opt_common.c        |  39 +++++++++-----
     libavfilter/avfilter.c      | 102 +++++++++++++++++++++++++++++++++++-
     libavfilter/avfilter.h      |  12 +++++
     libavfilter/avfiltergraph.c |  14 +++--
     libavfilter/internal.h      |   9 ++++
     libavfilter/version.h       |   4 +-
     7 files changed, 163 insertions(+), 20 deletions(-)
    
    base-commit: e10e27a2ead8848648b29a1b397cc240206e9c3d
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.43.ffstaging.FFmpeg.1665494271.ffmpegagent@gmail.com
  • pr-ffstaging-42/softworkz/submit_vaapi_overlay-v1

    Fixes and Enhancements for VAAPI Overlay
    
    This patchset resolves a number of issues in the current code:
    
     * Bogus doubles framesync initialization
     * Executing build_parameters on each input frame
     * Segfault when there's no secondary input (yet)
    
    and adds a number of enhancements to bring this on-par with the other
    overlay filters:
    
     * Enable pixel alpha blending
     * Expose framesync parameters
     * Add support for expressions in overlay parameters (x, y, w, h)
    
    softworkz (11):
      avfilter/overlay_vaapi: use FILTER_SINGLE_PIXFMT
      avfilter/overlay_vaapi: build filter params just once
      avfilter/overlay_vaapi: remove double framesync init
      avfilter/overlay_vaapi: handle secondary null input
      avfilter/overlay_vaapi: reformat options
      avfilter/overlay_vaapi: remove redundant .get_buffer assignments
      avfilter/overlay_vaapi: add framesync options
      avfilter/overlay_vaapi: precalculate blend_state, enable pixel alpha
      avfilter/overlay_vaapi: enable expressions for overlay parameters
      doc/filters.texi: remove incorrect statement
      doc/filters.texi: update overlay_vaapi documentation
    
     doc/filters.texi               |  50 +++--
     libavfilter/vf_overlay_vaapi.c | 328 ++++++++++++++++++++++-----------
     2 files changed, 257 insertions(+), 121 deletions(-)
    
    base-commit: f3b5277057ad84071721f01419fe4badeceaff08
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.42.ffstaging.FFmpeg.1665399281.ffmpegagent@gmail.com
  • pr-ffstaging-41/brycechesternewman/add_poster_time_location_mov-v2

    libavformat/mov: Add support for exporting poster time.
    
    Export the poster_time_location if available. The poster_time_location is
    calculated using the poster_time / time_scale = X seconds. The value of
    poster_time_location indicates where in the video the poster frame is.
    
    Addresses feedback from
    https://www.mail-archive.com/ffmpeg-devel@ffmpeg.org/msg138122.html.
    
    Signed-off-by: Bryce Chester Newman bryce.newman@gettyimages.com
    
    Bryce Chester Newman (2):
      libavformat/mov: Add support for exporting poster time.
      ibavformat/mov: Add support for exporting poster time.
    
     doc/demuxers.texi  |  6 ++++++
     libavformat/isom.h |  1 +
     libavformat/mov.c  | 13 +++++++++++--
     3 files changed, 18 insertions(+), 2 deletions(-)
    
    base-commit: 5f02a261a2ddca7c79198869b45d35019baac819
    
    Submitted-As: https://master.gitmailbox.com/ffmpegdev/pull.41.v2.ffstaging.FFmpeg.1664979908.ffmpegagent@gmail.com
    In-Reply-To: https://master.gitmailbox.com/ffmpegdev/pull.41.ffstaging.FFmpeg.1664813294282.ffmpegagent@gmail.com