mirror of https://github.com/mpv-player/mpv
580f36e436
Libass commit f08f8ea5 (between 0.16 and 0.17) changed how PlayResX affects some aspects of rendering. The libass change fixes a VSFilter compatibility issue which existed for about two decades, and there are no libass plans to support the previous behavior, so ultimately we have to adjust the mpv code, and we can't guarantee to restore the old behavior in all cases. Starting at this commit, vector drawing coords, font spacing, border and shadow widths are all affected by PlayResX (specifically, by the aspect), while previously they were unaffected by PlayResX. This changed converted sub border and shadow widths in mpv, because ffmpeg generates the ass with fixed PlayResX of 384 (aspect of 4:3), and with libass 0.17, if this doesn't match the display aspect, then borders and shadow were too wide - because most clips aspect is more than 4:3. The fact that ffmpeg uses fixed PlayResX of 384 could be considered an issue, but for now we have no control over it, and ffmpeg doesn't have the video resolution when it converts an srt source to ass. So here we adjust PlayResX accordingly so that border/shadows are now rendered with correct width. However, regardless of that commit, changing PlayResX also affects the margin value, so to compensate, we adjust sub-margins-x too. According to libass devs, this should cover basic srt-to-ass conversion by ffmpeg to work correctly with libass 0.17. However, there could be srt extensions which use more complex ass, and/or ffmpeg conversion of other sub formats (such as aribb24, aribcaption and movtext), where more things need adjustments. As of now we don't know what these are, and so we don't really know what else might remain broken or get broken. |
||
---|---|---|
.. | ||
ass_mp.c | ||
ass_mp.h | ||
dec_sub.c | ||
dec_sub.h | ||
draw_bmp.c | ||
draw_bmp.h | ||
filter_jsre.c | ||
filter_regex.c | ||
filter_sdh.c | ||
img_convert.c | ||
img_convert.h | ||
lavc_conv.c | ||
osd.c | ||
osd.h | ||
osd_font.otf | ||
osd_libass.c | ||
osd_state.h | ||
sd.h | ||
sd_ass.c | ||
sd_lavc.c |