mpv/video
wm4 67689ff6b4 client API: preparations for allowing render API to use DR etc.
DR (letting the decoder allocate texture memory) requires running the
allocation on the render thread. This is rather hard with the render
API, because the user controls this thread and when it's entered. It was
not possible until now.

This commit adds a bunch of infrastructure to make this possible. We add
a new optional mode (MPV_RENDER_PARAM_ADVANCED_CONTROL) which basically
lets the user's render thread and libmpv agree how this should be done.

Misuse would lead to deadlocks. To make this less likely, strictly
document thread safety/locking issues. In particular, document which
libmpv functions can be called without issues. (The rest has to be
assumed unsafe.)

The worst issue is destruction of the render context while video is
still active. To avoid certain unintended recursive locks (i.e.
deadlocks, unless we'd make the locks recursive), make the update
callback lock separate. Make "killing" the video chain asynchronous, so
we can do extra work while video is being destroyed.

Because losing wakeups is a big deal, setting the update callback now
triggers a wakeup. (It would have been better if the wakeup callback
were a parameter to mpv_render_context_create(), but too late.)

This commit does not add DR yet; the following commit does this.
2018-04-29 02:21:32 +03:00
..
decode vd_lavc: slightly better logging about why hwdec is not used 2018-03-08 17:12:32 -08:00
filter video: pass through container fps to filters 2018-04-19 23:22:48 +02:00
out client API: preparations for allowing render API to use DR etc. 2018-04-29 02:21:32 +03:00
csputils.c csputils: Add support for Display P3 primaries 2017-12-14 23:31:09 +02:00
csputils.h csputils: Add support for Display P3 primaries 2017-12-14 23:31:09 +02:00
d3d.c video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
d3d.h video: move d3d.c out of decode sub directory 2017-12-01 17:58:56 +01:00
fmt-conversion.c vo_gpu: make screenshots use the GL renderer 2018-02-11 17:45:51 -08:00
fmt-conversion.h video/fmt-conversion, img_format: change license to LGPL 2017-06-18 15:15:07 +02:00
hwdec.c video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
hwdec.h video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
image_loader.c x11: load icon differently 2017-07-01 15:56:12 +02:00
image_loader.h x11: load icon differently 2017-07-01 15:56:12 +02:00
image_writer.c vo_gpu: make screenshots use the GL renderer 2018-02-11 17:45:51 -08:00
image_writer.h vo_gpu: make screenshots use the GL renderer 2018-02-11 17:45:51 -08:00
img_format.c video: remove libavutil PSEUDOPAL stuff 2018-04-03 20:08:15 +03:00
img_format.h img_format.h: cosmetics: fix whitespace 2018-03-15 23:13:53 -07:00
mp_image.c mp_image: fixup a simple 10L in ref_buffer 2018-04-21 01:38:21 +03:00
mp_image.h video: pass through container fps to filters 2018-04-19 23:22:48 +02:00
mp_image_pool.c mp_image_pool: add helper functions for FFmpeg hw frames pools 2018-01-18 00:59:07 -08:00
mp_image_pool.h mp_image_pool: add helper functions for FFmpeg hw frames pools 2018-01-18 00:59:07 -08:00
sws_utils.c sws_utils: don't force callers to provide option struct 2018-01-18 00:59:07 -08:00
sws_utils.h sws_utils: don't force callers to provide option struct 2018-01-18 00:59:07 -08:00
vaapi.c vaapi: add option to select a non-default device path 2018-03-30 14:16:07 -07:00
vaapi.h video: refactor hw device creation for hwdec copy modes 2017-12-01 08:05:16 +01:00
vdpau.c hwdec: remove unused fields 2017-12-21 19:31:36 +01:00
vdpau.h vd_lavc, vdpau, vaapi: restore emulated API avoidance 2017-12-02 04:53:51 +01:00
vdpau_functions.inc
vdpau_mixer.c video: redo video equalizer option handling 2017-08-22 17:01:35 +02:00
vdpau_mixer.h video: redo video equalizer option handling 2017-08-22 17:01:35 +02:00