mpv/filters
wm4 437a46d443 filter: reduce redundant re-iterations
When the player core requests new frames from the filter, this is called
external/recursive filtering, which acts slightly differently from when
filters request new data internally. Mainly this is so the external user
doesn't have to call mp_filter_graph_run() just to get a frame. This
causes a number of complications, and the short version is that until
now, mp_filter_graph_run() has unnecessarily returned true in the
current common case, which made the playloop run too often for no
reason.

The problem is that when a mp_pin is read externally, updating the same
mp_pin during recursive filtering flagged external_pending when the
result was written, which made mp_filter_graph_run() return true, which
made the playloop call mp_filter_graph_run() again. This is redundant
because the caller is obviously checking the new state of the mp_pin
immediately.

The only situation in which external_pending really must be set is if
_another_ pin is changed. In theory, we could also unset it if the set
of "external" pins that are not in a signaled state becomes empty, but
we don't track that in a convenient way.

This commit removes the redundant signaling, and avoids running the
playloop an additional time for each video and audio frame (as it
actually was planned from the beginning, but duh).
2020-04-10 00:52:41 +02:00
..
f_async_queue.c filter: add async queue filter 2020-02-29 21:52:00 +01:00
f_async_queue.h filter: add async queue filter 2020-02-29 21:52:00 +01:00
f_auto_filters.c f_auto_filters: always fall back to hw-download+yadif if no hw deint filter 2020-02-16 15:28:57 +01:00
f_auto_filters.h
f_autoconvert.c f_autoconvert: remove subfmt conversion BS 2020-01-17 15:19:05 +01:00
f_autoconvert.h f_autoconvert: remove subfmt conversion BS 2020-01-17 15:19:05 +01:00
f_decoder_wrapper.c f_decoder_wrapper: fix use of destroyed mutex 2020-03-18 22:31:17 +01:00
f_decoder_wrapper.h f_decoder_wrapper: replace most public fields with setters/getters 2020-02-29 01:23:20 +01:00
f_demux_in.c f_demux_in: give it a slightly better filter name 2018-02-05 02:47:14 -08:00
f_demux_in.h video: make decoder wrapper a filter 2018-01-30 03:10:27 -08:00
f_hwtransfer.c f_hwtransfer: extend vaapi whitelist with some working formats 2020-01-17 15:13:23 +01:00
f_hwtransfer.h f_hwtransfer: move format fields to private struct 2020-01-12 01:47:42 +01:00
f_lavfi.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
f_lavfi.h options: pre-check filter names when using vf/af libavfilter bridge 2019-11-25 20:29:42 +01:00
f_output_chain.c f_autoconvert: remove subfmt conversion BS 2020-01-17 15:19:05 +01:00
f_output_chain.h f_output_chain: fix typo 2018-04-15 23:11:33 +03:00
f_swresample.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
f_swresample.h swresample: limit output size of audio frames 2018-02-03 05:01:29 -08:00
f_swscale.c video: mess with the filte chain to enable zimg IMGFMT_RGB30 output 2019-11-02 17:50:32 +01:00
f_swscale.h video: mess with the filte chain to enable zimg IMGFMT_RGB30 output 2019-11-02 17:50:32 +01:00
f_utils.c filters: add another dumb helper 2019-10-02 21:09:30 +02:00
f_utils.h filters: add another dumb helper 2019-10-02 21:09:30 +02:00
filter.c filter: reduce redundant re-iterations 2020-04-10 00:52:41 +02:00
filter.h filter: minor cosmetic naming issue 2020-03-08 19:38:10 +01:00
filter_internal.h filter: minor cosmetic naming issue 2020-03-08 19:38:10 +01:00
frame.c Implement backwards playback 2019-09-19 20:37:04 +02:00
frame.h Implement backwards playback 2019-09-19 20:37:04 +02:00
user_filters.c options: split m_config.c/h 2020-03-13 16:50:27 +01:00
user_filters.h vf_gpu: add video filter using vo_gpu's renderer 2019-11-29 20:37:11 +01:00