From 3df44a54416161a44ae620e4466bd823f5e97718 Mon Sep 17 00:00:00 2001 From: Oleg Oshmyan Date: Fri, 16 Oct 2020 18:59:12 +0300 Subject: process_karaoke_effects: fill from right to left if rotated This matches VSFilter. --- libass/ass_parse.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libass') diff --git a/libass/ass_parse.c b/libass/ass_parse.c index a19037b..ef4b0e0 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -1013,6 +1013,16 @@ void process_karaoke_effects(ASS_Renderer *render_priv) int x_start = d6_to_int(start->pos.x); int x_end = d6_to_int(end[-1].pos.x + end[-1].advance.x); double dt = (double) (tm_current - tm_start) / (tm_end - tm_start); + double frz = fmod(start->frz, 360); + if (frz > 90 && frz < 270) { + // Fill from right to left + dt = 1 - dt; + for (GlyphInfo *info = start; info < end; info++) { + uint32_t tmp = info->c[0]; + info->c[0] = info->c[1]; + info->c[1] = tmp; + } + } x = x_start + (x_end - x_start) * dt; } -- cgit v1.2.3