mirror of https://github.com/mpv-player/mpv
Using the "expand" filter makes the image area larger by adding borders to the video frame. These borders are supposed to be always black. The filter relied on the borders in its output buffer staying black without redrawing them for each frame. However, when using direct rendering, a video filter inserted after vf_expand can draw into these borders, for example the "unsharp" and "ass" filters. These changes incorrectly stayed visible in the the following video frames. Fix this by always clearing the borders in vf_expand. In some cases, this might be more work than necessary, but vf_expand has no way of detecting whether a subsequent filter draws into the borders or not, and this avoids fragile assumptions about the existing contents of the output buffer(s). This also deals with frame size changes when config() is called again. Before this commit, remains of the old video were visible if the new video frame size was smaller than before. Since we now always clear the borders, there's no more need for the complicated code that cleared only the regions that were covered by the OSD. Delete that. |
||
---|---|---|
DOCS | ||
TOOLS | ||
debian | ||
drivers | ||
etc | ||
ffmpeg_files | ||
input | ||
libaf | ||
libao2 | ||
libmpcodecs | ||
libmpdemux | ||
libvo | ||
loader | ||
osdep | ||
rpm | ||
stream | ||
sub | ||
timeline | ||
.gitignore | ||
AUTHORS | ||
Copyright | ||
LICENSE | ||
Makefile | ||
README | ||
access_mpcontext.h | ||
asxparser.c | ||
asxparser.h | ||
av_log.c | ||
av_log.h | ||
av_opts.c | ||
av_opts.h | ||
bstr.c | ||
bstr.h | ||
cfg-mplayer.h | ||
codec-cfg.c | ||
codec-cfg.h | ||
command.c | ||
command.h | ||
configure | ||
cpudetect.c | ||
cpudetect.h | ||
cpuinfo.c | ||
defaultopts.c | ||
defaultopts.h | ||
edl.c | ||
edl.h | ||
fmt-conversion.c | ||
fmt-conversion.h | ||
m_config.c | ||
m_config.h | ||
m_option.c | ||
m_option.h | ||
m_property.c | ||
m_property.h | ||
m_struct.c | ||
m_struct.h | ||
mangle.h | ||
metadata.h | ||
mixer.c | ||
mixer.h | ||
mp_core.h | ||
mp_fifo.c | ||
mp_fifo.h | ||
mp_msg.c | ||
mp_msg.h | ||
mp_osd.h | ||
mpbswap.h | ||
mpcommon.c | ||
mpcommon.h | ||
mplayer.c | ||
mplayer.h | ||
options.h | ||
parser-cfg.c | ||
parser-cfg.h | ||
parser-mpcmd.c | ||
parser-mpcmd.h | ||
path.c | ||
path.h | ||
playtree.c | ||
playtree.h | ||
playtreeparser.c | ||
playtreeparser.h | ||
pnm_loader.c | ||
pnm_loader.h | ||
screenshot.c | ||
screenshot.h | ||
subopt-helper.c | ||
subopt-helper.h | ||
talloc.c | ||
talloc.h | ||
version.sh |
README
Compiling with full features requires development files for several external libraries. Below is a list of some important requirements. For more information see the output of './configure --help' for a list of options, or look at the list of enabled and disabled features printed after running './configure'. If you think you have support for some feature installed but configure fails to detect it, the file config.log may contain information about the reasons for the failure. Libraries specific to particular video output methods (you'll want at least one of VDPAU, GL or Xv): - libvdpau (for VDPAU output, best choice for NVIDIA cards) - libGL (OpenGL output) - libXv (XVideo output) general: - libasound (ALSA audio output) - various general X development libraries - libfreetype - libfontconfig - libass - FFmpeg libraries (libavutil libavcodec libavformat libswscale libpostproc) Most of the above libraries are available in suitable versions on normal Linux distributions. However FFmpeg is an exception (distro versions may be too old to work at all or work well). For that reason you may want to use the separately available build wrapper that first compiles FFmpeg libraries and libass, and then compiles the player statically linked against those.