On 3/13/2024 8:41 PM, Michael Niedermayer wrote:
On Wed, Mar 13, 2024 at 01:24:25PM +0100, Niklas Haas wrote:
From: Niklas Haas <g...@haasn.dev>

This filter's existing design has a number of issues:

- There is no guarantee whatsoever about the order in which frames are
   pushed onto the main and ref link, due to this being entirely
   dependent on the order in which downstream filters decide to request
   frames from their various inputs. As such, there is absolutely no
   synchronization for ref streams with dynamically changing resolutions
   (see e.g. fate/h264/reinit-*).

- For some (likely historical) reason, this filter outputs its ref
   stream as a second ref output, which is in principle completely
   unnecessary (complex filter graph users can just duplicate the input
   pin), but in practice only required to allow this filter to
   "eventually" see changes to the ref stream (see first point). In
   particular, this means that if the user uses the "wrong" pin, this
   filter may break completely.

- The default filter activation function is fundamentally incapable of
   handling filters with multiple inputs cleanly, because doing so
   requires both knowledge of how these inputs should be internally
   ordered, but also how to handle EOF conditions on either input (or
   downstream). Both of these are best left to the filter specific
   options. (See #10795 for the consequences of using the default
   activate with multiple inputs).

Switching this filter to framesync fixes all three points:

- ff_framesync_activate() correctly handles multiple inputs and EOF
   conditions (and is configurable with the framesync-specific options)
- framesync only supports a single output, so we can (indeed must) drop
   the redundant ref output stream

Update documentation, changelog and tests to correspond to the new usage
pattern.

Fixes: https://trac.ffmpeg.org/ticket/10795
---
  Changelog                                |   2 +
  doc/filters.texi                         |  10 +-
  libavfilter/vf_scale.c                   | 130 ++++++++++++-----------
  tests/filtergraphs/scale2ref_keep_aspect |   3 +-
  4 files changed, 76 insertions(+), 69 deletions(-)

this causes
./ffplay --help
to segfault

Unrelated to this crash, but why does that command line output every single option from every single filter? It's several thousand printed lines. Shouldn't that be the output of --longhelp or similar, and leave --help to print some basic non filter specific options?
_______________________________________________
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