summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-02-12 19:06:40 +0100
committerKevin Mitchell <kevmitch@gmail.com>2018-02-13 17:45:29 -0800
commit251f4e5d77af12672e058effd6e3047e9e50e8ac (patch)
tree0c0fdf3cd8a822d633e7c93bfb48e6df5fba1ee9 /video
parent0ec0c147ed32dd328489d3dc2833b13aa1fcd773 (diff)
downloadmpv-251f4e5d77af12672e058effd6e3047e9e50e8ac.tar.bz2
mpv-251f4e5d77af12672e058effd6e3047e9e50e8ac.tar.xz
filter: simplify/fix external filter graph usage
There was the following problem: if a filter graph had asynchronous filters, and the filter graph user did not call mp_filter_run() (and only accessed the mp_pins), then filtering could stall, because using mp_pin_out_request_data() only recursively invoked filtering if the data_requested flag wasn't already set. The latter can happen if a request was tried earlier but failed, and then an asynchronous filter actually produced output that would satisfy the request. Obviously, it has to invoke filtering again to get the requested frame. Fix this by organizing the code differently, and making sure to invoke mp_filter_run() on every request (if there's nothing to do, it doesn't do anything anyway). Simplify it a bit by removing things which are not needed, like connecting filter graphs with different root filters.
Diffstat (limited to 'video')
0 files changed, 0 insertions, 0 deletions