mirror of
https://github.com/mpv-player/mpv
synced 2025-02-19 14:26:57 +00:00
It's not easy to tell whether the OSD/subs are empty, or if something is drawn. In general you have to use osd_draw() with a custom callback. If nothing is visible, the callback is never invoked. (The actual reason why this is so "hard" is the implementation of osd_libass.c, which doesn't allow separating rendering and drawing of OSD elements, because all OSD elements share the same ASS_Renderer.) To simplify avoiding copies, make osd_draw_on_image() instead of the caller use mp_image_make_writeable(). Introduce osd_draw_on_image_p(), which works like osd_draw_on_image(), but gets the new image allocation from an image pool. This is supposed to be an optimization, because it reduces the frequency of large allocations/deallocations for image data. The result of this is that the frequency of copies needed in conjunction with vf_sub, screenshots, and vo_lavc (encoding) should be reduced. vf_sub now always does true pass-through if no subs are shown. Drop the pts check from vf_sub. This didn't make much sense. |
||
---|---|---|
.. | ||
aspect.c | ||
aspect.h | ||
bitmap_packer.c | ||
bitmap_packer.h | ||
cocoa_common.h | ||
cocoa_common.m | ||
d3d_shader_yuv_2ch.h | ||
d3d_shader_yuv.h | ||
d3d_shader_yuv.hlsl | ||
filter_kernels.c | ||
filter_kernels.h | ||
geometry.c | ||
geometry.h | ||
gl_common.c | ||
gl_common.h | ||
gl_header_fixes.h | ||
gl_osd.c | ||
gl_osd.h | ||
osx_common.h | ||
osx_common.m | ||
pnm_loader.c | ||
pnm_loader.h | ||
vo_caca.c | ||
vo_corevideo.h | ||
vo_corevideo.m | ||
vo_direct3d.c | ||
vo_image.c | ||
vo_lavc.c | ||
vo_null.c | ||
vo_opengl_old.c | ||
vo_opengl_shaders.glsl | ||
vo_opengl.c | ||
vo_sdl.c | ||
vo_vdpau.c | ||
vo_x11.c | ||
vo_xv.c | ||
vo.c | ||
vo.h | ||
w32_common.c | ||
w32_common.h | ||
x11_common.c | ||
x11_common.h |