summaryrefslogtreecommitdiffstats
path: root/DOCS/man/vo.rst
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-11-09 20:49:30 +0100
committerwm4 <wm4@nowhere>2015-11-09 20:51:57 +0100
commit3dc0f2ecf033718a3a5d4b7acc41d144839fb7dc (patch)
treeb15f1ef53801fbcdb6819cd460f7217bf84127d1 /DOCS/man/vo.rst
parenteeb5f987585b47b2d5828cac0f2d90e0c503ce4c (diff)
downloadmpv-3dc0f2ecf033718a3a5d4b7acc41d144839fb7dc.tar.bz2
mpv-3dc0f2ecf033718a3a5d4b7acc41d144839fb7dc.tar.xz
vo_opengl_cb: make operation more similar to normal VOs
vo_opengl_cb is a special case, because we somehow have to render video asynchronously, all while "trusting" the API user to do it correctly. This didn't quite work, and a while ago a compromise using a timeout to prevent theoretically possible deadlocks was added. Make it even more synchronous. Basically, go all the way, and synchronize rendering between VO and user renderer thread to the full extent possible. This means the silly frame queue is dropped, and we event attempt to synchronize the GL SwapBuffer call (via mpv_opengl_cb_report_flip()). The changes introduced with commit dc33eb56 are effectively dropped. I don't even remember if they mattered. In the future, we might make all VOs fetch asynchronously from a frame queue, which would mostly remove the differences between vo_opengl and vo_opengl_cb, but this will take a while (if it will even be done).
Diffstat (limited to 'DOCS/man/vo.rst')
-rw-r--r--DOCS/man/vo.rst21
1 files changed, 0 insertions, 21 deletions
diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst
index 6d90046ea2..f59b9cbea7 100644
--- a/DOCS/man/vo.rst
+++ b/DOCS/man/vo.rst
@@ -1089,27 +1089,6 @@ Available video output drivers are:
``opengl-cb``
For use with libmpv direct OpenGL embedding; useless in any other contexts.
(See ``<mpv/opengl_cb.h>``.)
- Usually, ``opengl-cb`` renders frames asynchronously by client and this
- can cause some frame drops. In order to provide a way to handle this
- situation, ``opengl-cb`` has its own frame queue and calls update callback
- more frequently if the queue is not empty regardless of existence of new frame.
- Once the queue is filled, ``opengl-cb`` drops frames automatically.
-
- With default options, ``opengl-cb`` renders only the latest frame and drops
- all frames handed over while waiting render function after update callback.
-
- ``frame-queue-size=<1..100>``
- The maximum count of frames which the frame queue can hold (default: 1)
-
- ``frame-drop-mode=<pop|clear|block>``
- Select the behavior when the frame queue is full.
-
- pop
- Drop the oldest frame in the frame queue.
- clear
- Drop all frames in the frame queue.
- block
- Wait for a short time, behave like ``clear`` on timeout. (default)
This also supports many of the suboptions the ``opengl`` VO has. Run
``mpv --vo=opengl-cb:help`` for a list.