mirror of https://github.com/mpv-player/mpv
f_lavfi: don't reject dynamic lavfi ins/outs
Ideally, users should be using lavfi-complex instead of lavfi-bridge for such a use case, however currently lavfi-complex doesn't support hwdec. So we can allow filters with dynamic inputs to work with lavfi-bridge, at the cost of them only being able to take in only one input. This should probably be reverted when/if lavfi-complex has hwdec, but for now this allows us to use libplacebo as a video filter with hwdec in mpv again.
This commit is contained in:
parent
a19aefac37
commit
8bf3fe7e2a
|
@ -44,6 +44,12 @@ The exact syntax is:
|
||||||
the ``lavfi`` filter, which uses a very similar syntax as mpv (MPlayer
|
the ``lavfi`` filter, which uses a very similar syntax as mpv (MPlayer
|
||||||
historically) to specify filters and their parameters.
|
historically) to specify filters and their parameters.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
``--vf`` can only take a single track as input, even if the filter supports
|
||||||
|
dynamic input. Filters that require multiple inputs can't be used.
|
||||||
|
Use ``--lavfi-complex`` for such a use case. This also applies for ``--af``.
|
||||||
|
|
||||||
Filters can be manipulated at run time. You can use ``@`` labels as described
|
Filters can be manipulated at run time. You can use ``@`` labels as described
|
||||||
above in combination with the ``vf`` command (see `COMMAND INTERFACE`_) to get
|
above in combination with the ``vf`` command (see `COMMAND INTERFACE`_) to get
|
||||||
more control over this. Initially disabled filters with ``!`` are useful for
|
more control over this. Initially disabled filters with ``!`` are useful for
|
||||||
|
|
|
@ -981,9 +981,13 @@ static bool is_usable(const AVFilter *filter, int media_type)
|
||||||
int nb_inputs = avfilter_pad_count(filter->inputs),
|
int nb_inputs = avfilter_pad_count(filter->inputs),
|
||||||
nb_outputs = avfilter_pad_count(filter->outputs);
|
nb_outputs = avfilter_pad_count(filter->outputs);
|
||||||
#endif
|
#endif
|
||||||
return nb_inputs == 1 && nb_outputs == 1 &&
|
bool input_ok = filter->flags & AVFILTER_FLAG_DYNAMIC_INPUTS;
|
||||||
avfilter_pad_get_type(filter->inputs, 0) == media_type &&
|
bool output_ok = filter->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS;
|
||||||
avfilter_pad_get_type(filter->outputs, 0) == media_type;
|
if (nb_inputs == 1)
|
||||||
|
input_ok = avfilter_pad_get_type(filter->inputs, 0) == media_type;
|
||||||
|
if (nb_outputs == 1)
|
||||||
|
output_ok = avfilter_pad_get_type(filter->outputs, 0) == media_type;
|
||||||
|
return input_ok && output_ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mp_lavfi_is_usable(const char *name, int media_type)
|
bool mp_lavfi_is_usable(const char *name, int media_type)
|
||||||
|
|
Loading…
Reference in New Issue