[FFmpeg-devel] [PATCH 2/2] avfilter/vf_scale2ref: switch to FFFrameSync

James Almer jamrial at gmail.com
Thu Mar 14 01:43:58 EET 2024


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 <git at 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?


More information about the ffmpeg-devel mailing list