mpv/sub
llyyr 580f36e436 sd_ass: fix converted subtitles having too-wide borders
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.
2023-07-16 21:02:54 +03:00
..
ass_mp.c
ass_mp.h
dec_sub.c sub: rewrite auto-forced-only support 2023-06-25 11:01:58 +02:00
dec_sub.h sub: rewrite auto-forced-only support 2023-06-25 11:01:58 +02:00
draw_bmp.c draw_bmp: ensure last slice is less than total width (again) 2023-07-12 19:19:54 +00:00
draw_bmp.h
filter_jsre.c
filter_regex.c
filter_sdh.c
img_convert.c
img_convert.h
lavc_conv.c
osd.c mp_image: abort on av_buffer_ref() failure 2023-06-28 20:56:23 -07:00
osd.h
osd_font.otf
osd_libass.c
osd_state.h
sd.h sub: rewrite auto-forced-only support 2023-06-25 11:01:58 +02:00
sd_ass.c sd_ass: fix converted subtitles having too-wide borders 2023-07-16 21:02:54 +03:00
sd_lavc.c sub: rewrite auto-forced-only support 2023-06-25 11:01:58 +02:00