mirror of https://github.com/mpv-player/mpv
0e72b0d5d3
libswscale tends to overwrite the area between (w,y)-(0,y+1). It tries to process multiple pixels at once, and if the memory past the last x pixel is inside a SIMD operation, but still below the image stride, it overwrites that data with black. This happens with vo_x11 and 32 bit RGBA formats. The bug is visible as black bar right of the subtitle bounding box. Fix by giving libswscale more alignment. Then the "outside" pixels are inside, and are processed normally instead of overwritten with black. NOTE: we do not increase the alignment constant, because this is a separate issue from pointer alignment. libavutil's av_malloc() wouldn't actually satisfy the increased alignment either. |
||
---|---|---|
.. | ||
ass_mp.c | ||
ass_mp.h | ||
dec_sub.c | ||
dec_sub.h | ||
draw_bmp.c | ||
draw_bmp.h | ||
find_sub.c | ||
find_subfiles.c | ||
find_subfiles.h | ||
img_convert.c | ||
img_convert.h | ||
osd_dummy.c | ||
osd_font.pfb | ||
osd_libass.c | ||
sd.h | ||
sd_ass.c | ||
sd_lavc.c | ||
spudec.c | ||
spudec.h | ||
sub.c | ||
sub.h | ||
subassconvert.c | ||
subassconvert.h | ||
subreader.c | ||
subreader.h | ||
vobsub.c | ||
vobsub.h |