diff options
author | wm4 <wm4@nowhere> | 2017-07-23 09:41:51 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2017-07-24 04:32:55 +0200 |
commit | 64d56114ed9258efe2e864315d7130bb58a03d52 (patch) | |
tree | f4300ffb5c3d912f958b93acba86b0ed438ddcf7 /video/out/opengl/video.h | |
parent | 9e7665b21b530cbbfeb187521dc9db78c2ca60db (diff) | |
download | mpv-64d56114ed9258efe2e864315d7130bb58a03d52.tar.bz2 mpv-64d56114ed9258efe2e864315d7130bb58a03d52.tar.xz |
vo_opengl: add direct rendering support
Can be enabled via --vd-lavc-dr=yes. See manpage additions for what it
does.
This reminds of the MPlayer -dr flag, but the implementation is
completely different. It's the same basic concept: letting the decoder
render into a GPU buffer to avoid a copy. Unlike MPlayer, this doesn't
try to go through filters (libavfilter doesn't support this anyway).
Unless a filter can work in-place, DR will be silently disabled. MPlayer
had very complex semantics about buffer types and management (which
apparently nobody ever understood) and weird restrictions that mostly
limited it to mpeg2 style codecs. The mpv code does not do any of this,
and just lets the decoder allocate an arbitrary number of untyped
images. (No MPlayer code was used.)
Parts of the code based on work by atomnuker (starting point for the
generic code) and haasn (some GL definitions, some basic PBO code, and
correct fencing).
Diffstat (limited to 'video/out/opengl/video.h')
-rw-r--r-- | video/out/opengl/video.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/video/out/opengl/video.h b/video/out/opengl/video.h index 09083da41b..f3608626e4 100644 --- a/video/out/opengl/video.h +++ b/video/out/opengl/video.h @@ -182,4 +182,7 @@ void gl_video_set_hwdec(struct gl_video *p, struct gl_hwdec *hwdec); struct vo; void gl_video_configure_queue(struct gl_video *p, struct vo *vo); +void *gl_video_dr_alloc_buffer(struct gl_video *p, size_t size); +void gl_video_dr_free_buffer(struct gl_video *p, void *ptr); + #endif |