1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-18 13:14:36 +00:00
mpv/video/out
Niklas Haas 010cf183fe
vo_opengl: greatly increase smoothmotion performance
Instead of rendering and upscaling each video frame on every vsync, this
version of the algorithm only draws them once and caches the result,
so the only operation that has to run on every vsync is a cheap linear
interpolation, plus CMS/dithering.

On my machine, this is a huge speedup for 24 Hz content (on a 60 Hz
monitor), up to 120% faster. (The speedup is not quite 250% because of
the overhead that the larger FBOs and CMS provides)

In terms of the implementation, this commit basically swaps
interpolation and upscaling - upscaling is moved to inter_program, and
interpolation is moved to the final_program.

Furthermore, the main bulk of the frame rendering logic (upscaling etc.)
was moved to a separete function, which is called from
gl_video_interpolate_frame only if it's actually necessarily, and
skipped otherwise.
2015-02-24 21:52:14 +01:00
..
cocoa input: add MOUSE_ENTER keybinding. 2015-02-18 00:03:16 +01:00
wayland wayland/buffer: use buffer macros consistently 2014-09-16 15:48:07 +02:00
aspect.c vo: add some general support code for VOs that allow rotation 2014-04-21 02:57:16 +02:00
aspect.h vo: add some general support code for VOs that allow rotation 2014-04-21 02:57:16 +02:00
bitmap_packer.c
bitmap_packer.h
cocoa_common.h cocoa: move the gl function loader to gl_cocoa.c 2014-12-28 19:10:44 +01:00
cocoa_common.m cocoa: improve refresh rate fallback code 2015-02-03 22:59:54 +01:00
d3d_shader_yuv.h
d3d_shader_yuv.hlsl
dither.c malloc+memset(0) to calloc 2014-09-05 01:59:11 +02:00
dither.h
filter_kernels.c filter_kernels: rename bilinear_slow to triangle 2015-02-24 03:13:37 +01:00
filter_kernels.h filter_kernels: improve a comment 2015-01-22 20:08:47 +01:00
gl_cocoa.c cocoa: fix fallback for OpenGL 2.1 hardware [2] 2015-01-24 16:54:24 +01:00
gl_common.c vo_opengl: minor robustness improvement in function loader 2015-02-20 18:53:35 +01:00
gl_common.h vo_opengl: remove some unused functions 2015-01-28 19:40:52 +01:00
gl_header_fixes.h cocoa: remove support for systems without gl3.h header 2015-01-22 08:27:03 +01:00
gl_hwdec_vaglx.c vo_opengl: let hwdec driver report the exact image format 2015-01-29 19:53:49 +01:00
gl_hwdec_vda.c command: add property returning detected hwdec API 2015-02-02 22:43:13 +01:00
gl_hwdec_vdpau.c vo_opengl: let hwdec driver report the exact image format 2015-01-29 19:53:49 +01:00
gl_hwdec.c video: have a generic context struct for hwdec backends 2015-01-22 15:32:23 +01:00
gl_hwdec.h vo_opengl: let hwdec driver report the exact image format 2015-01-29 19:53:49 +01:00
gl_lcms.c vo_opengl: minor changes to ICC update code 2015-01-26 02:11:14 +01:00
gl_lcms.h vo_opengl: gl_lcms: implement change detection for memory profiles 2015-01-08 01:03:09 +01:00
gl_osd.c vo_opengl: use triangle strip for video 2015-01-30 15:57:40 +01:00
gl_osd.h vo_opengl: move remaining OSD rendering parts to gl_osd.c 2015-01-29 18:29:28 +01:00
gl_utils.c vo_opengl: fix a cast 2015-01-29 21:13:06 +01:00
gl_utils.h vo_opengl: split out a helper for drawing primitives 2015-01-29 17:19:01 +01:00
gl_video_shaders.glsl vo_opengl: greatly increase smoothmotion performance 2015-02-24 21:52:14 +01:00
gl_video.c vo_opengl: greatly increase smoothmotion performance 2015-02-24 21:52:14 +01:00
gl_video.h vo_opengl: add support for linear scaling without CMS 2015-02-06 03:37:21 +01:00
gl_w32.c vo_opengl: remove remnants of dropped stereo buffer support 2015-01-24 23:29:54 +01:00
gl_wayland.c vo_opengl: remove pointless glFinish calls 2014-12-19 23:50:12 +01:00
gl_x11.c vo_opengl: remove remnants of dropped stereo buffer support 2015-01-24 23:29:54 +01:00
gl_x11egl.c x11egl: minor cleanup 2015-02-20 19:54:33 +01:00
vo_caca.c video: remove vfcap.h 2015-01-21 22:08:24 +01:00
vo_direct3d.c vo: simplify VOs by adding generic screenshot support 2015-01-24 23:16:27 +01:00
vo_image.c video: remove vfcap.h 2015-01-21 22:08:24 +01:00
vo_lavc.c video: remove vfcap.h 2015-01-21 22:08:24 +01:00
vo_null.c video: remove vfcap.h 2015-01-21 22:08:24 +01:00
vo_opengl_cb.c command: add property returning detected hwdec API 2015-02-02 22:43:13 +01:00
vo_opengl.c vo_opengl: redraw when pausing while showing an interpolated frame 2015-02-04 23:37:38 +01:00
vo_sdl.c vo: simplify VOs by adding generic screenshot support 2015-01-24 23:16:27 +01:00
vo_vaapi.c vo: simplify VOs by adding generic screenshot support 2015-01-24 23:16:27 +01:00
vo_vdpau.c vo_vdpau: minor simplification 2015-02-07 21:14:12 +01:00
vo_wayland.c vo: simplify VOs by adding generic screenshot support 2015-01-24 23:16:27 +01:00
vo_x11.c vo: simplify VOs by adding generic screenshot support 2015-01-24 23:16:27 +01:00
vo_xv.c vo: simplify VOs by adding generic screenshot support 2015-01-24 23:16:27 +01:00
vo.c vo_opengl: fix smoothmotion coefficient calculation 2015-02-13 20:39:53 +01:00
vo.h vo_opengl: fix smoothmotion coefficient calculation 2015-02-13 20:39:53 +01:00
w32_common.c input: add MOUSE_ENTER keybinding. 2015-02-18 00:03:16 +01:00
w32_common.h win32: create OpenGL context on the GUI thread 2014-08-05 20:02:23 +02:00
wayland_common.c input: add MOUSE_ENTER keybinding. 2015-02-18 00:03:16 +01:00
wayland_common.h wayland_common: fix changing videos when fullscreen 2014-09-10 19:21:52 +02:00
win_state.c player: add --autofit-smaller option 2015-01-16 22:30:41 +01:00
win_state.h video/out: separate out code to compute window size 2014-05-06 20:22:32 +02:00
x11_common.c input: add MOUSE_ENTER keybinding. 2015-02-18 00:03:16 +01:00
x11_common.h vo_opengl, x11: implement icc-profile-auto 2015-01-26 02:18:47 +01:00
x11_icon.bin